Algoritmi di visita di un grafo



Похожие документы
3. La matrice dei dati e le analisi preliminari 3.1 Introduzione

CHAPTER 1 CINEMATICA Moto Rettilineo

Problema 1: Una collisione tra meteoriti

durante lo spostamento infinitesimo dr la quantità data dal prodotto scalare F dr

Problemi sul parallelogramma con le incognite

CORSO DI CALCOLO DELLE PROBABILITÀ E STATISTICA. Esercizi su eventi, previsioni e probabilità condizionate

La f(x) dovrà rimanere all interno di questo intorno quando la x è all interno di un intorno di x 0, cioè I(x 0 ), cioè:

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Urti tra due punti materiali

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

ONDE ESERCIZI SVOLTI DAL PROF. TRIVIA GIANLUIGI

Effetto reddito ed effetto sostituzione.

Ancora sull indipendenza. Se A e B sono indipendenti allora lo sono anche

Attività 9. La città fangosa Minimal Spanning Trees

RISCONTO ATTIVO = Costo sospeso = costo che riguarda il futuro esercizio

FROM LIQUID STEEL TO FINISHED PRODUCTS

6. Registri delle persone che hanno accesso a informazioni privilegiate

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Esercitazione VIII - Lavoro ed energia II

Circuiti del primo ordine

Il mistero dei muoni: perché arrivano sulla terra e cosa c entra la relatività del tempo e dello spazio?

Esempi di problemi di 1 grado risolti Esercizio 1 Problema: Trovare un numero che sommato ai suoi 3/2 dia 50

Calcolo delle Probabilità

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

Analisi in regime sinusoidale (parte V)

Sulla monotonia delle funzioni reali di una variabile reale

2 - ISCRIZIONI AD ANNI SUCCESSIVI AL PRIMO

FASCI DI RETTE. scrivere la retta in forma esplicita: 2y = 3x + 4 y = 3 2 x 2. scrivere l equazione del fascio di rette:

Транскрипт:

Algoimi di iia di n gafo Ilaia Caelli caelli@dii.nii.i Unieià degli Sdi di Siena Dipaimeno di Ingegneia dell Infomazione A.A. 2009/2010 I. Caelli Viia di n gafo, A.A. 2009/2010 1/44

Gafi Viia in ampiezza Viia in pofondià Odinameno opologico I. Caelli Viia di n gafo, A.A. 2009/2010 2/44

Scopo e ipi di iia di n gafo Viia Una iia (o aaeameno) di n gafo G pemee di eaminae i nodi e gli achi di G in modo iemaico. Eiono aie ipologie di iia, con diee popieà. In paicolae: 1 Viia in ampiezza (FS = eadh Fi Seach) 2 Viia in pofondià (DFS = Deph Fi Seach) I. Caelli Viia di n gafo, A.A. 2009/2010 3/44

eadh Fi Seach Viia in ampiezza Dao n gafo G = (V, E) e n nodo chiamao ogene, la iia in ampiezza eploa gli achi di G pe copie i i nodi aggingibili a paie da La iia FS calcola la dianza (nmeo minimo di achi) a e ogni eice da eo aggingibile La iia conene di definie n albeo FS, con adice, conenene i i nodi aggingibili Nell albeo FS il cammino da a n nodo coiponde a n cammino minimo (conenene il nmeo minimo di achi) La iia FS i pò applicae ia ai gafi diei che a qelli non diei I. Caelli Viia di n gafo, A.A. 2009/2010 4/44

eadh Fi Seach La iia in ampiezza eploa i nodi del gafo paendo da qelli a dianza 1 da. Poi iia qelli a dianza 2, e coì ia. L algoimo iia i i eici ad n liello k pima di iiae qelli a liello k + 1. dianza = 3 dianza = 2 dianza = 1 h i Si genea n albeo Si iiano nodi ia ia più diani dalla ogene I. Caelli Viia di n gafo, A.A. 2009/2010 5/44

eadh Fi Seach Pe enee accia del pogeo della iia, l algoimo FS aocia delle flag ai nodi. Spponiamo di poe coloae i nodi di bianco, gigio o neo. All inizio i i nodi ono bianchi e, cceiamene, poono dienae gigi e, ine, nei. Un nodo iene copeo la pima ola che iene inconao dane la iia e, in ale iane, cea di eee bianco. La diinzione a nodi gigi e nei eie affinché la iia poceda in ampiezza. In oanza, la diinzione è la egene: ianchi: non ancoa copei Gigi: appena copei; ono la foniea a nodi copei e non. I nodi adiaceni ad n nodo gigio poono eee bianchi. Nei: copei. Ti i nodi adiaceni ad n nodo neo ono ai copei. I. Caelli Viia di n gafo, A.A. 2009/2010 6/44

Algoimo FS - Se dai Le e dai ae dall algoimo ono le egeni: Lie di adiacenza Adj Adj[] è la lia dei nodi adiaceni a. Aa colo colo[] coniene il coloe del nodo Aa d d[] coniene la dianza di dal nodo ogene. Viene inizializzaa a inio. Aa p p[] coniene il pedeceoe del nodo nell albeo FS Coda Q coniene i nodi gigi I. Caelli Viia di n gafo, A.A. 2009/2010 7/44

Algoimo FS 1 FS(G, ) 2 f o o g n i nodo i n V[G] { } / i n i z i a l i z z a z i o n e / 3 c o l o [ ] = WHITE 4 d [ ] = i n f i n i 5 p [ ] = 6 7 c o l o [ ] = GRAY / i i o l a o g e n e / 8 d [ ] = 0 9 p [ ] = 0 Q = { } 1 h i l e Q!= emp 2 = head [Q] / nodo da e p a n d e e / 3 f o o g n i nodo i n Adj [ ] / i i o i n o d i a d i a c e n i / 4 i f c o l o [ ] = WHITE / e e b i a n c o i e n e c o p e o / 5 hen c o l o [ ] = GRAY 6 d [ ] = d [ ] + 1 7 p [ ] = 8 ENQUEUE(Q, ) / i n e i o n e l l a coda Q / 9 DEQUEUE(Q) / o l o d a l l a coda : e g i a a o e pano / 0 c o l o [ ] = LACK I. Caelli Viia di n gafo, A.A. 2009/2010 8/44

Algoimo FS - Eempio d p Adj Q = {} I. Caelli Viia di n gafo, A.A. 2009/2010 9/44

Algoimo FS - Eempio d p Adj 0 0 Q = {} I. Caelli Viia di n gafo, A.A. 2009/2010 9/44

Algoimo FS - Eempio d p Adj 1 0 1 0 1 1 Q = {, } I. Caelli Viia di n gafo, A.A. 2009/2010 9/44

Algoimo FS - Eempio d p Adj 1 0 2 1 0 2 1 1 2 2 Q = {,, } I. Caelli Viia di n gafo, A.A. 2009/2010 9/44

Algoimo FS - Eempio d p Adj 1 0 2 1 0 2 2 1 2 1 2 2 Q = {,, } I. Caelli Viia di n gafo, A.A. 2009/2010 9/44

Algoimo FS - Eempio Adj p d 0 0 1 1 1 2 2 2 1 2 2 Q = {,, } 2 3 3 I. Caelli Viia di n gafo, A.A. 2009/2010 9/44

Algoimo FS - Eempio Adj p d 0 0 1 1 1 2 2 1 2 2 2 3 3 3 2 3 Q = {,, } I. Caelli Viia di n gafo, A.A. 2009/2010 9/44

Algoimo FS - Eempio Adj p d 0 0 1 1 1 2 2 2 2 3 3 3 2 3 Q = {, } 1 2 I. Caelli Viia di n gafo, A.A. 2009/2010 9/44

Algoimo FS - Eempio Adj p d 0 0 1 1 1 2 2 2 2 3 3 2 3 1 Q = {} 3 2 I. Caelli Viia di n gafo, A.A. 2009/2010 9/44

Algoimo FS - Eempio Adj p d 0 0 1 1 1 2 2 2 2 3 2 3 1 3 3 Q = {} 2 I. Caelli Viia di n gafo, A.A. 2009/2010 9/44

Algoimo FS - Albeo FS La iia FS conene di definie n albeo FS. all inizio coniene olo qando n nodo bianco iene copeo, coendo la lia di adiacenza di n nodo, alloa l aco (, ) e eo engono aggini all albeo p() = p() = p() = p() = 1 0 2 3 0 1 1 2 1 2 3 p() = p() = p() = p() = 2 2 2 3 3 I. Caelli Viia di n gafo, A.A. 2009/2010 10/44

eadh Fi Seach - Analii Analii del empo di eeczione n gafo G = (V, E) Il empo neceaio pe l inizializzazione è O( V ) Ogni nodo aggingibile iene iiao na ola Le opeazioni di ineimeno e imozione dalla coda coano O(1), qindi il empo oale neceaio pe le opeazioni lla coda è O( V ) La lia di adiacenza di n nodo iene coa na ola ola, qindi in oale il empo è O( E ) Il empo oale ichieo dall algoimo FS i oiene ommando il empo pe l inizializzazione e qello neceaio pe iiae i nodi: O( V + E ) I. Caelli Viia di n gafo, A.A. 2009/2010 11/44

eadh Fi Seach - Cammini minimi Dianza minima Si definice dianza minima δ(, ) da a, il nmeo minimo di achi di n cammino dal nodo al nodo δ(, ) 0 δ(, ) = e non è aggingibile paendo da Cammino minimo Un cammino di lnghezza δ(, ) da a i dice cammino minimo. Noa: poono eiee più cammini minimi a de nodi FS La iia FS calcola la dianza minima δ(, ) di ogni nodo aggingibile da Nell albeo FS il cammino da ad n nodo è n cammino minimo I. Caelli Viia di n gafo, A.A. 2009/2010 12/44

eadh Fi Seach - Popieà Lemma Dao n gafo G = (V, E) dieo o non dieo e n nodo V qaliai, alloa pe ogni aco (, ) E i ha δ(, ) δ(, ) + 1 Dimoazione Se non è aggingibile da, alloa δ(, ) = Se è aggingibile da, alloa anche è aggingibile. Il cammino minimo da a non pò eee più lngo del cammino minimo da a, più l aco (, ) I. Caelli Viia di n gafo, A.A. 2009/2010 13/44

eadh Fi Seach - Popieà Lemma Sia G = (V, E) n gafo dieo o non dieo e V n nodo ogene qaliai, a paie dal qale è ao eegio l algoimo FS. Alloa pe ogni nodo V i ha d[] δ(, ) Dimoazione Pe indzione: d[] = 0 = δ(, ) e, pe qaliai nodo V {}, ale d[] = δ(, ) Dao n nodo copeo dane l eploazione di n nodo, pe ipoei india ale d[] δ(, ). d[] }{{} = d[] + 1 }{{} algoimo ipoei india δ(, ) + 1 δ(, ) }{{} lemma pecedene I. Caelli Viia di n gafo, A.A. 2009/2010 14/44

eadh Fi Seach - Popieà Lemma Spponendo che dane l eeczione della iceca FS n gafo G = (V, E), la coda Q conenga i nodi < 1,..., >, doe 1 = head[q] e = ail[q], alloa d[ ] d[ 1 ] + 1 e d[ i ] d[ i+1 ], i = 1,..., 1 La diffeenza a le dianze da dei nodi peeni nella coda in n ceo momeno è al più 1 Un nodo iene ineio nella coda (dienando +1 ) qando il nodo in ea, 1, iene eploao d[ +1 ] = d[] = d[ 1 ] + 1 d[ ] d[ 1 ] + 1 = d[] = d[ +1 ] I. Caelli Viia di n gafo, A.A. 2009/2010 15/44

eadh Fi Seach - Popieà Popoizione I nodi che enano nella coda Q ono i e oli i nodi ali che δ(, ) <, cioè i i nodi aggingibili da Dimoazione 1 ena in Q = δ(, ) < Si pocede pe indzione ll i-eima ieazione dell opeazione ENQUEUE e i = 0, olo è nella coda: δ(, ) = 0 < e i > 0, pponiamo che l ipoei india ia ea pe ogni ieazione k < i. Al pao i i iia Adj[], con = head[q], e i nodi bianchi engono ineii in Q. Pe ipoei india δ(, ) <. Poiché eie l aco (, ): δ(, ) δ(, ) + 1 < I. Caelli Viia di n gafo, A.A. 2009/2010 16/44

eadh Fi Seach - Popieà 2 ena in Q = δ(, ) < Si pocede pe indzione δ(, ) = k e δ(, ) = 0 è eo: = e δ(, ) = k > 0, pe ipoei india i ha che pe ogni ale che δ(, ) < k, è già enao in coda. Poiché δ(, ) <, eie n cammino < 0,..., i1, i > da a, con 0 = e i =. 0 (i1) δ(, i1 ) = k 1 e i1 è nella coda pe ipoei india. Qando eà iiaa Adj[ i1 ] eà copeo e: e è bianco ena in coda non pò eee gigio o neo, alimeni aebbe già enao in coda, peché aebbe δ(, ) < k! I. Caelli Viia di n gafo, A.A. 2009/2010 17/44

eadh Fi Seach - Albeo FS Albeo FS L aa p definice n oogafo dei pedeceoi di G. In paicolae, i aa di n albeo, T p : T p = (V p, E p ) V p = { V : p[] } {} E p = {(p[], ) E : V p {}} Una ola eegia la iceca FS, la egene poceda ampa il cammino minimo da a 1 PRINTPATH(G,, ) 2 i f = 3 hen p i n 4 e l e i f p [ ] = 5 hen p i n "non eie n cammino da a " 6 e l e PRINTPATH(G,, p [ ] ) 7 p i n I. Caelli Viia di n gafo, A.A. 2009/2010 18/44

Deph Fi each Viia in pofondià Dao n gafo G = (V, E) ed n nodo, deo nodo ogene, la iia deph fi eploa il gafo andando il più poibile in pofondià. Dao n nodo appena copeo, la iia poege a paie da i oi achi che ancoa non ono ai eploai Qando i ono eploai i gli achi del nodo, i ona al nodo dal qale è ao copeo, e i eploano i oi leioi achi non ancoa eploai (e ce ne ono) Si poege finchè non engono copei i i nodi aggingibili da Se i ono ancoa dei nodi non copei, no di qei iene adoao come na noa ogene, e la iia ipende a paie da eo L algoimo emina qando i i nodi ono ai copei I. Caelli Viia di n gafo, A.A. 2009/2010 19/44

Deph Fi Seach Pe enee accia del pogeo della iia, anche l algoimo DFS aocia delle flag ai nodi. Di noo, i ppone di coloae i nodi di bianco, gigio o neo. All inizio i i nodi ono bianchi e, cceiamene, poono dienae gigi e, ine, nei. Un nodo iene copeo la pima ola che iene inconao dane la iia e, in ale iane, cea di eee bianco. La diinzione a nodi gigi e nei è neceaia affinché la iia poceda in pofondià. La diinzione è la egene: ianchi: non ancoa copei Gigi: ono ai copei, ma l eploazione della loo lia di adiacenza non è ancoa eminaa. Nei: l eploazione della loo lia di adiacenza è compleaa. I. Caelli Viia di n gafo, A.A. 2009/2010 20/44

Algoimo DFS - Se dai Le e dai ae dall algoimo ono le egeni: Lie di adiacenza Adj Adj[] è la lia dei nodi adiaceni a. Aa colo colo[] coniene il coloe del nodo Aa p p[] coniene il pedeceoe del nodo nella foea DFS Aa d d[] è n imeamp che coniene il momeno in ci è ao copeo. Aa f f[] è n imeamp che coniene il momeno in ci i è concla la iia di, cioè i è finio di eaminae al a lia di adiacenza Adj[]. I. Caelli Viia di n gafo, A.A. 2009/2010 21/44

Algoimo DFS - Se dai Noa: Il nodo è bianco pima di d[] gigio a d[] e f[] neo dopo f[] Oiamene i ha d[] < f[], V I imeamp ono nmei inei compei a 1 e 2 V, poiché ogni nodo iene copeo eaamene na ola, e i finice di eploalo eaamene na ola. I. Caelli Viia di n gafo, A.A. 2009/2010 22/44

Algoimo DFS 1 DFS(G, ) 2 f o o g n i e i c e i n V[G] / i n i z i a l i z z a z i o n e / 3 c o l o [ ] = WHITE 4 p [ ] = 5 ime = 0 6 f o o g n i e i c e i n V[G] 7 i f c o l o [ ] = WHITE 8 hen DFSVISIT ( ) / i i a o g n i nodo non c o p e o / 1 DFSVISIT ( ) 2 c o l o [ ] = GRAY 3 d [ ] = ime / empo d i i n i z i o i i a l i a d i a d i a c e n z a / 4 ime = ime + 1 5 f o o g n i e i c e i n Adj [ ] 6 i f c o l o [ ] = WHITE 7 hen p [ ] = 8 DFSVISIT ( ) / i i a b i o n o d i non c o p e i / 9 c o l o [ ] = LACK / f i n i o d i i i a e i n o d i a d i a c e n i / 0 f [ ] = ime 1 ime = ime + 1 I. Caelli Viia di n gafo, A.A. 2009/2010 23/44

Algoimo DFS - Eempio Adj z z z z I. Caelli Viia di n gafo, A.A. 2009/2010 24/44

Algoimo DFS - Eempio 1/ z I. Caelli Viia di n gafo, A.A. 2009/2010 25/44

Algoimo DFS - Eempio 1/ 1/ 2/ z z I. Caelli Viia di n gafo, A.A. 2009/2010 25/44

Algoimo DFS - Eempio 1/ 1/ 2/ 1/ 2/ 3/ z z z I. Caelli Viia di n gafo, A.A. 2009/2010 25/44

Algoimo DFS - Eempio 1/ 1/ 2/ 1/ 2/ 3/ z z z 1/ 2/ 4/ 3/ z I. Caelli Viia di n gafo, A.A. 2009/2010 25/44

Algoimo DFS - Eempio 1/ 1/ 2/ 1/ 2/ 3/ z z z 1/ 2/ 1/ 2/ 4/ 3/ z 4/ 3/ z I. Caelli Viia di n gafo, A.A. 2009/2010 25/44

Algoimo DFS - Eempio 1/ 1/ 2/ 1/ 2/ 3/ z z z 1/ 2/ 1/ 2/ 1/ 2/ 4/ 3/ z 4/ 3/ z 4/5 3/ z I. Caelli Viia di n gafo, A.A. 2009/2010 25/44

Algoimo DFS - Eempio 1/ 1/ 2/ 1/ 2/ 3/ z z z 1/ 2/ 1/ 2/ 1/ 2/ 4/ 3/ z 4/ 3/ z 4/5 3/ z 1/ 2/ 4/5 3/6 z I. Caelli Viia di n gafo, A.A. 2009/2010 25/44

Algoimo DFS - Eempio 1/ 1/ 2/ 1/ 2/ 3/ z z z 1/ 2/ 1/ 2/ 1/ 2/ 4/ 3/ z 4/ 3/ z 4/5 3/ z 1/ 2/ 1/ 2/7 4/5 3/6 4/5 3/6 z z I. Caelli Viia di n gafo, A.A. 2009/2010 25/44

Algoimo DFS - Eempio 1/ 1/ 2/ 1/ 2/ 3/ z z z 1/ 2/ 1/ 2/ 1/ 2/ 4/ 3/ z 4/ 3/ z 4/5 3/ z 1/ 2/ 1/ 2/7 1/ 2/7 F 4/5 3/6 4/5 3/6 4/5 3/6 z z z I. Caelli Viia di n gafo, A.A. 2009/2010 25/44

Algoimo DFS - Eempio 1/8 F 2/7 4/5 3/6 z I. Caelli Viia di n gafo, A.A. 2009/2010 26/44

Algoimo DFS - Eempio 1/8 2/7 1/8 2/7 9/ F F 4/5 3/6 z 4/5 3/6 z I. Caelli Viia di n gafo, A.A. 2009/2010 26/44

Algoimo DFS - Eempio 1/8 2/7 1/8 2/7 9/ 1/8 2/7 9/ F F F C 4/5 3/6 z 4/5 3/6 z 4/5 3/6 z I. Caelli Viia di n gafo, A.A. 2009/2010 26/44

Algoimo DFS - Eempio 1/8 2/7 1/8 2/7 9/ 1/8 2/7 9/ F F F C 4/5 3/6 z 1/8 2/7 9/ F C 4/5 3/6 10/ z 4/5 3/6 z 4/5 3/6 z I. Caelli Viia di n gafo, A.A. 2009/2010 26/44

Algoimo DFS - Eempio 1/8 2/7 1/8 2/7 9/ 1/8 2/7 9/ F F F C 4/5 3/6 z 1/8 2/7 9/ F C 4/5 3/6 z 1/8 2/7 9/ F C 4/5 3/6 z 4/5 3/6 10/ z 4/5 3/6 10/ z I. Caelli Viia di n gafo, A.A. 2009/2010 26/44

Algoimo DFS - Eempio 1/8 2/7 1/8 2/7 9/ 1/8 2/7 9/ F F F C 4/5 3/6 4/5 3/6 4/5 3/6 z z z 1/8 2/7 9/ 1/8 2/7 9/ 1/8 2/7 9/ F C F C F C 4/5 3/6 10/ z 4/5 3/6 10/ z 4/5 3/6 10/11 z I. Caelli Viia di n gafo, A.A. 2009/2010 26/44

Algoimo DFS - Eempio 1/8 2/7 1/8 2/7 9/ 1/8 2/7 9/ F F F C 4/5 3/6 4/5 3/6 4/5 3/6 z z z 1/8 2/7 9/ 1/8 2/7 9/ 1/8 2/7 9/ F C F C F C 4/5 3/6 10/ z 4/5 3/6 10/ z 4/5 3/6 10/11 z 1/8 2/7 9/12 F C 4/5 3/6 10/11 z I. Caelli Viia di n gafo, A.A. 2009/2010 26/44

Foea DFS Allo eo modo della iceca FS, nella iceca DFS, n nodo iene copeo eploando la lia di adiacenza di n nodo già copeo. L aa p iene accia del pedeceoe di ogni nodo copeo: p[] = Foea DFS L aa p definice n oogafo dei pedeceoi di G. In paicolae, i aa di na foea, F p : F p = (V, E p ) E p = {(p[], ) : V e p[] } Il oogafo dei pedeceoi è na foea deph fi, coiia da più albei deph fi. I. Caelli Viia di n gafo, A.A. 2009/2010 27/44

Foea DFS - Claificazione degli achi Gli achi del gafo oiginaio engono claificai in: Tee-edge. Achi della foea DFS. Foad-edge. Achi in aani. Achi non appaeneni alla foea DFS, che anno da n eice ad n o cceoe nella foea DFS. Qando engono pecoi dane l algoimo DFS, collegano de nodi già copei. ackad-edge. Achi all indieo. Achi non appaeneni alla foea DFS, che anno da n eice ad n o anenao nella foea DFS. Achi del gafo che, qando engono pecoi dane l algoimo DFS, collegano de nodi già copei. Co-edge Achi di aaeameno. Ti gli ali achi. Collegano de nodi che non hanno na elazione di dicendenza l no dall alo. I. Caelli Viia di n gafo, A.A. 2009/2010 28/44

Foea DFS p 1/8 9/12 1/8 2/7 9/12 F C 4/5 3/6 10/11 z z F 2/7 3/6 4/5 C 10/11 z La a degli albei DFS ipecchia eaamene la a delle chiamae icoie alla poceda DF S V ISIT : = p[] e e olo e DF S V ISIT () è aa chiamaa dane lo coimeno della lia di adiacenza di. Noa: gli achi ceni ed enani llo eo nodo (elf-loop), engono conideai backad-edge. I. Caelli Viia di n gafo, A.A. 2009/2010 29/44

Algoimo DFS - Analii 1 Nella poceda DF S ci ono de cicli, che engono eegii Θ( V ) 2 La poceda DF S V ISIT iene ichiamaa eaamene na ola pe ogni nodo V 3 Dane l eeczione di DF S V ISIT (), il ciclo nelle linee 5-8 iene eegio Adj[] ole 4 Poiché Adj[] = Θ( E ) V il coo oale pe l eeczione del ciclo è Θ( E ) Il empo oale di eeczione è Θ( V + E ) I. Caelli Viia di n gafo, A.A. 2009/2010 30/44

Algoimo DFS - Popieà Teoema delle paenei In na iia in pofondià di n gafo (dieo o non dieo) G = (V, E), pe ogni coppia di nodi e, definiamo gli inealli A = [d[], f[]] = [d[], f[]] Alloa, na e na ola delle egeni condizioni è ea: 1 A = 2 L ineallo A è ineamene inclo nell ineallo, e è n dicendene di in n albeo DFS 3 L ineallo è ineamene inclo nell ineallo A, e è n dicendene di in n albeo DFS I. Caelli Viia di n gafo, A.A. 2009/2010 31/44

Algoimo DFS - Popieà Dimoazione 1 Cao 1. d[] < d[]. Ci ono de oocai: 1 d[] < f[] iene copeo pima di Qando i cope la iia di non è aa compleaa ( è gigio) Ciò ol die che è dicendene di Poiché è ao copeo più ecenemene di, la iia di dee compleai pima di onae a : f[] < f[] QUindi l ineallo A = [d[], f[]] è compleamene coneno in = [d[], f[]] d[] d[] f[] f[] I. Caelli Viia di n gafo, A.A. 2009/2010 32/44

Algoimo DFS - Popieà 1 2 d[] > f[] diena neo pima che enga copeo Qindi, qando iene copeo la iia di è già aa compleaa d[] < f[] e d[] < f[] Qindi gli inealli A = [d[], f[]] e = [d[], f[]] ono digini d[] f[] d[] f[] 2 Cao 2. d[] > d[]: è immeico, baa cambiae il olo di e I. Caelli Viia di n gafo, A.A. 2009/2010 33/44

Algoimo DFS - Popieà 1 2 d[] > f[] diena neo pima che enga copeo Qindi, qando iene copeo la iia di è già aa compleaa d[] < f[] e d[] < f[] Qindi gli inealli A = [d[], f[]] e = [d[], f[]] ono digini d[] f[] d[] f[] 2 Cao 2. d[] > d[]: è immeico, baa cambiae il olo di e Coollaio (conege dal eoema delle paenei) Un nodo è n dicendene di n nodo in n albeo della foea DFS pe n gafo (dieo o non dieo) G e e olo e d[] < d[] < f[] < f[] I. Caelli Viia di n gafo, A.A. 2009/2010 33/44

Algoimo DFS - Popieà 1/8 9/12 F 2/7 3/6 C 10/11 z z 4/5 1 2 3 4 5 6 7 8 9 10 11 12 I. Caelli Viia di n gafo, A.A. 2009/2010 34/44

Algoimo DFS - Un alo eempio z 3/6 2/9 1/10 11/16 F C 4/5 C 7/8 C 12/13 C 14/15 1/10 C z F 2/9 C 3/6 7/8 C 11/16 12/13 14/15 C z 4/5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 I. Caelli Viia di n gafo, A.A. 2009/2010 35/44

Algoimo DFS - Popieà Teoema del cammino bianco In na foea DFS, n nodo è dicendene di e e olo e al empo d[] (in ci la iia cope ), il eice è aggingibile da con n cammino conenene ecliamene nodi bianchi. d[]/ I. Caelli Viia di n gafo, A.A. 2009/2010 36/44

Algoimo DFS - Claificazione degli achi L algoimo DFS pò eee modificao in modo da effeae na claificazione degli achi. Ogni aco pò eee claificao in fnzione del coloe del eice che agginge, qando iene pecoo pe la pima ola: Achi bianchi. Qelli appaeneni a n albeo DFS. Achi gigi. Achi backad. Unicono de nodi gigi dane la iia DFS. Achi nei. Achi foad (e d[] < d[]) oppe coad (e d[] > d[]). Noa: in n gafo non dieo ci poono eee ambigià peché (, ) e (, ) ono lo eo aco. In al cao l aco iene claificao come l aco oienaa (, ) oppe (, ), a econda della diezione in ci iene pecoo pe la pima ola. I. Caelli Viia di n gafo, A.A. 2009/2010 37/44

Algoimo DFS - Claificazione degli achi Teoema Se G è n gafo non oienao, alloa ogni aco è n ee-edge oppe n backad-edge. Dimoazione. Sia (, ) n aco abiaio Spponiamo d[] < d[] (enza pedia di genealià) Alloa i eifica no di qei de cai: 1 (, ) iene iiao a paie da, con gigio e bianco. In al cao è n ee-edge. 2 (, ) iene iiao a paie da, con e enambi gigi. In al cao è n backad-edge. I. Caelli Viia di n gafo, A.A. 2009/2010 38/44

Algoimo DFS - Claificazione degli achi Lemma Un gafo dieo è aciclico e e olo e l algoimo DFS non deemina l eienza di backad-edge z Dimoazione. 1 =. Se (, ) è n aco all indieo, alloa è n anenao di nella foea DFS. Qindi, eie n cammino da a in G, e l aco backad (, ) complea il ciclo. 2 =. Si ppone che G abbia n ciclo c. Sia il pimo eice del ciclo ad eee copeo, e ia (, ) l aco che lo pecede nel ciclo. Al empo d[] i i nodi da a ono bianchi ( gigio). Pe il eoema dei cammini bianchi aà n dicendene di. Qindi, (, ) è neceaiamene n backad-edge. I. Caelli Viia di n gafo, A.A. 2009/2010 39/44

Odinameno opologico L algoimo DFS pò eee ao pe effeae n odinameno opologoco dei nodi di n gafo dieo aciclico (DAG - Diec Acclic Gaph). Odinameno opologico Un odinameno opologico di n DAG G = (V, E) è n odinameno lineae dei oi eici ale che, e G coniene n aco (, ), alloa compae pima di nell odinameno. Se il gafo conenee dei cicli, n odinameno di qeo ipo non aebbe poibile. I. Caelli Viia di n gafo, A.A. 2009/2010 40/44

Odinameno opologico 2 1 3 4 1 2 2 4 1 3 4 3 2 1 4 3 I. Caelli Viia di n gafo, A.A. 2009/2010 41/44

Odinameno opologico 1 TOPOLOGICALSORT(G) 2 Chiama DFS(G) p e c a l c o l a e i empi d i f i n e i i a f [ ] 3 p e o g n i e i c e 4 Appena l a i i a d i n nodo e finia, ineicilo 5 in ea a na lia concaenaa 6 Reiici la lia concaenaa dei nodi Spponendo che = 2 e Adj[] = 4 3 1 1 2 f[2] > f[1] > f[3] > f[4] 4 3 2 1 3 4 Noa: l odinameno opologico oeno aia a econda della ogene cela, e dall odine dei nodi nelle lie Adj I. Caelli Viia di n gafo, A.A. 2009/2010 42/44

Odinameno opologico Teoema T OP OLOGICAL SORT (G) podce n odinameno opologico di n gafo oienao aciclico G Dimoazione. È fficiene dimoae che pe ogni coppia di eici, V, e eie n aco (, ), alloa f[] < f[] Poiché il gafo è aciclico, non eiono backad-edge (achi gigi). Qindi (, ) pò eee: 1 n aco bianco (ee-edge). In al cao è bianco e diena dicendene di e, pe il eoema delle paenei, f[] < f[] 2 n aco neo (foad-edge oppe co-edge). In al cao è neo e f[] < f[] peché è già dienao neo pima di ae conclo la iia di. I. Caelli Viia di n gafo, A.A. 2009/2010 43/44

Odinameno opologico - Analii DF S(G) ichiede empo Θ( V + E ) L ineimeno di ognno dei V nodi nella lia ichiede empo coane. L odinameno opologico ichiede empo Θ( V + E ) I. Caelli Viia di n gafo, A.A. 2009/2010 44/44