Algoritmi di visita di un grafo



Documenti analoghi
Depth-first search. Visita in profondità di un grafo Algoritmo Esempio Complessità dell algoritmo Proprietà Ordinamento topologico

Grafo diretto Università degli Studi di Milano

Appunti di Algoritmi e Strutture Dati. Grafi. Gianfranco Gallizia

Visita di grafi. Vittorio Maniezzo - Università di Bologna

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

Alberi binari. Ilaria Castelli A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione

Grafi. Moreno Marzolla Dip. di Informatica Scienza e Ingegneria Università di Bologna. moreno.marzolla@unibo.it

Esempi. non. orientato. orientato

Esercizi Capitolo 6 - Alberi binari di ricerca

Algoritmi e strutture dati. Codici di Huffman

Sommario. Rappresentazione dei grafi. Ordinamento topologico. Visita in ampiezza Visita in profondità

Visite in Grafi BFS e DFS

Che cosa c è nella lezione. Questa lezione si occupa di teoria dei grafi: la rappresentazione dei grafi. le visite dei grafi

Ricerca non informata in uno spazio di stati

Algoritmi e Strutture di Dati II 2. Visite di grafi

Sequenziamento a minimo costo di commutazione in macchine o celle con costo lineare e posizione home (In generale il metodo di ottimizzazione

Visite in Grafi BFS e DFS. PDF created with FinePrint pdffactory trial version

STRUTTURE NON LINEARI

40 Algoritmi sui Grafi

Grafi: cammini minimi

Alcuni Preliminari. Prodotto Cartesiano

IL PROBLEMA DELLO SHORTEST SPANNING TREE

Algoritmi e Strutture Dati

I NUMERI NATURALI. Per cominciare impariamo a leggere alcuni numeri naturali e dopo prova a scriverli nella tua lingua:

Alberi binari di ricerca

Esercizi di Matematica Finanziaria

Algoritmi e Strutture Dati Grafi. Daniele Loiacono

Algoritmi di Visita di Grafi. Damiano Macedonio

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

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

Algoritmi e Strutture Dati

Quanti centesimi mancano per avere 1 unità se ho 30 centesimi?... E se ne ho 35?... E se ne ho 73?... 0,5 1,4 3,2 7,4 0,7 0,78 1,12 1,06

Sistemi Interconnessi

Algoritmi e Strutture Dati (Mod. B) Algoritmi su grafi Ricerca in profondità (Depth-First Search) Parte II

TSP con eliminazione di sottocicli

Introduzione. Algoritmi Link-State. Principi. Adiacenze OSPF (2) Adiacenze OSPF (1) Open Shortest Path First Protocol (OSPF)

Alberi auto-aggiustanti

LEZIONE 23. Esempio Si consideri la matrice (si veda l Esempio ) A =

Grafi: ordinamento topologico

1. Considerazioni generali

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo

Ricerca Operativa. Claudio Arbib Universitàdi L Aquila. Problemi combinatorici (Gennaio 2006)

Esercitazione 7. Grafi. Rappresentazione e algoritmi di visita

Plate Locator Riconoscimento Automatico di Targhe

Note su quicksort per ASD (DRAFT)

Dimensione di uno Spazio vettoriale

Struttura elettronica delle molecole. Teoria quantistica del legame chimico

La struttura dati ad albero binario

Parte 2. Determinante e matrice inversa

TSP con eliminazione di sottocicli

uscente entrante adiacente Figure B.2 (a) (b) (c) incident from leaves incident to enters incident on adjacent degree isolated

Minimo Albero Ricoprente

Il Metodo Branch and Bound

1. PRIME PROPRIETÀ 2

b i 1,1,1 1,1,1 0,1,2 0,3,4

Teoria dei grafi: ricerca di percorsi a minimo costo Ing. Valerio Lacagnina

Intelligenza Artificiale. Metodi di ricerca

Ricerca Operativa A.A. 2007/2008

Esercizi Capitolo 5 - Alberi

Analisi di una Rete Sociale

Grafi. V = {a, b, c, d} E = {(a, b), (a, c), (c, a), (d, d), (b, d)}

2.3.4 Pianificazione di progetti

Programmazione dinamica

Parte 3: Gestione dei progetti, Shop scheduling

Progetto di Reti di Telecomunicazione Modelli in Programmazione Lineare Problemi di flusso

PROVA FINALE V. AULETTA G. PERSIANO ALGORITMI II - -MAGIS INFO

Algoritmi. Matricole dispari Prof.ssa Anselmo. Pre-appello del 15 Gennaio Attenzione:

Macchine sequenziali

4. Operazioni elementari per righe e colonne

CUTPOINTS BRIDGES BLOCKS BLOCK GRAPHS - CUTPOINT GRAPHS

LABORATORIO DI ALGORITMI E STRUTTURE DATI A-L. Ingegneria e scienze informatiche Cesena A.A: 2016/2017 Docente: Greta Sasso

Introduzione Ordini parziali e Reticoli Punti fissi

Funzioni in C. Violetta Lonati

Controlli automatici

Tecniche Reticolari. Problema: determinare l istante di inizio di ogni attività in modo che la durata complessiva del progetto sia minima

Grafi: visita generica

Operazioni di Comunicazione di base. Cap.4

Il principio di induzione e i numeri naturali.

Grafi: visita in profondita

GESTIONE INFORMATICA DEI DATI AZIENDALI

Sommario della lezione

Soluzione dell esercizio del 2 Febbraio 2004

IL SISTEMA INFORMATIVO

risulta (x) = 1 se x < 0.

execute reject delay

Macchine di Turing. a n B B. Controllo Finito

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

A i è un aperto in E. i=1

24 - Strutture simmetriche ed antisimmetriche

CPM - PERT CPM - PERT. Rappresentazione di un progetto. Gestione di un progetto. Critical Path Method Project Evaluation and Review Technique

Calcolatori Elettronici

Ricorsione. Rosario Culmone. - p. 1/13

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

Ricorsione in SQL-99. Introduzione. Idea di base

Algoritmi e Strutture Dati

Transcript:

Algoritmi di isita di n grafo Ilaria Castelli castelli@dii.nisi.it Uniersità degli Stdi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/2010 I. Castelli Visita di n grafo, A.A. 2009/2010 1/44

Grafi Visita in ampiezza Visita in profondità Ordinamento topologico I. Castelli Visita di n grafo, A.A. 2009/2010 2/44

Scopo e tipi di isita di n grafo Visita Una isita (o attraersamento) di n grafo G permette di esaminare i nodi e gli archi di G in modo sistematico. Esistono arie tipologie di isita, con dierse proprietà. In particolare: 1 Visita in ampiezza (BFS = Breadth First Search) 2 Visita in profondità (DFS = Depth First Search) I. Castelli Visita di n grafo, A.A. 2009/2010 3/44

Breadth First Search Visita in ampiezza Dato n grafo G = (V, E) e n nodo s chiamato sorgente, la isita in ampiezza esplora gli archi di G per scoprire ttti i nodi raggingibili a partire da s La isita BFS calcola la distanza (nmero minimo di archi) tra s e ogni ertice da esso raggingibile La isita consente di definire n albero BFS, con radice s, contenente ttti i nodi raggingibili Nell albero BFS il cammino da s a n nodo corrisponde a n cammino minimo (contenente il nmero minimo di archi) La isita BFS si pò applicare sia ai grafi diretti che a qelli non diretti I. Castelli Visita di n grafo, A.A. 2009/2010 4/44

Breadth First Search La isita in ampiezza esplora i nodi del grafo partendo da qelli a distanza 1 da s. Poi isita qelli a distanza 2, e così ia. L algoritmo isita ttti i ertici ad n liello k prima di isitare qelli a liello k + 1. distanza = 3 distanza = 2 r distanza = 1 h s i t Si genera n albero Si isitano nodi ia ia più distanti dalla sorgente x y I. Castelli Visita di n grafo, A.A. 2009/2010 5/44

Breadth First Search Per tenere traccia del progresso della isita, l algoritmo BFS associa delle flag ai nodi. Spponiamo di poter colorare i nodi di bianco, grigio o nero. All inizio ttti i nodi sono bianchi e, sccessiamente, possono dientare grigi e, infine, neri. Un nodo iene scoperto la prima olta che iene incontrato drante la isita e, in tale istante, cessa di essere bianco. La distinzione tra nodi grigi e neri esiste affinché la isita proceda in ampiezza. In sostanza, la distinzione è la segente: Bianchi: non ancora scoperti Grigi: appena scoperti; sono la frontiera tra nodi scoperti e non. I nodi adiacenti ad n nodo grigio possono essere bianchi. Neri: scoperti. Ttti i nodi adiacenti ad n nodo nero sono stati scoperti. I. Castelli Visita di n grafo, A.A. 2009/2010 6/44

Algoritmo BFS - Strttre dati Le strttre dati sate dall algoritmo sono le segenti: Liste di adiacenza Adj Adj[] è la lista dei nodi adiacenti a. Array color color[] contiene il colore del nodo Array d d[] contiene la distanza di dal nodo sorgente s. Viene inizializzata a infinito. Array p p[] contiene il predecessore del nodo nell albero BFS Coda Q contiene i nodi grigi I. Castelli Visita di n grafo, A.A. 2009/2010 7/44

Algoritmo BFS 1 BFS(G, s ) 2 f o r o g n i nodo i n V[G] { s } / i n i z i a l i z z a z i o n e / 3 c o l o r [ ] = WHITE 4 d [ ] = i n f i n i t y 5 p [ ] = NIL 6 7 c o l o r [ s ] = GRAY / i s i t o l a s o r g e n t e / 8 d [ s ] = 0 9 p [ s ] = NIL 0 Q = { s } 1 h i l e Q!= empty 2 = head [Q] / nodo da e s p a n d e r e / 3 f o r o g n i nodo i n Adj [ ] / i s i t o i n o d i a d i a c e n t i / 4 i f c o l o r [ ] = WHITE / s e e b i a n c o i e n e s c o p e r t o / 5 then c o l o r [ ] = GRAY 6 d [ ] = d [ ] + 1 7 p [ ] = 8 ENQUEUE(Q, ) / i n s e r i t o n e l l a coda Q / 9 DEQUEUE(Q) / t o l t o d a l l a coda : e g i a s t a t o e spanso / 0 c o l o r [ ] = BLACK I. Castelli Visita di n grafo, A.A. 2009/2010 8/44

Algoritmo BFS - Esempio r s x y t y s t t x r t x y x r s r s x y t r s x y t Adj p d r s t x y NIL 0 0 s 1 1 s 1 2 2 2 r 2 t 3 2 3 x 1 3 3 Q = {} 2 I. Castelli Visita di n grafo, A.A. 2009/2010 9/44

Algoritmo BFS - Albero BFS La isita BFS consente di definire n albero BFS. all inizio contiene solo s qando n nodo bianco iene scoperto, scorrendo la lista di adiacenza di n nodo, allora l arco (, ) e stesso engono agginti all albero p(r) = s p(s) = NIL p(t) = p() = t r s t 1 0 2 3 r s 0 1 1 2 1 2 3 x y p() = r p() = s p(x) = p(y) = x 2 x 2 t 2 y 3 3 I. Castelli Visita di n grafo, A.A. 2009/2010 10/44

Breadth First Search - Analisi Analisi del tempo di eseczione s n grafo G = (V, E) Il tempo necessario per l inizializzazione è O( V ) Ogni nodo raggingibile iene isitato na olta Le operazioni di inserimento e rimozione dalla coda costano O(1), qindi il tempo totale necessario per le operazioni slla coda è O( V ) La lista di adiacenza di n nodo iene scorsa na sola olta, qindi in totale il tempo è O( E ) Il tempo totale richiesto dall algoritmo BFS si ottiene sommando il tempo per l inizializzazione e qello necessario per isitare i nodi: O( V + E ) I. Castelli Visita di n grafo, A.A. 2009/2010 11/44

Breadth First Search - Cammini minimi Distanza minima Si definisce distanza minima δ(s, ) da s a, il nmero minimo di archi di n cammino dal nodo s al nodo δ(s, ) 0 δ(s, ) = se non è raggingibile partendo da s Cammino minimo Un cammino di lnghezza δ(s, ) da s a si dice cammino minimo. Nota: possono esistere più cammini minimi tra de nodi BFS La isita BFS calcola la distanza minima δ(s, ) di ogni nodo raggingibile da s Nell albero BFS il cammino da s ad n nodo è n cammino minimo I. Castelli Visita di n grafo, A.A. 2009/2010 12/44

Breadth First Search - Proprietà Lemma Dato n grafo G = (V, E) diretto o non diretto e n nodo s V qalsiasi, allora per ogni arco (, ) E si ha δ(s, ) δ(s, ) + 1 Dimostrazione Se non è raggingibile da s, allora δ(s, ) = Se è raggingibile da s, allora anche è raggingibile. Il cammino minimo da s a non pò essere più lngo del cammino minimo da s a, più l arco (, ) I. Castelli Visita di n grafo, A.A. 2009/2010 13/44

Breadth First Search - Proprietà Lemma Sia G = (V, E) n grafo diretto o non diretto e s V n nodo sorgente qalsiasi, a partire dal qale è stato esegito l algoritmo BFS. Allora per ogni nodo V si ha d[] δ(s, ) Dimostrazione Per indzione: d[s] = 0 = δ(s, s) e, per qalsiasi nodo V {s}, ale d[] = δ(s, ) Dato n nodo scoperto drante l esplorazione di n nodo, per ipotesi indttia ale d[] δ(s, ). d[] }{{} = d[] + 1 }{{} algoritmo ipotesi indttia δ(s, ) + 1 δ(s, ) }{{} lemma precedente I. Castelli Visita di n grafo, A.A. 2009/2010 14/44

Breadth First Search - Proprietà Lemma Spponendo che drante l eseczione della ricerca BFS s n grafo G = (V, E), la coda Q contenga i nodi < 1,..., r >, doe 1 = head[q] e r = tail[q], allora d[ r ] d[ 1 ] + 1 e d[ i ] d[ i+1 ], i = 1,..., r 1 La differenza tra le distanze da s dei nodi presenti nella coda in n certo momento è al più 1 Un nodo iene inserito nella coda (dientando r+1 ) qando il nodo in testa, 1, iene esplorato d[ r+1 ] = d[] = d[ 1 ] + 1 d[ r ] d[ 1 ] + 1 = d[] = d[ r+1 ] I. Castelli Visita di n grafo, A.A. 2009/2010 15/44

Breadth First Search - Proprietà Proposizione I nodi che entrano nella coda Q sono ttti e soli i nodi tali che δ(s, ) <, cioè ttti i nodi raggingibili da s Dimostrazione 1 entra in Q = δ(s, ) < Si procede per indzione sll i-esima iterazione dell operazione ENQUEUE se i = 0, solo s è nella coda: δ(s, s) = 0 < se i > 0, spponiamo che l ipotesi indttia sia era per ogni iterazione k < i. Al passo i si isita Adj[], con = head[q], e i nodi bianchi engono inseriti in Q. Per ipotesi indttia δ(s, ) <. Poiché esiste l arco (, ): δ(s, ) δ(s, ) + 1 < I. Castelli Visita di n grafo, A.A. 2009/2010 16/44

Breadth First Search - Proprietà 2 entra in Q = δ(s, ) < Si procede per indzione s δ(s, ) = k se δ(s, ) = 0 è ero: = s se δ(s, ) = k > 0, per ipotesi indttia si ha che per ogni tale che δ(s, ) < k, è già entrato in coda. Poiché δ(s, ) <, esiste n cammino < 0,..., i 1, i > da s a, con 0 = s e i =. s 0 (i 1) δ(s, i 1 ) = k 1 e i 1 è nella coda per ipotesi indttia. Qando errà isitata Adj[ i 1 ] errà scoperto e: se è bianco entra in coda non pò essere grigio o nero, altrimenti sarebbe già entrato in coda, perché arrebbe δ(s, ) < k! I. Castelli Visita di n grafo, A.A. 2009/2010 17/44

Breadth First Search - Albero BFS Albero BFS L array p definisce n sottografo dei predecessori di G. In particolare, si tratta di n albero, T p : T p = (V p, E p ) V p = { V : p[] NIL} {s} E p = {(p[], ) E : V p {s}} Una olta esegita la ricerca BFS, la segente procedra stampa il cammino minimo da s a 1 PRINT PATH(G, s, ) 2 i f = s 3 then p r i n t s 4 e l s e i f p [ ] = NIL 5 then p r i n t "non esiste n cammino da s a " 6 e l s e PRINT PATH(G, s, p [ ] ) 7 p r i n t I. Castelli Visita di n grafo, A.A. 2009/2010 18/44

Depth First search Visita in profondità Dato n grafo G = (V, E) ed n nodo s, detto nodo sorgente, la isita depth first esplora il grafo andando il più possibile in profondità. Dato n nodo appena scoperto, la isita prosege a partire da si soi archi che ancora non sono stati esplorati Qando si sono esplorati ttti gli archi del nodo, si torna al nodo dal qale è stato scoperto, e si esplorano i soi lteriori archi non ancora esplorati (se ce ne sono) Si prosege finchè non engono scoperti ttti i nodi raggingibili da s Se i sono ancora dei nodi non scoperti, no di qesti iene adottato come na noa sorgente, e la isita riprende a partire da esso L algoritmo termina qando ttti i nodi sono stati scoperti I. Castelli Visita di n grafo, A.A. 2009/2010 19/44

Depth First Search Per tenere traccia del progresso della isita, anche l algoritmo DFS associa delle flag ai nodi. Di noo, si sppone di colorare i nodi di bianco, grigio o nero. All inizio ttti i nodi sono bianchi e, sccessiamente, possono dientare grigi e, infine, neri. Un nodo iene scoperto la prima olta che iene incontrato drante la isita e, in tale istante, cessa di essere bianco. La distinzione tra nodi grigi e neri è necessaria affinché la isita proceda in profondità. La distinzione è la segente: Bianchi: non ancora scoperti Grigi: sono stati scoperti, ma l esplorazione della loro lista di adiacenza non è ancora terminata. Neri: l esplorazione della loro lista di adiacenza è completata. I. Castelli Visita di n grafo, A.A. 2009/2010 20/44

Algoritmo DFS - Strttre dati Le strttre dati sate dall algoritmo sono le segenti: Liste di adiacenza Adj Adj[] è la lista dei nodi adiacenti a. Array color color[] contiene il colore del nodo Array p p[] contiene il predecessore del nodo nella foresta DFS Array d d[] è n timestamp che contiene il momento in ci è stato scoperto. Array f f[] è n timestamp che contiene il momento in ci si è conclsa la isita di, cioè si è finito di esaminare al sa lista di adiacenza Adj[]. I. Castelli Visita di n grafo, A.A. 2009/2010 21/44

Algoritmo DFS - Strttre dati Nota: Il nodo è bianco prima di d[] grigio tra d[] e f[] nero dopo f[] Oiamente si ha d[] < f[], V I timestamp sono nmeri interi compresi tra 1 e 2 V, poiché ogni nodo iene scoperto esattamente na olta, e si finisce di esplorarlo esattamente na olta. I. Castelli Visita di n grafo, A.A. 2009/2010 22/44

Algoritmo DFS 1 DFS(G, s ) 2 f o r o g n i e r t 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 r [ ] = WHITE 4 p [ ] = NIL 5 time = 0 6 f o r o g n i e r t i c e i n V[G] 7 i f c o l o r [ ] = WHITE 8 then DFS VISIT ( ) / i s i t a o g n i nodo non s c o p e r t o / 1 DFS VISIT ( ) 2 c o l o r [ ] = GRAY 3 d [ ] = time / tempo d i i n i z i o i s i t a l i s t a d i a d i a c e n z a / 4 time = time + 1 5 f o r o g n i e r t i c e i n Adj [ ] 6 i f c o l o r [ ] = WHITE 7 then p [ ] = 8 DFS VISIT ( ) / i s i t a s b i t o n o d i non s c o p e r t i / 9 c o l o r [ ] = BLACK / f i n i t o d i i s i t a r e i n o d i a d i a c e n t i / 0 f [ ] = time 1 time = time + 1 I. Castelli Visita di n grafo, A.A. 2009/2010 23/44

Algoritmo DFS - Esempio Adj x y y z x x y z y x z z I. Castelli Visita di n grafo, A.A. 2009/2010 24/44

Algoritmo DFS - Esempio 1/ 1/ 2/ 1/ 2/ 3/ x y z x y z x y z 1/ 2/ 1/ 2/ 1/ 2/ B B 4/ 3/ x y z 4/ 3/ x y z 4/5 3/ x y z 1/ 2/ 1/ 2/7 1/ 2/7 B B F B 4/5 3/6 4/5 3/6 4/5 3/6 x y z x y z x y z I. Castelli Visita di n grafo, A.A. 2009/2010 25/44

Algoritmo DFS - Esempio 1/8 2/7 1/8 2/7 9/ 1/8 2/7 9/ F B F B F B C 4/5 3/6 4/5 3/6 4/5 3/6 x y z x y z x y z 1/8 2/7 9/ 1/8 2/7 9/ 1/8 2/7 9/ F B C F B C F B C 4/5 3/6 10/ x y z 4/5 3/6 10/ x y z B 4/5 3/6 10/11 x y z B 1/8 2/7 9/12 F B C 4/5 3/6 10/11 x y z B I. Castelli Visita di n grafo, A.A. 2009/2010 26/44

Foresta DFS Allo stesso modo della ricerca BFS, nella ricerca DFS, n nodo iene scoperto esplorando la lista di adiacenza di n nodo già scoperto. L array p tiene traccia del predecessore di ogni nodo scoperto: p[] = Foresta DFS L array p definisce n sottografo dei predecessori di G. In particolare, si tratta di na foresta, F p : F p = (V, E p ) E p = {(p[], ) : V e p[] NIL} Il sottografo dei predecessori è na foresta depth first, costitita da più alberi depth first. I. Castelli Visita di n grafo, A.A. 2009/2010 27/44

Foresta DFS - Classificazione degli archi Gli archi del grafo originario engono classificati in: Tree-edge. Archi della foresta DFS. Forard-edge. Archi in aanti. Archi non appartenenti alla foresta DFS, che anno da n ertice ad n so sccessore nella foresta DFS. Qando engono percorsi drante l algoritmo DFS, collegano de nodi già scoperti. Backard-edge. Archi all indietro. Archi non appartenenti alla foresta DFS, che anno da n ertice ad n so antenato nella foresta DFS. Archi del grafo che, qando engono percorsi drante l algoritmo DFS, collegano de nodi già scoperti. Cross-edge Archi di attraersamento. Ttti gli altri archi. Collegano de nodi che non hanno na relazione di discendenza l no dall altro. I. Castelli Visita di n grafo, A.A. 2009/2010 28/44

Foresta DFS p 1/8 9/12 1/8 2/7 9/12 F B C 4/5 3/6 10/11 x y z B x y z NIL NIL y F B 2/7 3/6 4/5 y x C 10/11 z B La strttra degli alberi DFS rispecchia esattamente la strttra delle chiamate ricorsie alla procedra DF S V ISIT : = p[] se e solo se DF S V ISIT () è stata chiamata drante lo scorrimento della lista di adiacenza di. Nota: gli archi scenti ed entranti sllo stesso nodo (self-loop), engono considerati backard-edge. I. Castelli Visita di n grafo, A.A. 2009/2010 29/44

Algoritmo DFS - Analisi 1 Nella procedra DF S ci sono de cicli, che engono esegiti Θ( V ) 2 La procedra DF S V ISIT iene richiamata esattamente na olta per ogni nodo V 3 Drante l eseczione di DF S V ISIT (), il ciclo nelle linee 5-8 iene esegito Adj[] olte 4 Poiché Adj[] = Θ( E ) V il costo totale per l eseczione del ciclo è Θ( E ) Il tempo totale di eseczione è Θ( V + E ) I. Castelli Visita di n grafo, A.A. 2009/2010 30/44

Algoritmo DFS - Proprietà Teorema delle parentesi In na isita in profondità di n grafo (diretto o non diretto) G = (V, E), per ogni coppia di nodi e, definiamo gli interalli A = [d[], f[]] B = [d[], f[]] Allora, na e na sola delle segenti condizioni è era: 1 A B = 2 L interallo A è interamente inclso nell interallo B, e è n discendente di in n albero DFS 3 L interallo B è interamente inclso nell interallo A, e è n discendente di in n albero DFS I. Castelli Visita di n grafo, A.A. 2009/2010 31/44

Algoritmo DFS - Proprietà Dimostrazione 1 Caso 1. d[] < d[]. Ci sono de sottocasi: 1 d[] < f[] iene scoperto prima di Qando si scopre la isita di non è stata completata ( è grigio) Ciò ol dire che è discendente di Poiché è stato scoperto più recentemente di, la isita di dee completarsi prima di tornare a : f[] < f[] QUindi l interallo A = [d[], f[]] è completamente contento in B = [d[], f[]] d[] d[] f[] f[] I. Castelli Visita di n grafo, A.A. 2009/2010 32/44

Algoritmo DFS - Proprietà 1 2 d[] > f[] dienta nero prima che enga scoperto Qindi, qando iene scoperto la isita di è già stata completata d[] < f[] e d[] < f[] Qindi gli interalli A = [d[], f[]] e B = [d[], f[]] sono disginti d[] f[] d[] f[] 2 Caso 2. d[] > d[]: è simmetrico, basta scambiare il rolo di e Corollario (consege dal teorema delle parentesi) Un nodo è n discendente di n nodo in n albero della foresta DFS per n grafo (diretto o non diretto) G se e solo se d[] < d[] < f[] < f[] I. Castelli Visita di n grafo, A.A. 2009/2010 33/44

Algoritmo DFS - Proprietà 1/8 9/12 F B 2/7 3/6 y C 10/11 z B y x z 4/5 x 1 2 3 4 5 6 7 8 9 10 11 12 I. Castelli Visita di n grafo, A.A. 2009/2010 34/44

Algoritmo DFS - Un altro esempio y z s t 3/6 2/9 1/10 11/16 B F C B 4/5 C 7/8 C 12/13 C 14/15 x B s 1/10 C z F 2/9 C y 3/6 7/8 C t 11/16 B 12/13 14/15 C y x s z t x 4/5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 I. Castelli Visita di n grafo, A.A. 2009/2010 35/44

Algoritmo DFS - Proprietà Teorema del cammino bianco In na foresta DFS, n nodo è discendente di se e solo se al tempo d[] (in ci la isita scopre ), il ertice è raggingibile da con n cammino contenente esclsiamente nodi bianchi. d[]/ I. Castelli Visita di n grafo, A.A. 2009/2010 36/44

Algoritmo DFS - Classificazione degli archi L algoritmo DFS pò essere modificato in modo da effettare na classificazione degli archi. Ogni arco pò essere classificato in fnzione del colore del ertice che ragginge, qando iene percorso per la prima olta: Archi bianchi. Qelli appartenenti a n albero DFS. Archi grigi. Archi backard. Uniscono de nodi grigi drante la isita DFS. Archi neri. Archi forard (se d[] < d[]) oppre crossard (se d[] > d[]). Nota: in n grafo non diretto ci possono essere ambigità perché (, ) e (, ) sono lo stesso arco. In tal caso l arco iene classificato come l arco orientata (, ) oppre (, ), a seconda della direzione in ci iene percorso per la prima olta. I. Castelli Visita di n grafo, A.A. 2009/2010 37/44

Algoritmo DFS - Classificazione degli archi Teorema Se G è n grafo non orientato, allora ogni arco è n tree-edge oppre n backard-edge. Dimostrazione. Sia (, ) n arco arbitrario Spponiamo d[] < d[] (senza perdita di generalità) Allora si erifica no di qesti de casi: 1 (, ) iene isitato a partire da, con grigio e bianco. In tal caso è n tree-edge. 2 (, ) iene isitato a partire da, con e entrambi grigi. In tal caso è n backard-edge. I. Castelli Visita di n grafo, A.A. 2009/2010 38/44

Algoritmo DFS - Classificazione degli archi Lemma Un grafo diretto è aciclico se e solo se l algoritmo DFS non determina l esistenza di backard-edge B x y z Dimostrazione. 1 =. Se (, ) è n arco all indietro, allora è n antenato di nella foresta DFS. Qindi, esiste n cammino da a in G, e l arco backard (, ) completa il ciclo. 2 =. Si sppone che G abbia n ciclo c. Sia il primo ertice del ciclo ad essere scoperto, e sia (, ) l arco che lo precede nel ciclo. Al tempo d[] ttti i nodi da a sono bianchi ( grigio). Per il teorema dei cammini bianchi sarà n discendente di. Qindi, (, ) è necessariamente n backard-edge. I. Castelli Visita di n grafo, A.A. 2009/2010 39/44

Ordinamento topologico L algoritmo DFS pò essere sato per effettare n ordinamento topologoco dei nodi di n grafo diretto aciclico (DAG - Direct Acyclic Graph). Ordinamento topologico Un ordinamento topologico di n DAG G = (V, E) è n ordinamento lineare dei soi ertici tale che, se G contiene n arco (, ), allora compare prima di nell ordinamento. Se il grafo contenesse dei cicli, n ordinamento di qesto tipo non sarebbe possibile. I. Castelli Visita di n grafo, A.A. 2009/2010 40/44

Ordinamento topologico 2 1 3 4 1 2 2 4 1 3 4 3 2 1 4 3 I. Castelli Visita di n grafo, A.A. 2009/2010 41/44

Ordinamento topologico 1 TOPOLOGICAL SORT(G) 2 Chiama DFS(G) p e r c a l c o l a r e i tempi d i f i n e i s i t a f [ ] 3 p e r o g n i e r t i c e 4 Appena l a i s i t a d i n nodo e finita, inseriscilo 5 in testa a na lista concatenata 6 Restitisci la lista concatenata dei nodi Spponendo che s = 2 e Adj[s] = 4 3 1 1 2 f[2] > f[1] > f[3] > f[4] 4 3 2 1 3 4 Nota: l ordinamento topologico ottento aria a seconda della sorgente scelta, e dall ordine dei nodi nelle liste Adj I. Castelli Visita di n grafo, A.A. 2009/2010 42/44

Ordinamento topologico Teorema T OP OLOGICAL SORT (G) prodce n ordinamento topologico di n grafo orientato aciclico G Dimostrazione. È sfficiente dimostrare che per ogni coppia di ertici, V, se esiste n arco (, ), allora f[] < f[] Poiché il grafo è aciclico, non esistono backard-edge (archi grigi). Qindi (, ) pò essere: 1 n arco bianco (tree-edge). In tal caso è bianco e dienta discendente di e, per il teorema delle parentesi, f[] < f[] 2 n arco nero (forard-edge oppre cross-edge). In tal caso è nero e f[] < f[] perché è già dientato nero prima di aer conclso la isita di. I. Castelli Visita di n grafo, A.A. 2009/2010 43/44

Ordinamento topologico - Analisi DF S(G) richiede tempo Θ( V + E ) L inserimento di ognno dei V nodi nella lista richiede tempo costante. L ordinamento topologico richiede tempo Θ( V + E ) I. Castelli Visita di n grafo, A.A. 2009/2010 44/44