La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Algoritmi e Strutture Dati (Mod. B) Algoritmi su grafi Ricerca in profondità (Depth-First Search) Parte II."— Transcript della presentazione:

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

2 Classificazione digli archi Sia G la foresta DF generata da DFS sul grafo G. Arco dalbero: gli archi dell foresta G, tali che larco (u,v) E se v è stato visitato esplorando larco (u,v). Arco di ritorno: gli archi (u,v) che connettono un vertice u con un antenato v nellalbero DF. ba c ef d ba c ef d b ac e f d

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

4 Classificazione digli archi Sia G la foresta DF generata da DFS sul grafo G. Arco in avanti: archi (u,v) non appartenenti allalbero DF che connettono larco u con un discendente v Arco di attraversamento (cross): tutti gli altri archi. Possono connettere vertici nello stesso albero DF (a patto che un vertice non sia antenato dellaltro nellalbero) o vertici in alberi DF differenti. ba c ef d b ac e f d

5 DFS per la classificazione digli archi ba c ef d b ac e f d DFS può essere usata per classificare gli archi di un grafo G. Si utilizza il colore del vertice che si raggiunge durante la visita dellarco (u,v): v è bianco: allora larco è un arco dalbero v è grigio: allora larco è un arco di ritorno v è nero: allora larco è un arco in avanti o un arco di attraversamento

6 DFS per la classificazione digli archi ba c ef d b ac e f d DFS può essere usata per classificare gli archi di un grafo G. Si utilizza il colore del vertice che si raggiunge durante la visita dellarco (u,v): v è nero: allora larco è un arco in avanti o un arco di attraversa- mento se inoltre d[u] < d[v] allora è un arco in avanti se d[v] < d[u] allora è un arco di attraversamento

7 Proprietà di DFS Teorema: Durante la DFS di un grafo non orientato G, ogni arco è un arco dellalbero o un arco di ritorno. Dimostrazione: Sia (u,v) un arco arbitrario di G e che valga d[u]< d[v]. Allora v deve venir visitato e processato prima che si finisca di processare u (v è nella lista di adia-cenza di u). Se larco (u,v) viene esplorato prima da u a v, allora diventa un arco dellalbero. Se larco (u,v) viene esplorato prima da v a u, allora diventa un arco di ritorno (u è ancora grigio quando larco viene esplorato per la prima volta).

8 Esercizi Dal libro di testo: Es Es Es Es Es (calcolo del grafo trasposto G T di G)

9 Applicazioni di DFS Due problemi: ¶ calcolare lordinamento topologico indotto da un grafo aciclico. · calcolare le componenti (fortemente) connes- se (CFC) di un grafo (non) orientato. Vedremo che entrambi i problemi possono essere risolti impiegando opportunamente lalgoritmo di DFS

10 Ordinamento topologico Definizione: Dato un grafo orientati aciclico G (un DAG), un ordinamento topologico su G è un ordinamento lineare dei suoi vertici tale che: se G contiene larco (u,v), allora u compare prima di v nellordinamento. Ordinamento dei vertici in un DAG tale che se esiste un percorso da u a v, allora u compare prima di v nellordinamento

11 Ordinamento topologico Ordinamento dei vertici in un DAG tale che se esiste un percorso da u a v, allora u compare prima di v nellordinamento Ci possono essere più ordinamenti topologici. u w y v x y x w v u vxwyu yw xv u u w v x y u v w y x xv yw u

12 Ordinamento topologico Problema: Fornire un algoritmo che dato un grafo orientato aciclico, ne calcloli e ritorni un ordina- mento topologico. Soluzioni: Soluzione diretta Soluzione che utilizza DFS

13 Ordinamento topologico: algoritmo I ¶ Trovare ogni vertice che non ha alcun arco incidente in ingresso · Stampare questo vertice e rimuoverlo, insieme ai suoi archi ¸ Ripetere la procedura finché tutti i vertici risultano rimossi.

14 Ordinamento topologico: algoritmo I y x w v output: u y x w v u output: y x v output: u w x v output: u w y x output: u w y voutput: u w y v x

15 Esercizio Es : Terminare lesercizio fornendo un algoritmo che in tempo O(V+E) computa lOrdinamento Topologico di un grafo G secondo lidea appena illustrata.

16 Ordinamento topologico Teorema: Un grafo orientato è aciclico se e solo se DFS su G non trova alcun arco di ritorno. Dimostrazione: se: Supponiamo che G contenga un ciclo c. Allora DFS necessariamente troverà un arco di ritorno. Infatti, se v è il primo vertice che viene scoperto in c, e (u,v) è larco che lo precede in c, allora al tempo d[v] cè un percorso bianco da v a u. Per il teorema del percorso bianco, u diventa un di- scendente di v nella foresta DF. Perciò, (u,v) deve essere un arco di ritorno.

17 Ordinamento topologico Dimostrazione: solo se: Supponiamo che DFS incontri un arco di ritorno (u,v). Ma allora il vertice v è un antenato di u nella foresta DF. Quindi esiste un percorso da v a u in G, e larco di ritorno (u,v) completa il ciclo, quindi G non è aciclico. Teorema: Un grafo orientato è aciclico se e solo se DFS su G non trova alcun arco di ritorno.

18 Ordinamento topologico: algoritmo II Ordinamento-Topologico(G: grafo) 1 DFS(G) per calcolare i tempi f[v] 2 Ogni volta che un vertice è termina- to, aggiungerlo in testa ad una lista 3 Ritorna la lista di vertici

19 Ordinamento topologico: algoritmo II y x w v u y 3/4 x 7/8 w 2/5 v 6/9 u 1/10 yx wv u output: u v x w y

20 Correttezza dellalgoritmo II Teorema: Ordinamento-Topologico(G) produce cor- rettamente lordinamento topologico di un grafo aciclico G. Dimostrazione: Dimostriamo che, dopo DFS, per ogni coppia di vertici u e v, se (u,v) E, allora f[v]


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

Presentazioni simili


Annunci Google