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