Am Blnk Ltur 19 Summr 2015 CSE 332: Dt Astrtons CSE 332 Grps 1: Wt s Grp? DFS n BFS Dt Astrtons LnkLsts r to Trs s Trs r to... 1 A Grp s Tny... 2 Wr W v Bn Essntl ADTs: Lsts, Stks, Quus, Prorty Quus, Hps, Vnll Trs, BSTs, Bln Trs, B-Trs, Hs Tls Importnt Alortms: Trvrsls, Sortn, ulhp, Prx Sum, Dv n Conqur Alortms Conurrny: Prlllsm, Synronzton So, wt s nxt? V = {}, E = V = {,}, E = {{,}} Grps n Grp Alortms A nrly unvrsl t strutur tt wll n t wy you tnk out t worl. (Srously.) Grps r mor ommon tn ll t otr t struturs omn (ts s n prt tru, us ty r nrlzton o most o t otr t struturs). W ll t rls vrts n t lns s. Dnton (Grp) A Grp s pr, G = (V,E), wr: V s st o vrts, n E s st o s (prs o vrts).
A Grp s Tny... 2 Grps r n ADT? 3 V = {}, E = V = {,}, E = {{,}} V = {,, }, E = {{, },{,}} V = {,,, }, E = {{x,y} x,y V x y} W n tnk o rps s n ADT wt oprtons lk x.snor(y), ut t s not lr wt soul nlu: x.rlfrom(y)? x.sortstptto(y)? x.ntrlty()?... W ll t rls vrts n t lns s. Dnton (Grp) A Grp s pr, G = (V,E), wr: V s st o vrts, n E s st o s (prs o vrts). W wll ppro rps rntly: Grps r n strt onpt tt w n pply n rnt wys to t prolm t n. A rp prolm s on tt w n mtmtlly mol s rp... Molln Prolms wt Grps 4 Consr t ollown qustons: How n I llot rstrs to vrls n prorm? Wy Grps? Fnn Importnt Popl 5 I ts rp s sol ntwork, wo s most mportnt? Wo s t most nlun? How populr m I? Wt s t mnmum mount o wr I v to us to onnt ll ts oms? Just ow os Gool work? Cn I utomtlly t t wors o sntn wt tr prt o sp? How o I mk look-ups n tss quk t Fook s sl?
Wy Grps? 6 Wt s t pst/sortst/t. lt rom loton A to B? Wy Grps? How o wors ssot wt otr? How sy r wors to onus? How smlr r spllns? ttp://lltnsrp.om/pul/ms/wornt-synonyms/oo-vl- rp- pt.pn ttp://lltnsrp.om/pul/ms/rln-ool-rt.pn Wy Grps? 8 Wr soul w trt nr n prtulr ptnt s oy? ttps://om.om/2013/03/26/ow-rsrrs-r- tn- lun-nr-usn- prnk/ 7 Wy Grps? 9 How r m I rom my rns? Wy os my sol ntwork look lustr? Wy r ll my rns mor populr tn I m? ttp://lltnsrp.om/pul/ms/ook/ook-rn-rp.pn
Wy Grps? 10 Wy Grps? Wt n w n out rom poltl lo t? Wo lstns to wom? Wt t Ron Wllms v on t popl roun m? ttp://lltnsrp.om/pul/ms/poltl-los-2004/lt-rt.pn Wy Grps? ttp://lltnsrp.om/pul/ms/m/ron-wllms-rp.pn 12 Wt ppns wn vtrn trs lv sool ntworks? 11 Molln Prolms wt Grps To mol prolm wt rp, you n to mk two os 1 Wt r t vrts? 2 Wt r t s? Mps T Intrnt Sol Ntworks A Runnn Prorm A Css Gm Tlpon Lns CSE Courss ttp://www.mntlmunton.om/2013/05/usn-sol- ntwork-nlyss-to- n.tml Wt ts n mn, lt s tlk out mor rul ntons. 13
Molln Prolms wt Grps 13 To mol prolm wt rp, you n to mk two os 1 Wt r t vrts? 2 Wt r t s? Mps Vrts: rons; Es: s nxt to T Intrnt Sol Ntworks A Runnn Prorm A Css Gm Tlpon Lns CSE Courss Wt ts n mn, lt s tlk out mor rul ntons. Molln Prolms wt Grps 13 To mol prolm wt rp, you n to mk two os 1 Wt r t vrts? 2 Wt r t s? Mps Vrts: rons; Es: s nxt to T Intrnt Vrts: wsts; Es: s lnk to Sol Ntworks A Runnn Prorm A Css Gm Tlpon Lns CSE Courss Wt ts n mn, lt s tlk out mor rul ntons. Molln Prolms wt Grps 13 To mol prolm wt rp, you n to mk two os 1 Wt r t vrts? 2 Wt r t s? Mps Vrts: rons; Es: s nxt to T Intrnt Vrts: wsts; Es: s lnk to Sol Ntworks Vrts: popl; Es: s rns wt A Runnn Prorm A Css Gm Tlpon Lns CSE Courss Wt ts n mn, lt s tlk out mor rul ntons. Molln Prolms wt Grps 13 To mol prolm wt rp, you n to mk two os 1 Wt r t vrts? 2 Wt r t s? Mps Vrts: rons; Es: s nxt to T Intrnt Vrts: wsts; Es: s lnk to Sol Ntworks Vrts: popl; Es: s rns wt A Runnn Prorm Vrts: mtos; Es: lls A Css Gm Tlpon Lns CSE Courss Wt ts n mn, lt s tlk out mor rul ntons.
Molln Prolms wt Grps 13 To mol prolm wt rp, you n to mk two os 1 Wt r t vrts? 2 Wt r t s? Mps Vrts: rons; Es: s nxt to T Intrnt Vrts: wsts; Es: s lnk to Sol Ntworks Vrts: popl; Es: s rns wt A Runnn Prorm Vrts: mtos; Es: lls A Css Gm Vrts: ors; Es: n mov to Tlpon Lns CSE Courss Wt ts n mn, lt s tlk out mor rul ntons. Molln Prolms wt Grps 13 To mol prolm wt rp, you n to mk two os 1 Wt r t vrts? 2 Wt r t s? Mps Vrts: rons; Es: s nxt to T Intrnt Vrts: wsts; Es: s lnk to Sol Ntworks Vrts: popl; Es: s rns wt A Runnn Prorm Vrts: mtos; Es: lls A Css Gm Vrts: ors; Es: n mov to Tlpon Lns Vrts: ouss; Es: tlpon ln twn CSE Courss Wt ts n mn, lt s tlk out mor rul ntons. Molln Prolms wt Grps 13 To mol prolm wt rp, you n to mk two os 1 Wt r t vrts? 2 Wt r t s? Mps Vrts: rons; Es: s nxt to T Intrnt Vrts: wsts; Es: s lnk to Sol Ntworks Vrts: popl; Es: s rns wt A Runnn Prorm Vrts: mtos; Es: lls A Css Gm Vrts: ors; Es: n mov to Tlpon Lns Vrts: ouss; Es: tlpon ln twn CSE Courss Vrts: ourss; Es: s pr-rqust o Wt ts n mn, lt s tlk out mor rul ntons. Mor Importnt Grps 14 Empty Grp Som Qustons How mny s n rp wt V = n v? Complt Grp (K n ) I w v E = n, wt s t smllst numr o vrts w n v? T lrst? Smllst: Lrst:
Mor Importnt Grps 14 Mor Importnt Grps 14 Empty Grp Complt Grp (K n ) Empty Grp Complt Grp (K n ) Som Qustons How mny s n rp wt V = n v? E = ( n 2 ) = n(n 1) 2 I w v E = n, wt s t smllst numr o vrts w n v? T lrst? Smllst: Lrst: Som Qustons How mny s n rp wt V = n v? E = ( n 2 ) = n(n 1) 2 I w v E = n, wt s t smllst numr o vrts w n v? T lrst? Smllst: v(v 1) = n v 2 v = v O( n) 2 Lrst: Mor Importnt Grps 14 Empty Grp Som Qustons How mny s n rp wt V = n v? E = ( n 2 ) = n(n 1) 2 Complt Grp (K n ) I w v E = n, wt s t smllst numr o vrts w n v? T lrst? Smllst: v(v 1) = n v 2 v = v O( n) 2 Lrst: Tr s no lrst! Wlks n Pts 15 Dnton (Wlk) A wlk n rp G = (V,E) s lst o vrts: v 0,v 1,...,v n su tt {v,v +1 } E. Intutvly, pt rom u to v s ontnuous ln rwn wtout pkn up your pnl. Dnton (Pt) A pt n rp G = (V,E) s wlk wt no rpt vrts. 2 T lu s r pt 1 3 4 6 5 7 T r s r wlk ut not pt 8
Wlks n Cyls 16 Dnton (Wlk) A wlk n rp G = (V,E) s lst o vrts: v 0,v 1,...,v n su tt {v,v +1 } E. Intutvly, pt rom u to v s ontnuous ln rwn wtout pkn up your pnl. Dnton (Cyl) A yl n rp G = (V,E) s wlk (v 0,v 1,...,v n ) wt no rpt vrts xpt v 0 = v n. Mkn A Connton! 17 Dnton (Connt Grp) W sy rp s onnt or vry pr o vrts, u,v V, tr s pt rom u to v. Intutvly, w pk up t rp n sk t roun, nytn sn t stll n t r, tn t rp sn t onnt. 1 5 1 5 2 4 6 8 2 4 6 8 3 Connt! Not Connt! 7 T lu s r yl 3 7 T r s r not yl Trs: Just A Kn o Grp! 18 Dnton (Tr) A tr s onnt, yl rp. A Worklst 19 A vry ommon typ o lortm on rps s worklst lortm. Frst, w n nw (non-stnr) ADT: WorkLst ADT (v) Nots t worklst tt t must nl v nxt() swork() Rturns t nxt vrtx to work on Rturns tru tr s ny work lt n ls otrws Importntly, w o not r ow t worklst mns t work. (Oky, w o, ut not wn omn up wt t lortm.) Worklst lortms wll lwys look lk t ollown: Dnton (Root Tr) A root tr s tr wt on spl no ll out s t root. It n qully usul to work wt trs s t s to work wt root trs; w r ntly mor mlr wt root trs so r... 1 worklst = /* ntl work to worklst */ 2 wl (worklst.swork()) { 3 v = worklst.nxt(); 4 owork(v); 5 }
Srn Grp 20 W s rp s onnt wn tr s pt twn vry pr o vrts. Wt w on t know rp s onnt? Rltly, w mt sk t quston: Is vrtx w rl (os tr xst pt) rom vrtx v? Srn Grp 20 W s rp s onnt wn tr s pt twn vry pr o vrts. Wt w on t know rp s onnt? Rltly, w mt sk t quston: Is vrtx w rl (os tr xst pt) rom vrtx v? W oul us ts lortm to n pt, o somtn wt vry no, sr or prtulr no, t. W oul us ts lortm to n pt, o somtn wt vry no, sr or prtulr no, t. Unsurprsnly, ts s worklst lortm: Unsurprsnly, ts s worklst lortm: 1 sr(v) { 2 worklst = [v]; 3 wl (worklst.swork()) { 4 v = worklst.nxt(); 5 osomtn(v); 6 or (w : v.nors()) { 7 worklst.(w); 8 } 9 } 10 } 1 sr(v) { 2 worklst = [v]; 3 wl (worklst.swork()) { 4 v = worklst.nxt(); 5 osomtn(v); 6 or (w : v.nors()) { 7 worklst.(w); 8 } 9 } 10 } Srn Grp 20 W s rp s onnt wn tr s pt twn vry pr o vrts. Wt w on t know rp s onnt? Rltly, w mt sk t quston: Is vrtx w rl (os tr xst pt) rom vrtx v? Srn Grp 20 W s rp s onnt wn tr s pt twn vry pr o vrts. Wt w on t know rp s onnt? Rltly, w mt sk t quston: Is vrtx w rl (os tr xst pt) rom vrtx v? W oul us ts lortm to n pt, o somtn wt vry no, sr or prtulr no, t. W oul us ts lortm to n pt, o somtn wt vry no, sr or prtulr no, t. Unsurprsnly, ts s worklst lortm: Unsurprsnly, ts s worklst lortm: 1 sr(v) { 2 worklst = [v]; 3 wl (worklst.swork()) { 4 v = worklst.nxt(); 5 osomtn(v); 6 or (w : v.nors()) { 7 worklst.(w); 8 } 9 } 10 } 1 sr(v) { 2 worklst = [v]; 3 wl (worklst.swork()) { 4 v = worklst.nxt(); 5 osomtn(v); 6 or (w : v.nors()) { 7 worklst.(w); 8 } 9 } 10 }
Srn Grp 20 W s rp s onnt wn tr s pt twn vry pr o vrts. Wt w on t know rp s onnt? Rltly, w mt sk t quston: Is vrtx w rl (os tr xst pt) rom vrtx v? Srn Grp 20 W s rp s onnt wn tr s pt twn vry pr o vrts. Wt w on t know rp s onnt? Rltly, w mt sk t quston: Is vrtx w rl (os tr xst pt) rom vrtx v? W oul us ts lortm to n pt, o somtn wt vry no, sr or prtulr no, t. W oul us ts lortm to n pt, o somtn wt vry no, sr or prtulr no, t. Unsurprsnly, ts s worklst lortm: Unsurprsnly, ts s worklst lortm: 1 sr(v) { 2 worklst = [v]; 3 wl (worklst.swork()) { 4 v = worklst.nxt(); 5 osomtn(v); 6 or (w : v.nors()) { 7 worklst.(w); 8 } 9 } 10 } 1 sr(v) { 2 worklst = [v]; 3 wl (worklst.swork()) { 4 v = worklst.nxt(); 5 osomtn(v); 6 or (w : v.nors()) { 7 worklst.(w); 8 } 9 } 10 } Srn Grp 20 W s rp s onnt wn tr s pt twn vry pr o vrts. Wt w on t know rp s onnt? Rltly, w mt sk t quston: Is vrtx w rl (os tr xst pt) rom vrtx v? Srn Grp 20 W s rp s onnt wn tr s pt twn vry pr o vrts. Wt w on t know rp s onnt? Rltly, w mt sk t quston: Is vrtx w rl (os tr xst pt) rom vrtx v? W oul us ts lortm to n pt, o somtn wt vry no, sr or prtulr no, t. W oul us ts lortm to n pt, o somtn wt vry no, sr or prtulr no, t. Unsurprsnly, ts s worklst lortm: Unsurprsnly, ts s worklst lortm: 1 sr(v) { 2 worklst = [v]; 3 wl (worklst.swork()) { 4 v = worklst.nxt(); 5 osomtn(v); 6 or (w : v.nors()) { 7 worklst.(w); 8 } 9 } 10 } 1 sr(v) { 2 worklst = [v]; 3 wl (worklst.swork()) { 4 v = worklst.nxt(); 5 osomtn(v); 6 or (w : v.nors()) { 7 worklst.(w); 8 } 9 } 10 }
Srn Grp 20 W s rp s onnt wn tr s pt twn vry pr o vrts. Wt w on t know rp s onnt? Rltly, w mt sk t quston: Is vrtx w rl (os tr xst pt) rom vrtx v? Srn Grp 20 W s rp s onnt wn tr s pt twn vry pr o vrts. Wt w on t know rp s onnt? Rltly, w mt sk t quston: Is vrtx w rl (os tr xst pt) rom vrtx v? W oul us ts lortm to n pt, o somtn wt vry no, sr or prtulr no, t. W oul us ts lortm to n pt, o somtn wt vry no, sr or prtulr no, t. Unsurprsnly, ts s worklst lortm: Unsurprsnly, ts s worklst lortm: 1 sr(v) { 2 worklst = [v]; 3 wl (worklst.swork()) { 4 v = worklst.nxt(); 5 osomtn(v); 6 or (w : v.nors()) { 7 worklst.(w); 8 } 9 } 10 } 1 sr(v) { 2 worklst = [v]; 3 wl (worklst.swork()) { 4 v = worklst.nxt(); 5 osomtn(v); 6 or (w : v.nors()) { 7 worklst.(w); 8 } 9 } 10 } Srn Grp 20 W s rp s onnt wn tr s pt twn vry pr o vrts. Wt w on t know rp s onnt? Rltly, w mt sk t quston: Is vrtx w rl (os tr xst pt) rom vrtx v? Srn Grp 20 W s rp s onnt wn tr s pt twn vry pr o vrts. Wt w on t know rp s onnt? Rltly, w mt sk t quston: Is vrtx w rl (os tr xst pt) rom vrtx v? W oul us ts lortm to n pt, o somtn wt vry no, sr or prtulr no, t. W oul us ts lortm to n pt, o somtn wt vry no, sr or prtulr no, t. Unsurprsnly, ts s worklst lortm: Unsurprsnly, ts s worklst lortm: 1 sr(v) { 2 worklst = [v]; 3 wl (worklst.swork()) { 4 v = worklst.nxt(); 5 osomtn(v); 6 or (w : v.nors()) { 7 worklst.(w); 8 } 9 } 10 } 1 sr(v) { 2 worklst = [v]; 3 wl (worklst.swork()) { 4 v = worklst.nxt(); 5 osomtn(v); 6 or (w : v.nors()) { 7 worklst.(w); 8 } 9 } 10 }
Wt Hppn? 21 Srn Grp (wt SortLst) 22 1 sr(v) { 2 worklst = [v]; 3 wl (worklst.swork()) { 4 v = worklst.nxt(); 5 osomtn(v); 6 or (w : v.nors()) { 7 worklst.(w); 8 } 9 } 10 } Wt Hppn? W strt srn pts n t rp n vntully wnt k n twn n. Ts ppn, us tr wr two stnt pts twn n : n W ollow t yl n our rp! A Corollry: Ts wouln t v ppn on tr! Tt s, w ust oun n lortm to k or tr-nss! 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst Srn Grp (wt SortLst) 22 Srn Grp (wt SortLst) 22 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst
Srn Grp (wt SortLst) 22 Srn Grp (wt SortLst) 22 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst Srn Grp (wt SortLst) 22 Srn Grp (wt SortLst) 22 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst
Srn Grp (wt SortLst) 22 Srn Grp (wt SortLst) 22 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst Srn Grp (wt SortLst) 22 Srn Grp (wt SortLst) 22 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst
Srn Grp (wt SortLst) 22 Srn Grp (wt SortLst) 22 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst Srn Grp (wt SortLst) 22 Srn Grp (wt SortLst) 22 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst
Srn Grp (wt SortLst) 22 Srn Grp (wt SortLst) 22 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst Srn Grp (wt SortLst) 22 Srn Grp (wt Stk) 23 1 sr(v) { 2 worklst = [v]; 3 sn = {v}; 4 wl (worklst.swork()) { 5 v = worklst.nxt(); 6 osomtn(v); 7 or (w : v.nors()) { 8 (w not sn) { 9 worklst.(w); 10 sn = sn {w}; W v two wys o xn ts: 1 nsst tt t worklst tk r o uplts, n 2 vo n uplts to t worklst Oky, ut w nvr tully us SortLst. How out Stk? Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up 3 It n wrttn rursvly worklst
Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up worklst Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up worklst 3 It n wrttn rursvly 3 It n wrttn rursvly Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up 3 It n wrttn rursvly worklst Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up 3 It n wrttn rursvly worklst
Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up 3 It n wrttn rursvly worklst Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up 3 It n wrttn rursvly worklst Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up 3 It n wrttn rursvly worklst Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up 3 It n wrttn rursvly worklst
Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up 3 It n wrttn rursvly worklst Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up 3 It n wrttn rursvly worklst Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up worklst Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up worklst 3 It n wrttn rursvly 3 It n wrttn rursvly
Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up worklst Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up worklst 3 It n wrttn rursvly 3 It n wrttn rursvly Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) worklst Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) worklst 2 W ollow pt s r s possl, tn k up 2 W ollow pt s r s possl, tn k up 3 It n wrttn rursvly 3 It n wrttn rursvly
Srn Grp (wt Stk) 23 Oky, ut w nvr tully us SortLst. How out Stk? Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Stk: 1 Ts lortm s ll DFS (pt-rst sr) 2 W ollow pt s r s possl, tn k up 3 It n wrttn rursvly worklst Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst
Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst
Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst
Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst
Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no Srn Grp (wt Quu) 24 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst worklst Srn Grp (wt Quu) 24 Srn Grp: Rovrn T Pt 25 Any rson w souln t us Quu? Wn w us Quu: 1 Ts lortm s ll BFS (rt-rst sr) 2 W nrs our orzon wy rom t strtn no worklst Us A Dtonry! sr(v) { worklst = [v]; rom = nw Dtonry(); rom.put(v, null); wl (worklst.swork()) { v = worklst.nxt(); osomtn(v); or (w : v.nors()) { (w not n rom) { worklst.(w); rom.put(w, v); } } } rturn rom; } npt(v, w) { rom = sr(v); pt = []; urr = w; wl (urr!= null) { pt.(0, urr); urr = rom[urr]; } rturn pt; }
Asymptot Anlyss o BFS n DFS 26 BFS n DFS Tr-Os 27 Runtm Bot lortms vst ll nos n t onnt omponnt: V Bot lortms n vst no on or n t rp: E So, BFS n DFS r O( V + E ) (ts s ll rp lnr ). Sp DFS: I t lonst pt s lnt p n t lrst numr o nors s n, tn DFS stors t most pn vrts BFS: Consr tr. BFS wll ol t ntr ottom lvl w s O( V ). Tr-Os DFS s ttr sp us, ut t mt n rutous pt BFS wll lwys n t sortst pt to no, ut t wll us mor mmory Itrtv Dpnn Itrtv Dpnn s DFS tt ouns t pt: 1 nt pt = 1; 2 wl (tr r nos to xplor) { 3 s(v, pt); 4 pt++; 5 } Sn most o t vrts r lvs, ts tully osn t wst mu tm! Gnrlzn Grps: Drton & E Wt 28 Gnrlzn Grps: Mult-Es 29 Unrt vs. Drt (o t s v rrows?) Smpl vs. Mult (loops on vrts? multpl s?) Unrt Drt Mult-rp Grp wt Loops 100 1 Wt vs. Unwt (o t s v wts?) 50 Unwt & Drt Wt & Unrt 1 50 100 Ts nrlztons r ll usul n rnt omns. W r on to tlk lot mor out tm ovr t nxt w lturs. Nxt ltur, w ll workn mostly wt rt rps.
A Wor out Sprsty 30 Bk to ountn s. In rp wtout multpl s, tr r n vrts, tr n nywr rom 0 to n 2 s. Ts s vry w rn. A rp wt wr s s ll sprs n on wt losr to n 2 s ll ns. W lry sw tt rp trvrsl ws O( E + V ): On sprs rp, tt s O( V ) On ns rp, tt s O( V 2 ). Sprsty mks u rn!