Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i...

13
Ordinamento topologico n grafo orientato aciclico (“dag”), è sempre possib re i suoi vertici in modo che, per ogni arco <u, v> u preceda v nell’ordinamento. namento topologico di un dag è un ordinamento dei suoi vertici che soddisfa la condizione preced er ogni arco <u, v> del grafo, u precede v nell’ord

Transcript of Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i...

Page 1: Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco del grafo, u preceda.

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.

Page 2: Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco del grafo, u preceda.

A

DB

C

E

F

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):

Esempio:

F C E D A B

Page 3: Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco del grafo, u preceda.

A

DB

C

E

FEsempio:

Ma non è l’unico, anche i seguenti sono ordinamenti topologici

C D A F E B

A B C F D E

Page 4: Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco del grafo, u preceda.

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

DB

C

E

F1/4

2/3

5/10 11/12

8/9

6/7

Page 5: Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco del grafo, u preceda.

Riportiamo i tempi sui vertici nel primo ordinamentopreso in esame

F C E D A B

1/4 2/35/1011/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 inprofondità, che permettono di “intuire” quale informazione ottenuta con la visita stessa è utile per scoprire un ordinamento topologico.

Page 6: Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco del grafo, u preceda.

Per il secondo ordinamento, se visitiamo i vertici nell’ordine:E D F C A B, si ottiene:

A B C F D E

3/4 1/210/11 9/12 7/8 5/6

A

DB

C

E

F9/12

10/11

7/8 5/6

1/2

3/4

Page 7: Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco del grafo, u preceda.

Ed infine, visitando i vertici nell’ordine B E F A C B,si ottiene, per il terzo ordinamento:

C D A F E B

3/4 1/210/11 9/12 7/8 5/6

A

DB

C

E

F7/8

1/2

9/12 5/6

3/4

10/11

Page 8: Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco del grafo, u preceda.

Che cosa hanno in comune i tre ordinamenti, rispetto alle visite?

C D A F E B

3/4 1/210/11 9/12 7/8 5/6

A B C F D E

3/4 1/210/11 9/12 7/8 5/6

F C E D A B

1/4 2/35/1011/12 8/9 6/7

Page 9: Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco del grafo, u preceda.

Che cosa hanno in comune i tre ordinamenti, rispetto alle visite?

C D A F E B

3/4 1/210/11 9/12 7/8 5/6

A B C F D E

3/4 1/210/11 9/12 7/8 5/6

F C E D A B

1/4 2/35/1011/12 8/9 6/7

I vertici sono sempre in ordine decrescente dei tempi di fine visita

Page 10: Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco del grafo, u preceda.

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.

Page 11: Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco del grafo, u preceda.

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)

Page 12: Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco del grafo, u preceda.

Complessità: O(V + E)

Page 13: Ordinamento topologico Dato un grafo orientato aciclico (“dag”), è sempre possibile ordinare i suoi vertici in modo che, per ogni arco del grafo, u preceda.

Dimostrando che una (qualunque) DFS del grafo associa aivertici 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 }