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 III.

Presentazioni simili


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

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

2 Applicazioni di DFS Due problemi: 4 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

3 Connettività Un vertice u si dice connesso ad un vertice v in un grafo G se esiste un percorso da u a v in G. Un grafo (non) orientato G si dice (fortemente) connesso se ogni coppia di vertici sono connessi. Altrimenti, G è sconnesso. a b c d e G a b c d e G f g

4 Verifica della connettività

5

6 Per testare se un grafo non orientato è connesso possiamo: ¶ usare lalgortmo DFS · il grafo è connesso se e solo se una chiamata di DFS raggiungerà tutti i vertici. In effetti una chiamata di DFS-Visita raggiungerà tutti i vertici contenuti esattamente in una componente connessa. Perché? Se cè più di un vertice u con pred[u] = NIL il grafo non può essere connesso.

7 Componenti connesse a b c d e G f g a c e H1 b d f g H3? b d f g H2 Un sottografo massimale connesso di un grafo non orientato G si dice componente connessa di G. Un sottografo connesso H di G è massimale se non si possono aggiungere ad H altri vertici o archi in modo che lH risultante sia ancora un sottografo connesso di G.

8 Esercizio Es : Mostrare che DFS su un grafo non orientato G può essere usata per identificare le Componenti Con- nesse e che la foresta DF contiene tanti alberi quante CC. Modificare DFS in modo che ogni vertice sia etichettato con cc[v] tra 1 e k (k numero di CC) in modo che cc[u]=cc[v] se e solo se u e v se appartengono alla stessa CC.

9 Componenti fortemente connesse a b c d e G f g a c e H1 b d f H2 Un sottografo massimale fortemente connesso di un grafo orientato G si dice componente fortemente connessa (CFC) di G. Un sottografo fortemente connesso H di G è massimale se non si possono aggiungere ad H altri vertici o archi in modo che lH risultante sia ancora un sottografo fortemente connesso di G. H3 g

10 Proprietà delle CFC Teorema 1: Se due vertici compaiono nella stessa componente fortemente connessa, allora nessun per- corso tra i due vertici esce da quella componente. Dimostrazione: Siano u e v due vertici nella stessa componente fortemente connessa. Esistono percorsi sia da v a u che da u a v. Sia w un vertice lungo qualche percorso u w v. Poiché cè un percrorso v u, u è raggiungibile da w tramite w v u. Quindi w e u sono nella stessa componente fortemente connessa. Poiché w è stato scelto arbitrario, il teorema segue.

11 Proprietà delle CFC a v u Componente Fortemente Connessa w b

12 Proprietà delle CFC w v u Componente Fortemente Connessa a b

13 Proprietà delle CFC Teorema 2: In ogni DFS, tutti i vertici nella stessa componente fortemente connessa compaiono nello stesso albero DF. Dimostrazione: Sia r il primo vertice di una componente fortemente connessa (CFC), visitato da DFS. Poiché è il primo, tutti gli altri vertici nella CFC devono essere ancora bianchi. Perché? Esiste quindi un percorso da r a tutti gli altri vertici nella CFC. Poiché questi percorsi non escono mai dalla CFC di r (teorema precedente), tutti i vertici dei percorsi sono bianchi. Quindi per il teorema de percorso bianco, ogni vertice nella CFC sarà un discendente di r nellalbero DF.

14 Proprietà delle CFC a z v u Componente Fortemente Connessa b Alcuni alberi DF z v u b v u z b u z v b

15 Proprietà delle CFC Definizione: Dato un vertice u di un grafo G, lavo di u, in simboli (u), è il vertice w rag- giungibile da u che viene terminato per ultimo in una DFS del grafo G, cioè: (u)= w tale che e f [w] è massimo Notate che è possibile che sia (u)= u, perché u è raggiungibile da se stesso e quindi vale anche f [u] f [ (u)] Inoltre si può dimostrare che ( (u)) = (u)

16 Proprietà delle CFC Si può dimostrare che ( (u)) = (u) u v implica che f[ (v)] f[ (u)] infatti linsieme {w: v w} {w: u w}, e il tempo di terminazione (f []) dellavo è il massimo tra tutti i vertici raggiungibili. ma poichè u (u) allora f[ ( (u))] f[ (u)] e per quello che abbiamo visto nel lucido precedente vale anche f[ (u)] f[ ( (u))] quindi risulta che f[ (u)] = f[ ( (u))] ma allora ( (u)) = (u), perché due vertici con lo stesso tempo di terminazione in DFS non possono che essere lo stesso vertice.

17 Proprietà delle CFC Dimostrazione: Se (u) = u il teorema è banalmente vero. Se (u) u, poiché u (u), consideriamo i colori dei vertici al tempo d[u]: se (u) è nero, allora f[ (u) ] < f[u], contraddicendo il fatto che deve essere f[u] f[ (u)], per definizione. se (u) è grigio, allora (u) è un antenato di u. Dimostriamo ora che (u) non può essere bianco Teorema 3: In un grafo orientato G, lavo (u) di un qualsiasi vertice u è un antenato di u nellalbero DF di G.

18 Proprietà delle CFC Dimostrazione: (u) non può essere bianco Due casi (ricordate che u (u)): ¶ Ogni vertice intermedio tra u e (u) è bianco · Qualche vertice intermedio tra u e (u) non è bianco Teorema 3: In un grafo orientato G, il avo (u) di un qualsiasi vertice u in un albero DF di G è un antenato di u.

19 Proprietà delle CFC Dimostrazione: (u) non è bianco ¶ Ogni vertice intermedio tra u e (u) è bianco allora (u) sarà un discendente di u per il teorema del percorso bianco. Questo significa però che f [ (u) ]< f [u], il che contraddice la definizione di (u). Teorema 3: In un grafo orientato G, il avo (u) di un qualsiasi vertice u in un albero DF di G è un antenato di u.

20 Proprietà delle CFC Dimostrazione: (u) non è bianco · Qualche vertice intermedio tra u e (u) non è bianco sia t lultimo vertice non bianco nel percorso tra u e (u). Allora t deve essere grigio (non ci sono archi da vertici neri a vertici bianchi) e il successore di t è bianco. Ma allora cè un percorso bianco tra t e (u), quindi (u) è un discendente di t (teorema del percorso bianco). Quindi f[t]>f [ (u)], contraddicendo la scelta di (u). Teorema 3: In un grafo orientato G, il avo (u) di un qualsiasi vertice u in un albero DF di G è un antenato di u.

21 Proprietà delle CFC Dimostrazione: Per definizione di avo, si ha che u (u). Poiché (u) è anche un antenato di u nella foresta DF, abbiamo che (u) u. Possiamo quindi concludere che entrambi i vertici, essendo mutuamente raggiungibili, devono stare nella stessa CFC. Teorema 4: Durante una DFS di un grafo orientato G, i vertici u e (u), per ogni u, compaiono nella stessa CFC.

22 Proprietà delle CFC Dimostrazione: solo se: Assumiamo u e v siano nella stessa CFC. Ogni vertice raggiungibile da u è anche raggiungibile da v e vice versa. Dalla definizione di avo segue che (u)= (v) infatti, u v implica che f[ (u)] f[ (v)] mentre v u implica che f[ (v)] f[ (u)] Teorema 5: In un grafo orientato G, due vertici u e v, compaiono nella stessa CFC se e solo se hanno lo stesso avo nella DFS di G.

23 Proprietà delle CFC Dimostrazione: se: Assumiamo (u)= (v). Per il teorema 4, u compare nella stessa CFC di (u), e v compare nella stessa CFC di (v) quindi, u e v compaiono nella stessa CFC. Teorema 5: In un grafo orientato G, due vertici u e v, compaiono nella stessa CFC se e solo se hanno lo stesso avo nella DFS di G.

24 Calcolo delle CFC Sappiamo che: Le CFC sono insiemi di vertici con lo stesso avo. Durante DFS, lavo è sia il primo vertice scoperto (visitato) che lultimo vertice terminato (proces- sato) nella sua CFC (teorema del percorso bianco e teorema 5) Lultimo vertice terminato è certamente unavo. Infatti è il suo stesso avo e nessun altro vertice nellalbero ha tempo di terminazione maggiore.

25 Calcolo delle CFC Lultimo vertice terminato r è certamente unavo. Infatti è il suo stesso avo e nessun altro vertice nellalbero ha tempo di terminazione maggiore. Quali sono i vertici della CFC di r? Quelli che hanno la r come avo. cioè quelli che possono raggiungere la r ma che non possono raggiungere alcun altro vertice con tempo di terminazione maggiore della r. Se r è la il vertice con il massimo valore di f[], allora ci basta cercare i vertici che lo possono raggiungere.

26 Calcolo delle CFC Se r è la il vertice con il massimo valore di f[r], allora ci basta cercare i vertici che lo possono raggiungere. Ma, dalla definizione di grafo trasposto G T di G, questi vertici sono proprio i vertici raggiungibili da r nel grafo trasposto G T. La stessa cosa può essere ripetuta con tutti i vertici del grafo non raggiunti al passo precedente scegiendo i vertici in ordine decrescente di tempo di terminazione (prima quelli terminati più tardi).

27 Calcolo delle CFC f[e] > f[a] > f[c] > f[f] > f[b] > f[g] > f[d] a b c d e f g c a e d b g f G

28 Calcolo delle CFC a b c d e f g f[e] > f[a] > f[c] > f[f] > f[b] > f[g] > f[d] GTGT a c e CFC 1 f[f] > f[b] > f[g] > f[d] g CFC 3 b d f CFC 2 f[g] > f[d]

29 Calcolo delle CFC f[e] > f[a] > f[c] > f[f] > f[b] > f[g] > f[d] Supponiamo di non rispettare lordine decrescente e di scegliere il nodo f per primo. a b c d e f g c a e d b g f G

30 Calcolo delle CFC a b d f g CFC 2 Supponiamo di non rispettare lordine decrescente e di scegliere il nodo f per primo. a b c d e f g GTGT CFC 1 ? e c Il risultato è scorretto!

31 Algoritmo per il calcolo delle CFC 1 DFS(G) 2 Calcola il grafo trasposto G T 3 DFS(G T ) ma esaminando i vertici in ordine decrescente di tempo f[v] di fine visita 4 fornisci i vertici di ogni albero della foresta DF prodotta al passo 3 come una diversa CFC


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

Presentazioni simili


Annunci Google