1 CSCI 104 Grp Rprsnttion n Trvrsls Mrk Rkopp Dvi Kmp
2 Oriin o Grp Tory In 1736, Eulr solv t prolm known s t Svn Bris o Könisr. T ity o Könisr, Prussi on t Prl Rivr, inlu two lr islns onnt to otr n t minln y svn ris. T prolm is to i wtr it is possil to ollow pt tt rosss ri xtly on (n optionlly: rturns to t strtin point) ttp://n.wikipi.or/wiki/svn_bris_o_k%c3%b6nisr
3 Eulr s Anlysis Wnvr you ntr non-trminl lnmss y ri you must lv y notr Bus its non-trminl you n't sty on you rriv Tus vry non-trminl lnmss must touin n vn numr o ris So tt you n ntr on on ri n lv on notr Howvr, ll our o t ln msss in t oriinl prolm r tou y n o numr o ris (on is tou y 5 ris, n o t otr tr r tou y 3).
4 Explntion Usin Grp Tory In "rp-spk", Eulr sow tt t possiility o wlk trou rp, trvrsin xtly on, pns on t rs o t nos. Eulr wlk = strt/n t irnt vrtis Eulr yl = strt/n t sm vrtx T r o no is t numr o s touin it. Eulr's rumnt sows tt nssry onition or t wlk o t sir orm is tt t rp onnt n v xtly zro or two nos o o r. I tr r 2 nos o o r, w n orm n Eulr wlk so tt w will strt t on o t o-r vrtis n n t t otr Sin t rp orrsponin to istoril Könisr s our nos o o r, it nnot v n Eulrin pt.
GRAPH REPRESENTATIONS 5
6 Grp Nottion Grps is olltion o vrtis (or nos) n s tt onnt vrtis Lt V t st o vrtis Lt E t st o s Lt V or n rr to t numr o vrtis Lt E or m rr to t numr o s V V =n=8 E (,) (,) (,) (,) (,) (,) (,) (,) (,) (,) (,) E =m=11
7 Grps in t Rl Worl Soil ntworks Computr ntworks / Intrnt Pt plnnin Intrtion irms Bioinormtis
8 Bsi Grp Rprsnttion Cn simply stor s in list/rry Unsort Sort V V =n=8 E (,) (,) (,) (,) (,) (,) (,) (,) (,) (,) (,) E =m=11
9 Grp ADT Wt oprtions woul you wnt to prorm on rp? Vrtx() : Vrtx E(v1, v2) tajnis(v1) : List<Vrtis> Rturns ny vrtx wit n rom v1 to itsl rmovvrtx(v) rmove(v1, v2) Exists(v1, v2) : ool #inlu<iostrm> usin nmsp st; tmplt <typnm V, typnm E> lss Grp{ }; Prt or tmpltin t t ssoit wit vrtx n s V n E
List o Vrtis Ajny Lists 10 Mor Common Grp Rprsnttions Grps r rlly just list o lists List o vrtis vin tir own list o jnt vrtis Altrntivly, somtims rps r lso rprsnt wit n jny mtrix Entry t (i,j) = 1 i tr is n twn vrtx i n j, 0 otrwis,,,,,,,,,,,,,, 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 Ajny Mtrix Rprsnttion
List o Vrtis Ajny Lists 11 Grp Rprsnttions Lt V = n = # o vrtis n E = m = # o s Ajny List Rprsnttion O( ) mmory stor Existn o n rquirs srin jny list Ajny Mtrix Rprsnttion O( ) stor Existn o n rquirs O( ) lookup,,,,,,,,,,,,,, 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 Ajny Mtrix Rprsnttion
List o Vrtis Ajny Lists 12 Grp Rprsnttions Lt V = n = # o vrtis n E = m = # o s Ajny List Rprsnttion O( V + E ) mmory stor Existn o n rquirs srin jny list Din r to t numr o s inint on vrtx ( () = 2, () = 5, t. Ajny Mtrix Rprsnttion O( V 2 ) stor Existn o n rquirs O(1) lookup (.. mtrix[i][j] == 1 ),,,,,,,,,,,,,, 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 Ajny Mtrix Rprsnttion
List o Vrtis Ajny Lists 13 Grp Rprsnttions Cn '' t to '' in two ops? Ajny List For nior o Sr tt nior's list or Ajny Mtrix Tk t ot prout o row & olumn,,,,,,,,,,,,,, 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 Ajny Mtrix Rprsnttion
List o Vrtis Ajny Lists 14 Grp Rprsnttions Cn '' t to '' in two ops? Ajny List For nior o Sr tt nior's list or Ajny Mtrix Tk t ot prout o row & olumn,,,,,,,,,,,,,, 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 Ajny Mtrix Rprsnttion
List o Vrtis Outoin Es Sour 15 Dirt vs. Unirt Grps In t prvious rps, s wr unirt (mnin s r 'iirtionl' or 'rlxiv') An (u,v) implis (v,u) In irt rps, links r uniirtionl An (u,v) os not imply (v,u) For E (u,v): t sour is u, trt is v For jny list orm, you my n 2 lists pr vrtx or ot prssors n sussors,,,, Trt 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 Ajny Mtrix Rprsnttion
List o Vrtis Sour 16 Dirt vs. Unirt Grps In irt rp wit (u,v) w in Sussor(u) = v Prssor(v) = u Usin n jny list rprsnttion my wrrnt two lists prssors n sussors,,,, Sus,,,, Prs Trt 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 Ajny Mtrix Rprsnttion
17 Timout: Rl-worl xmpl PAGERANK ALGORITHM
18 PRnk Consir t rp t t rit Ts oul wps wit links sown in t orrsponin irtion Ts oul niorin itis PRnk nrlly tris to nswr t qustion: I w lt un o popl rnomly "wlk" t rp, wt is t proility tt ty n up t rtin lotion (p, ity, t.) in t "sty-stt" W oul solv tis prolm trou Mont-Crlo simultion (similr to CS 103 Coin-lippin m ssinmnt) Simult lr numr o rnom wlkrs n ror wr on ns to uil up n nswr o t proilitis or vrtx But tr r mor iint wys o oin it
Trt=i Trt 19 PRnk Lt us writ out t jny mtrix or tis rp Now lt us mk wit vrsion y normlizin s on t out-r o no Ex. I you'r t no B w v 50-50 n o oin to A or E From tis you oul writ systm o linr qutions (i.. wt r t ns you n up t vrtx I t t nxt tim stp, ivn you r t som vrtx J now pa = 0.5*pB pb = pc pc = pa + pd + 0.5*pE pd = 0.5*pE pe = 0.5*pB W lso know: pa + pb + pc + pd + pe = 1 Sour 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 0 Ajny Mtrix Sour=j 0 0.5 0 0 0 0 0 1 0 0 1 0 0 1 0.5 0 0 0 0 0.5 0 0.5 0 0 0 Wit Ajny Mtrix [Divi ( i,j )/r(j)]
Trt=i 20 Systm o Linr Equtions pa = 0.5*pB pb = pc pc = pa + pd + 0.5*pE pd = 0.5*pE pe = 0.5*pB PRnk W lso know: pa + pb + pc + pd + pe = 1 I you know somtin out linr lr, you know w n writ ts qutions in mtrix orm s linr systm Ax = y Sour=j 0 0.5 0 0 0 0 0 1 0 0 1 0 0 1 0.5 0 0 0 0 0.5 0 0.5 0 0 0 Wit Ajny Mtrix [Divi y ( i,j )/r(j)] 0 0.5 0 0 0 pa 0 0.5 0 0 0 pa pa = 0.5PB 0 0 1 0 0 pb 0 0 1 0 0 pb pb = pc 1 0 0 1 0.5 * pc 1 0 0 1 0.5 * pc = pc = pa+pd+0.5*pe 0 0 0 0 0.5 pd 0 0 0 0 0.5 pd pd = 0.5*pE 0 0.5 0 0 0 pe 0 0.5 0 0 0 pe pe = 0.5*pB
Trt=i 21 PRnk But rmmr w wnt t sty stt solution T solution wr t proilitis on't n rom on stp to t nxt So w wnt solution to: Ap = p W n: Us linr systm solvr (Gussin limintion) Or w n just s t prolm wit som proilitis n tn just itrt until t solution sttls own Sour=j 0 0.5 0 0 0 0 0.5 0 0 0 pa pa 0 0 1 0 0 0 0 1 0 0 pb pb 1 0 0 1 0.5 1 0 0 1 0.5 * pc = pc 0 0 0 0 0.5 0 0 0 0 0.5 pd pd 0 0.5 0 0 0 0 0.5 0 0 0 pe pe Wit Ajny Mtrix [Divi y ( i,j )/r(j)]
22 Itrtiv PRnk But rmmr w wnt t sty stt solution T solution wr t proilitis on't n rom on stp to t nxt So w wnt solution to: Ap = p W n: Us linr systm solvr (Gussin limintion) Or w n just s t prolm wit som proilitis n tn just itrt until t solution sttls own 0 0.5 0 0 0 0 0 1 0 0 1 0 0 1 0.5 0 0 0 0 0.5 0 0.5 0 0 0 Stp 0 Sol. *.2.2.2.2.2 = Stp 1 Sol..1.2.5.1.1 0 0.5 0 0 0 0 0 1 0 0 1 0 0 1 0.5 0 0 0 0 0.5 0 0.5 0 0 0 Stp 29 Sol.?? *??? Stp 30 Sol..1507.3078 =.3126.0783.1507 Stp 1 Sol. Stp 2 Sol. 0 0.5 0 0 0 0 0 1 0 0 1 0 0 1 0.5 0 0 0 0 0.5 0 0.5 0 0 0 *.1.2.5.1.1 =.1.5.25.05.1 Atul PRnk Solution rom solvin linr systm:.1538.3077.3077.0769.1538
23 Aitionl Nots Wt i w n t rp n now D s no inomin links wt is its PRnk? 0 Most PR loritms proility tt somon just ntrs tt URL (i.. ntrs t rp t tt no) Usully in somtin ll t mpin tor, α (otn osn roun 0.85) Proility o rnomly strtin or jumpin somwr = 1-α So t tim stp t nxt PR vlu or no i is ivn s: Pr i = 1 α N + α σ j Pr(i) N is t totl numr o vrtis Usully run 30 or so upt stps Strt Pr(i) = 1/N Pr(j) OutD(j)
24 In W Sr Sttin Givn som sr kywors w oul in t ps tt v tt mtin kywors W otn xpn tt st o ps y inluin ll sussors n prssors o tos ps Inlu ll ps tt r witin rius o 1 o t ps tt tully v t kywor Now onsir tt st o ps n t surp tt it inus Run PRnk on tt surp Full WGrp P Hits (Contin kywor) Expn (Prs & Sus) Inu Surp to run PRnk
TREES 25
26 Tr Dinitions Prt 1 A 3-ry (trinry) tr Dinition: A onnt, yli (no yls) rp wit: A root no, r, tt s 0 or mor sutrs Extly on pt twn ny two nos In nrl: Nos v xtly on prnt (xpt or t root wi s non) n 0 or mor ilrn -ry tr Tr wr no s t most ilrn Binry tr = -ry Tr wit n=2 L Lt il root sutr silins prnt Rit il Anstor Dsnnt Trms: Prnt(i): No irtly ov no i Cil(i): No irtly low no i Silins: Cilrn o t sm prnt Root: Only no wit no prnt L: No wit 0 ilrn Hit: Lnt o lrst pt rom root to ny l Sutr(n): Tr root t no n Anstor(n): Any no on t pt rom n to t root Dsnnt(n): Any no in t sutr root t n
27 Tr Dinitions Prt 2 Tr it: mximum # o nos on pt rom root to ny l Full -ry tr, T, wr Evry vrtx s 0 or ilrn n ll l nos r t t sm lvl I it >1 n ot sutrs r ull inry trs o it, nil I it ==1, tn it is ull y inition Complt -ry tr E lvl is ill lt-to-rit n nw lvl is not strt until t prvious on is omplt Bln -ry tr Tr wr sutrs rom ny no ir in it y t most 1 Full Complt, ut not ull Full DAPS, 6 t E. Fiur 15-8 Complt
28 Tr Hit A ull inry tr o n nos s it, lo 2 (n + 1) Tis implis t minimum it o ny tr wit n nos is lo 2 (n + 1) T mximum it o tr wit n nos is, n 15 nos => it lo 2 (16) = 4 5 nos => it = 5
29 Tr Trvrsls A trvrsl itrts ovr ll nos o t tr Usully usin pt-irst, rursiv ppro Tr nrl trvrsl orrins Pr-orr [Pross root tn visit sutrs] In-orr [Visit lt sutr, pross root, visit rit sutr] Post-orr [Visit lt sutr, visit rit sutr, pross root] 20 60 80 Prorr(TrNo* t) { i t == NULL rturn pross(t) // print vl. Prorr(t->lt) Prorr(t->rit) } Inorr(TrNo* t) { i t == NULL rturn Inorr(t->lt) pross(t) // print vl. Inorr(t->rit) } 60 20 10 30 25 50 80 10 20 25 30 50 60 80 10 30 25 50 Postorr(TrNo* t) { i t == NULL rturn Postorr(t->lt) Postorr(t->rit) pross(t) // print vl. } 10 25 50 30 20 80 60
30 Arry-s n Link-s TREE IMPLEMENTATIONS
31 Arry-Bs Complt Binry Tr Binry tr tt is omplt (i.. only t lowst-lvl ontins mpty lotions n itms lt to rit) n stor nily in n rry (lt s sy it strts t inx 1 n inx 0 is mpty) Cn you in t mtmtil rltion or inin t inx o no i's prnt, lt, n rit il? Prnt(i) = Lt_il(i) = Rit_il(i) = 7 0 1 2 3 4 5 6 7 8 9 10 11 12 13 18 9 m 7 18 9 19 35 14 10 28 39 36 43 16 17 19 35 14 10 28 39 36 43 16 17 prnt(5) = Lt_il(5) = Rit_il(5) =
32 Arry-Bs Complt Binry Tr Binry tr tt is omplt (i.. only t lowst-lvl ontins mpty lotions n itms lt to rit) n stor nily in n rry (lt s sy it strts t inx 1 n inx 0 is mpty) Cn you in t mtmtil rltion or inin no i's prnt, lt, n rit il? Prnt(i) = i/2 Lt_il(i) = 2*i Rit_il(i) = 2*i + 1 7 0 1 2 3 4 m 7 18 9 19 5 6 7 8 9 35 14 10 28 39 10 11 12 13 36 43 16 17 18 9 prnt(5) = 5/2 = 2 Lt_il(5) = 2*5 = 10 Rit_il(5) = 2*5+1 = 11 19 35 14 10 28 39 36 43 16 17 Non-omplt inry trs rquir mu mor ookpin to stor in rrys usully link-s ppros r prrr
33 0-Bs Inxin Binry tr tt is omplt (i.. only t lowst-lvl ontins mpty lotions n itms lt to rit) n stor nily in n rry (lt s sy it strts t inx 1 n inx 0 is mpty) Cn you in t mtmtil rltion or inin t inx o no i's prnt, lt, n rit il? Prnt(i) = Lt_il(i) = Rit_il(i) = 7 0 1 2 3 4 5 6 7 8 9 10 11 12 18 9 7 18 9 19 35 14 10 28 39 36 43 16 17 19 35 14 10 28 39 36 43 16 17 prnt(5) = Lt_il(5) = Rit_il(5) =
34 D-ry Arry-s Implmnttions Arrys n us to stor -ry omplt trs Ajust t ormuls riv or inry trs in prvious slis in trms o 7 18 9 19 35 21 26 A 3-ry (trinry) tr 0 1 2 3 4 5 6 7 18 9 19 35 21 26
35 Link-Bs Appros Mu lik link list ut now wit two pointrs pr Itm Us NULL pointrs to init no il Dynmilly llot n r itms wn you /rmov tm #inlu<iostrm> usin nmsp st; tmplt <typnm T> strut BTItm { T vl; BTItm<T>* lt,rit; BTItm<T>* prnt; }; // Bin. Sr Tr tmplt <typnm T> lss BinTr { puli: BinTr(); ~BinTr(); voi (onst T& v);... privt: BTItm<T>* root_; }; BTItm<T> luprint: Itm<T>* lt Itm<T>* prnt T vl Itm<T>* rit lss LinkBST: 0x0 root_
36 A(5) A(6) A(7) Link-Bs Appros 1 lss LinkBST: 0x0 root_ 2 root_ 3 root_ 4 root_ 0x10 Lt Prnt vl rit
37 Link-Bs Appros A(5) A(6) A(7) 0x10 root_ vl 7 rit NULL Lt NULL 0x00 0x10 root_ vl 5 rit NULL Lt NULL lss LinkBST: 0x0 root_ 1 2 0x10 root_ vl 5 rit 0x20 Lt NULL vl 6 rit NULL Lt NULL 0x20 3 4 0x10 0x10 prnt NULL prnt NULL prnt 0x10 vl 5 rit 0x20 Lt NULL vl 6 rit 0x00 Lt NULL 0x20 0x10 prnt NULL prnt 0x10 prnt 0x20
BREADTH-FIRST SEARCH 38
39 Brt-First Sr Givn rp wit vrtis, V, n s, E, n strtin vrtx tt w'll ll u 0 BFS strts t u ( in t irm to t lt) n ns-out lon t s to nrst niors, tn to tir niors n so on Gol: Fin sortst pts (.k.. minimum numr o ops or pt) rom t strt vrtx to vry otr vrtx Dpt 0:
40 Brt-First Sr Givn rp wit vrtis, V, n s, E, n strtin vrtx, u BFS strts t u ( in t irm to t lt) n ns-out lon t s to nrst niors, tn to tir niors n so on Gol: Fin sortst pts (.k.. minimum numr o ops or pt) rom t strt vrtx to vry otr vrtx 0 1 1 Dpt 0: Dpt 1:,
41 Brt-First Sr Givn rp wit vrtis, V, n s, E, n strtin vrtx, u BFS strts t u ( in t irm to t lt) n ns-out lon t s to nrst niors, tn to tir niors n so on Gol: Fin sortst pts (.k.. minimum numr o ops or pt) rom t strt vrtx to vry otr vrtx 0 1 2 1 2 Dpt 0: Dpt 1:, Dpt 2:,,, 2 2
42 Brt-First Sr Givn rp wit vrtis, V, n s, E, n strtin vrtx, u BFS strts t u ( in t irm to t lt) n ns-out lon t s to nrst niors, tn to tir niors n so on Gol: Fin sortst pts (.k.. minimum numr o ops or pt) rom t strt vrtx to vry otr vrtx 0 1 2 1 2 Dpt 0: Dpt 1:, Dpt 2:,,, Dpt 3: 2 3 2
43 Dvlopin t Aloritm Ky i: Must xplor ll nrr niors or xplorin urtrwy niors From w in n Computr n only o on tin t tim so w v to pik itr or to xplor rom Lt s sy w pik w will in Now wt vrtx soul w xplor (i.. visit niors) nxt? C!! (i w on t w won t in sortst pts.. ) Must xplor ll vrtis t pt i or ny vrtis t pt i+1 0 1 1 2 Dpt 0: Dpt 1:, Dpt 2:,,, Dpt 3:
44 Dvlopin t Aloritm Explorin ll vrtis in t orr ty r oun implis w will xplor ll vrtis t sllowr pt or rtr pt Kp irst-in / irst-out quu (FIFO) o niors oun Put nwly oun vrtis in t k n pull out vrtx rom t ront to xplor nxt W on t wnt to put vrtx in t quu mor tn on mrk vrtx t irst tim w nountr it only llow unmrk vrtis to put in t quu My lso kp prssor strutur tt inits ow vrtx ot isovr (i.. wi vrtx us tis on to oun) Allows us to in sortst-pt k to t strt vrtx
45 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0 nil,in Q: nil,in nil,in nil,in nil,in nil,in nil,in
46 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,1 v = nil,in,1 nil,in nil,in nil,in nil,in Q:
47 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,1 v = nil,in,1 nil,in,2 nil,in nil,in Q:
48 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,2,1 v =,1,2,2 nil,in,2 Q:
49 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,2,1 v =,1,2,2 nil,in,2 Q:
50 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,2,1 v =,1,2,2,3,2 Q:
51 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,2,1 v =,1,2,2,3,2 Q:
52 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,2,1 v =,1,2,2,3,2 Q:
53 Brt-First Sr Aloritm: BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,0,2,1 v =,1,2,2,3,2 Q:
54 Brt-First Sr Sortst pts n oun wlkin prssor vlu rom ny no kwr Exmpl: Sortst pt rom to Strt t Pr[] = (so wlk k to ) Pr[] = (so wlk k to ) Pr[] = (so wlk k to ) Pr[] = nil no prssor, Don!! nil,0,2,1,1,2,2,3,2
55 Brt-First Sr Trs BFS (n ltr DFS) will inu tr surp (i.. yli, on prnt ) rom t oriinl rp Rlly BFS ins sust o s tt orm t sortst pts rom t sour to ll otr vrtis n tis sust orms tr,2 nil,0,1,3,1,2,2,2 Oriinl rp, G BFS Inu Tr
56 Din ist(s,v) = orrt sortst istn [v] = BFS omput istn p[v] = prssor o v Loop invrint Wt n w sy out t nos in t quu, tir [v] vlus, rltionsip twn [v] n ist[v], t.? Corrtnss Q: nil,0,1 nil,in,1 nil,in nil,in nil,in nil,in BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1
57 Corrtnss Din ist(s,v) = orrt sortst istn [v] = BFS omput istn p[v] = prssor o v Loop invrint All vrtis wit p[v]!= nil (i.. lry in t quu or popp rom quu) v [v] = ist(s,v) T istn o t nos in t quu r sort I Q = {v 1, v 2,, v r } tn [v 1 ] <= [v 2 ] <= <= [v r ] T nos in t quu r rom 2 jnt lyrs/lvls i.. [v k ] <= [v 1 ] + 1 Suppos tr is no rom 3 r lvl ([v 1 ] + 2), it must v n oun y som, vi, wr [v i ] = [v 1 ]+1 Q: nil,0,1 nil,in,1 nil,in nil,in nil,in BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,in
58 Anlyz t run tim o BFS or rp wit n vrtis n m s Fin T(n,m) How mny tims os loop on lin 5 itrt? Brt-First Sr Q: nil,0,1 nil,in,1 nil,in nil,in nil,in nil,in How mny tims loop on lin 7 itrt? BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1
59 Brt-First Sr Anlyz t run tim o BFS or rp wit n vrtis n m s Fin T(n) How mny tims os loop on lin 5 itrt? N tims (on itrtion pr vrtx) How mny tims loop on lin 7 itrt? For vrtx, v, t loop xuts (v) tims = σ v V θ[1 + v ] = θ σ v 1 + θ σ v (v) = Θ (n) + Θ (m) Totl = Θ(n+m) Q: nil,0,1 nil,in,1 nil,in nil,in nil,in BFS(G,u) 1 or vrtx v 2 pr[v] = nil, [v] = in. 3 Q = nw Quu 4 Q.nquu(u), [u]=0 5 wil Q is not mpty 6 v = Q.ront(); Q.quu() 7 or nior, w, o v: 8 i pr[w] < 0 // w not oun 9 Q.nquu(w) 10 pr[w] = v, [w] = [v] + 1 nil,in
DEPTH FIRST SEARCH 60
61 DFS Applition: Topoloil Sort Brt-irst sr osn't solv ll our prolms. Givn rp o pnnis (tsks, prrquisitis, t.) topoloil sort rts onsistnt orrin o tsks (vrtis) wr no pnnis r violt Mny possil vli topoloil orrins xist EE 109, EE 209, EE 354, EE 454, EE 457, CS104, PHYS 152, CS 201, CS 104, EE 109, CS 170, EE 209, EE 109 EE 209 EE 354 EE 457 EE 454L CS 104 CS 170 CS 201 CS 350 CS 320 CS 401 CS 360
62 Topoloil Sort Anotr xmpl Gttin rss Mor Exmpls: Projt mnmnt sulin Buil orr in Mkil or otr ompil projt Cookin usin rip Instrution xution on n outo-orr piplin CPU Proution o output vlus in simultion o omintionl t ntwork Soks Sos Unrwr Pnts Blt Unrsirt Sirt Ti Jkt ttp://www.prsonl.knt.u/~rmumm/aloritms/myalorit ms/grpalor/toposort.tm
63 Topoloil Sort Dos rt-irst sr work? No. Wt i w strt t CS 170 W' o to CS 201L or CS 104 All prnt nos n to omplt or ny il no BFS only urnts som prnt s omplt or il Turns out Dpt-First Sr will prt o our solution EE 109 EE 209 EE 354 EE 457 EE 454L CS 104 CS 170 CS 201 CS 350 CS 320 CS 401 CS 360
64 Dpt First Sr Explors ALL ilrn or ompltin prnt Not: BFS omplts prnt or ANY ilrn For DFS lt us ssin: A strt tim wn t no is irst oun A inis tim wn no is omplt I w look t our nos in rvrs orr o inis tim (i.. lst on to inis k to irst on to inis) w rriv t Topoloil orrin!!! 1 2 3 EE 457 EE 109 EE 209 EE 354 10 4 5 6 7 Rvrs Finis Tim Orr 1 2 9 8 EE 454L 11 CS 104 13 12 Strt Tim Finis Tim 22 23 24 CS 201 14 15 CS 170 21 CS 350 CS 320 16 17 18 20 19 CS 401 CS 360 CS 170, CS 104, CS 201, CS 320, CS 360, CS 477, CS 350, EE 109, EE 209L, EE 354, EE 454L, EE 457
65 DFS Aloritm Visit no Mrk s visit (strt) For visit nior, visit it n prorm DFS on ll o tir ilrn Only tn, mrk s inis DFS is rursiv!! I yls in t rp, nsur w on t t ut visitin niors nlssly Color tm s w o Wit = unvisit, Gry = visit ut not inis Blk = inis DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u)
66 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u)
67 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,):
68 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,):
69 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
70 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
71 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list: DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
72 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list: DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
73 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list: DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
74 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:, DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
75 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,, DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
76 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,, DFS-Visit(G,): DFS-Visit(G,):
77 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,, DFS-Visit(G,):
78 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,, DFS-Visit(G,): DFS-Visit(G,):
79 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,, DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
80 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,,. DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
81 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,,., DFS-Visit(G,): DFS-Visit(G,):
82 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,,.,, DFS-Visit(G,):
83 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list My itrt trou mny omplt vrtis or inin to lun nw sr rom u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,,.,, DFS-Visit(G,):
84 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,,.,,, DFS-Visit(G,):
85 Dpt First-Sr DFS-All (G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) 7 rturn inis_list u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) Finis_list:,,,.,,,
86 Wit Cyls in t rp ANOTHER EXAMPLE
87 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u)
88 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) u v DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,):
89 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,):
90 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) u v DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
91 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) u v DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
92 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
93 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) v DFS-Visit(G,): DFS-Visit(G,): u DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
94 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) v u DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
95 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) v u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
96 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFSQ: DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
97 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFSQ: v u DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
98 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) v u v DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFSQ: DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
99 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFSQ: DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
100 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFSQ: u DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,): DFS-Visit(G,):
101 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) u DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFSQ: DFS-Visit(G,):
102 Dpt First-Sr Toposort(G) 1 or vrtx u 2 u.olor = WHITE 3 inis_list = mpty_list 4 or vrtx u o 5 i u.olor == WHITE tn 6 DFS-Visit (G, u, inis_list) DFS-Visit (G, u) 1 u.olor = GRAY 2 or vrtx v in Aj(u) o 3 i v.olor = WHITE tn 4 DFS-Visit (G, v) 5 u.olor = BLACK 6 inis_list.ppn(u) DFSQ:
ITERATIVE VERSION 103
104 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()
105 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()
106 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()
107 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()
108 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()
109 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()
110 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE 13 u.olor = BLACK 14 st.pop_k() st:
111 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE 13 u.olor = BLACK 14 st.pop_k() st:
112 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE 13 u.olor = BLACK 14 st.pop_k() st:
113 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE 13 u.olor = BLACK 14 st.pop_k() st:
114 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE 13 u.olor = BLACK 14 st.pop_k() st:
115 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()
116 Dpt First-Sr DFS (G,s) 1 or vrtx u 2 u.olor = WHITE 3 st = nw Stk 4 st.pus_k(s) 5 wil st not mpty 6 u = st.k() 7 i u.olor == WHITE tn 8 u.olor = GRAY 9 or vrtx v in Aj(u) o 10 i v.olor == WHITE 11 st.pus_k(v) 12 ls i u.olor!= WHITE st: 13 u.olor = BLACK 14 st.pop_k()
117 BFS vs. DFS Aloritm BFS n DFS r mor similr tn you tink Do w us FIFO/Quu (BFS) or LIFO/Stk (DFS) to stor vrtis s w in tm BFS-Visit (G, strt_no) 1 or vrtx u 2 u.olor = WHITE 3 u.pr = nil 4 sq = nw Quu 5 sq.pus_k(strt_no) 6 wil sq not mpty 7 u = sq.pop_ront() 8 i u.olor == WHITE 9 u.olor = GRAY 10 or vrtx v in Aj(u) o 11 sq.pus_k(v) DFS-Visit (G, strt_no) 1 or vrtx u 2 u.olor = WHITE 3 u.pr = nil 4 st = nw Stk 5 st.pus_k(strt_no) 6 wil st not mpty 7 u = st.pop_k() 8 i u.olor == WHITE 9 u.olor = GRAY 10 or vrtx v in Aj(u) o 11 st.pus_k(v)