1 / 31

Algoritmi e Struttur e Dati (Mod. B)

Algoritmi e Struttur e Dati (Mod. B). Algoritmi su grafi Ricerca in profondità ( D epth- F irst S earch) Parte III. Applicazioni di DFS. Due problemi : calcolare l’ ordinamento topologico indotto da un grafo aciclico .

lulu
Download Presentation

Algoritmi e Struttur e Dati (Mod. B)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Applicazioni di DFS Due problemi: • calcolare l’ordinamento topologicoindotto 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 l’algoritmo di DFS

  3. f b b a a g e e c d c d G’ G 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) connessose ogni coppia di vertici sono connessi. • Altrimenti, G è sconnesso.

  4. Verifica della connettività

  5. Verifica della connettività

  6. Verifica della connettività Per testare se un grafo non orientatoè connesso possiamo: • usare l’algortmo 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] = NILil grafo non può essere connesso.

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

  8. Esercizio Es. 23.3.9:Mostrare che DFS su un grafo non orientato Gpuò essere usata per identificare le Componenti Con-nesse e che la foresta DF contiene tanti alberiquante 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 ue v se appartengono alla stessa CC.

  9. f f b a b a g g e e c d c d G H1 H2 H3 Componenti fortemente connesse • Un sottografo massimale fortemente connessodi 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 l’H’ risultante sia ancora un sottografo fortemente connesso di G.

  10. Proprietà delle CFC Teorema1: Se due vertici compaiono nella stessa componente fortemente connessa, allora nessunper-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. w b Proprietà delle CFC a Componente Fortemente Connessa u v

  12. Proprietà delle CFC a Componente Fortemente Connessa u v w 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 nell’albero DF.

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

  15. Proprietà delle CFC Definizione: Dato un vertice u di un grafo G, l’avo 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 chee 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  vimplica che f[(v)]f[(u)] • infatti l’insieme {w: v  w}{w: u  w}, e il tempo di terminazione (f[]) dell’avo è 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 Teorema 3: In un grafo orientato G, l’avo(u) di un qualsiasi vertice u è un antenato di u nell’albero DF di G. 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 fattoche deve essere f[u]f[(u)], per definizione. • se (u)è grigio, allora (u)è unantenato diu. Dimostriamo ora che (u) non può essere bianco

  18. Proprietà delle CFC 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. Dimostrazione:(u) non può essere bianco Due casi (ricordate cheu(u)): • Ogni vertice intermedio tra u e(u) è bianco • Qualche vertice intermedio tra u e(u) non è bianco

  19. Proprietà delle CFC 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. 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).

  20. Proprietà delle CFC 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. Dimostrazione:(u) non è bianco • Qualche vertice intermedio tra u e(u) non è bianco sia t l’ultimo 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).

  21. Proprietà delle CFC Teorema 4: Durante una DFS di un grafo orientato G, i vertici u e (u), per ogni u, compaiono nella stessa 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 stessaCFC.

  22. Proprietà delle CFC Teorema 5: In un grafo orientato G, due vertici u e v, compaiono nella stessa CFCse e solo se hanno lo stesso avo nella DFS di G. 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vimplica che f[(u)] f[(v)] mentre vuimplica che f[(v)] f[(u)]

  23. Proprietà delle 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. 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.

  24. Calcolo delle CFC Sappiamo che: • Le CFC sono insiemi di vertici con lo stesso avo. • Durante DFS, l’avo è sia il primo vertice scoperto (visitato) che l’ultimo vertice terminato (proces-sato) nella sua CFC (teorema del percorso bianco e teorema 5) • L’ultimo vertice terminato è certamente un’avo. Infatti è il suo stesso avo e nessun altro vertice nell’albero ha tempo di terminazione maggiore.

  25. Calcolo delle CFC • L’ultimo vertice terminato r è certamente un’avo. Infatti è il suo stesso avo e nessun altro vertice nell’albero 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 lar ma che non possono raggiungere alcun altro vertice con tempo di terminazione maggiore dellar. • Se r è la il vertice con il massimo valore dif[], 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 GT di G, questi vertici sono proprio i vertici raggiungibili da r nel grafo trasposto GT. • 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. f e b a g d c Calcolo delle CFC f b a g e c d G f[e] > f[a] > f[c] > f[f] > f[b] > f[g] > f[d]

  28. f e d c g a b CFC1 CFC3 CFC2 f[f] > f[b] > f[g] > f[d] f[g] > f[d] Calcolo delle CFC f b a g e c d GT f[e] > f[a] > f[c] > f[f] > f[b] > f[g] > f[d]

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

  30. f f b a a d g e e c d g b GT c CFC2 CFC1? Calcolo delle CFC Supponiamo di non rispettare l’ordine decrescente e di scegliere il nodo f per primo. Il risultato è scorretto!

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

More Related