22 Le applicazioni degli algoritmi di visita dei
Transcript
22 Le applicazioni degli algoritmi di visita dei
Le applicazioni degli algoritmi di visita dei grafi Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Rilevazione di cicli Un grafo è aciclico se e solo se in una visita in profondità non si incontrano archi etichettati B. A.A. 2004/2005 22 Le applicazioni degli algoritmi di visita dei grafi 2 Componenti connesse In un grafo non orientato rappresentato come lista delle adiacenze: ogni albero della foresta della DFS è una componente connessa G->cc[v] è un array avente come indici i vertici che memorizza un intero che identifica ciascuna componente connessa. componenti connesse A.A. 2004/2005 22 Le applicazioni degli algoritmi di visita dei grafi 3 Connettività Dato un grafo non orientato e connesso, determinare se perde la proprietà di connessione a seguito della rimozione di: un arco un nodo. Ponte (bridge): arco la cui rimozione disconnette il grafo. Punto di articolazione: vertice la cui rimozione disconnette il grafo. A.A. 2004/2005 22 Le applicazioni degli algoritmi di visita dei grafi 4 Esempio A.A. 2004/2005 22 Le applicazioni degli algoritmi di visita dei grafi 5 Bridge Un arco (v,w) Back non può essere un ponte (i vertici v e w sono anche connessi da un cammino nell’albero della visita DFS). Un arco (v,w) Tree è un ponte se e solo se non esistono archi Back che connettono un discendente di w a un antenato di v nell’albero della visita DFS. A.A. 2004/2005 22 Le applicazioni degli algoritmi di visita dei grafi 6 Grafo trasposto Dato un grafo orientato G =(V, E), il suo grafo trasposto GT = (V, ET) è tale per cui (u, v) ∈ E (v,u) ∈ ET. Implementazione con lista delle adiacenze: Graph GRAPHreverse(Graph G) { int v; link t; Graph R = GRAPHinit(G->V); for (v=0; v < G->V; v++) for (t= G->adj[v]; t != NULL; t = t->next) GRAPHinsert(R, EDGE(t->v, v)); return R; } A.A. 2004/2005 22 Le applicazioni degli algoritmi di visita dei grafi 7 Directed Acyclic Graph (DAG) DAG: modelli impliciti per ordini parziali utilizzati nei problemi di scheduling. Scheduling: dati compiti (tasks) e vincoli di precedenza (constraints) come programmare i compiti in modo che siano tutti svolti rispettando le precedenze. A.A. 2004/2005 22 Le applicazioni degli algoritmi di visita dei grafi 8 Ordinamento topologico (inverso): riordino dei vertici secondo una linea orizzontale, per cui se esiste l’arco (u, v) il vertice u compare a SX (DX) di v e gli archi vanno tutti da SX (DX) a DX (SX). I tempi di fine elaborazione post della visita DFS danno un ordinamento topologico inverso del DAG A.A. 2004/2005 22 Le applicazioni degli algoritmi di visita dei grafi reverse topological sort 9 Esempio 8 calzini 5 slip 7 scarpe 6 pantaloni 0 camicia 3 cintura 4 orologio 1 cravatta 2 giacca A.A. 2004/2005 22 Le applicazioni degli algoritmi di visita dei grafi 10 } 8 calzini 5 slip 7 scarpe 6 pantaloni 0 camicia 3 cintura 4 orologio 1 cravatta 2 giacca 2 A.A. 2004/2005 22 Le applicazioni degli algoritmi di visita dei grafi 11 } 8 calzini 5 slip 7 scarpe 6 pantaloni 0 camicia 3 cintura 4 orologio 1 cravatta 2 giacca 2 A.A. 2004/2005 1 22 Le applicazioni degli algoritmi di visita dei grafi 12 } 8 calzini 5 slip 7 scarpe 6 pantaloni 0 camicia 3 cintura 4 orologio 1 cravatta 2 giacca 2 1 A.A. 2004/2005 3 22 Le applicazioni degli algoritmi di visita dei grafi 13 } 8 calzini 5 slip 7 scarpe 6 pantaloni 0 camicia 3 cintura 4 orologio 1 cravatta 2 giacca 2 1 A.A. 2004/2005 3 0 22 Le applicazioni degli algoritmi di visita dei grafi 14 } 8 calzini 5 slip 7 scarpe 6 pantaloni 0 camicia 4 orologio 3 cintura 1 cravatta 2 giacca 2 1 A.A. 2004/2005 3 0 4 22 Le applicazioni degli algoritmi di visita dei grafi 15 } 8 calzini 5 slip 7 scarpe 6 pantaloni 0 camicia 4 orologio 3 cintura 1 cravatta 2 giacca 2 1 A.A. 2004/2005 3 0 4 7 22 Le applicazioni degli algoritmi di visita dei grafi 16 } 8 calzini 5 slip 7 scarpe 6 pantaloni 0 camicia 4 orologio 3 cintura 1 cravatta 2 giacca 2 1 A.A. 2004/2005 3 0 4 7 6 22 Le applicazioni degli algoritmi di visita dei grafi 17 } 8 calzini 5 slip 7 scarpe 6 pantaloni 0 camicia 4 orologio 3 cintura 1 cravatta 2 giacca 2 1 A.A. 2004/2005 3 0 4 7 6 5 22 Le applicazioni degli algoritmi di visita dei grafi 18 } 8 calzini 5 slip 7 scarpe 6 pantaloni 0 camicia 4 orologio 3 cintura 1 cravatta 2 giacca 2 1 A.A. 2004/2005 3 0 4 7 6 5 22 Le applicazioni degli algoritmi di visita dei grafi 8 19 ordine topologico inverso 2 1 3 0 4 7 6 5 8 7 4 0 3 1 2 ordine topologico 8 A.A. 2004/2005 5 6 22 Le applicazioni degli algoritmi di visita dei grafi 20 Componenti fortemente connesse Algoritmo di Kosaraju: trasponi il grafo esegui DFS sul grafo trasposto, calcolando i tempi di scoperta e di fine elaborazione esegui DFS sul grafo originale per tempi di fine elaborazione descrescenti gli alberi dell’ultima DFS sono le componenti fortemente connesse. A.A. 2004/2005 22 Le applicazioni degli algoritmi di visita dei grafi scc 21 Esempio 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 G GT A.A. 2004/2005 22 Le applicazioni degli algoritmi di visita dei grafi 22 Visita DFS del grafo trasposto GT 0/5 6/9 7/8 0 1 2 3 4 5 6 7 1/4 A.A. 2004/2005 2/3 10/13 11/12 14/15 22 Le applicazioni degli algoritmi di visita dei grafi 23 Visita DFS del grafo secondo tempi decrescenti di fine elaborazione del grafo trasposto GT scc3 scc4 0 1 2 3 4 5 6 7 G scc2 A.A. 2004/2005 22 Le applicazioni degli algoritmi di visita dei grafi scc1 24