La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Ordinamento topologico

Presentazioni simili


Presentazione sul tema: "Ordinamento topologico"— Transcript della presentazione:

1 Ordinamento topologico
Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco <u, v> del grafo, u preceda v nell’ordinamento. Un ordinamento topologico di un dag è un ordinamento lineare dei suoi vertici che soddisfa la condizione precedente, cioè, per ogni arco <u, v> del grafo, u precede v nell’ordinamento.

2 Esempio: C F A E D B F C E D A B È un ordinamento topologico
Infatti disegnando gli archi del grafo essi risultano tutti orientati nella stessa direzione (da sinistra verso destra): F C E D A B

3 Esempio: A D B C E F Ma non è l’unico, anche i seguenti sono ordinamenti topologici A B C F D E C D A F E B

4 Come è possibile usare una visita del grafo per scoprire un
suo ordinamento topologico? Visitiamo il grafo in profondità considerando i vertici in ordine alfabetico: A B C D E F Otteniamo i seguenti tempi di inizio e fine visita A D B C E F 1/4 2/3 5/10 11/12 8/9 6/7

5 Riportiamo i tempi sui vertici nel primo ordinamento
preso in esame F C E D A B 1/4 2/3 5/10 11/12 8/9 6/7 Anche per gli altri due ordinamenti si possono trovare degli ordini, in cui considerare i vertici per effettuare una visita in profondità, che permettono di “intuire” quale informazione ottenuta con la visita stessa è utile per scoprire un ordinamento topologico.

6 Per il secondo ordinamento, se visitiamo i vertici nell’ordine:
E D F C A B, si ottiene: A D B C E F 9/12 10/11 7/8 5/6 1/2 3/4 A B C F D E 3/4 1/2 10/11 9/12 7/8 5/6

7 Ed infine, visitando i vertici nell’ordine B E F A C B,
si ottiene, per il terzo ordinamento: A D B C E F 7/8 1/2 9/12 5/6 3/4 10/11 C D A F E B 3/4 1/2 10/11 9/12 7/8 5/6

8 Che cosa hanno in comune i tre ordinamenti, rispetto alle visite?
F C E D A B 1/4 2/3 5/10 11/12 8/9 6/7 A B C F D E 3/4 1/2 10/11 9/12 7/8 5/6 C D A F E B 3/4 1/2 10/11 9/12 7/8 5/6

9 I vertici sono sempre in ordine decrescente dei tempi di fine visita
Che cosa hanno in comune i tre ordinamenti, rispetto alle visite? F C E D A B 1/4 2/3 5/10 11/12 8/9 6/7 A B C F D E 3/4 1/2 10/11 9/12 7/8 5/6 C D A F E B 3/4 1/2 10/11 9/12 7/8 5/6 I vertici sono sempre in ordine decrescente dei tempi di fine visita

10 Adattiamo la struttura standard dell’algoritmo di visita al
problema dell’ordinamento topologico. Basta creare una lista dei vertici in ordine decrescente dei tempi di fine visita.

11 Topological_Sort (G) INIZIALIZZA (G) for ogni u  V do if color u = white then DFS-topologica (G, u) DFS-topologica (G, u) color u  gray d[u]  time  time + 1 while c’è v  ADJ u non considerato do if color v = white then v  u DFS-VISITA-ricorsiva (G, v) color u  black f[u]  time  time + 1 Intesta (u, LISTA)

12 Complessità: O(V + E)

13 Dimostrando che una (qualunque) DFS del grafo associa ai
vertici tempi di fine visita tali che: f[v] < f[u] per ogni arco <u, v> del grafo, si dimostra la correttezza del programma. { G grafo orientato aciclico } VISITA_TUTTI_I_VERTICI (G) INIZIALIZZA (G) for ogni u  V do if color u = white then DFS-topologica (G, u) { LISTA contiene i vertici di G in ordine topologico }


Scaricare ppt "Ordinamento topologico"

Presentazioni simili


Annunci Google