Algoritmi e Strutture Dati
Capitolo 13
Cammini minimi:
Ordinamento topologico
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Cammini minimi in grafi pesati
Sia G=(V,E,w) un grafo orientato con pesi w reali sugli archi.
Il costo di un cammino p=<v0,v1,v2,… ,vk> è dato da:
Un cammino minimo tra una coppia di vertici x e y è un
cammino avente costo minore o uguale a quello di ogni
altro cammino tra gli stessi vertici.
NOTA: Il cammino minimo non è necessariamente unico.
2
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Algoritmica concreta: il navigatore satellitare
•
Sono in auto a Roma in Piazza Dante 12, (punto A) e devo recarmi ad un
appuntamento a L’Aquila, in Via Vetoio 1 (punto B). Non conosco la
strada, ma dispongo di un moderno navigatore satellitare, il quale mi
aiuterà ad arrivare a destinazione:
1.
2.
•
percorrendo la strada più breve possibile (funzione obiettivo 1), oppure
impiegando il minor tempo possibile (funzione obiettivo 2).
Come calcola la soluzione? Semplice: rappresenta l’intera rete stradale
italiana (centinaia di migliaia di strade!) come un grafo diretto G=(V,E), in
cui i nodi sono le intersezioni fisiche tra le varie strade (milioni di nodi!),
e gli archi sono le strade stesse, con i loro sensi di marcia. Il grafo viene
quindi pesato rispetto alla mia funzione obiettivo, ovvero rispettivamente:
1.
2.
Lunghezza della strada  funzione peso w1;
Tempo di percorrenza  funzione peso w2.
Infine, calcola (rapidamente!) il cammino minimo in G=(V,E,w1)
e in G=(V,E,w2) tra A ed B.
3
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Il percorso più breve
4
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Proprietà dei cammini minimi
• Sottostruttura ottima: ogni sottocammino di un
cammino minimo è anch’esso un cammino minimo
• Grafi con cicli negativi: se due vertici x e y
appartengono a un ciclo di costo negativo, non esiste
nessun cammino minimo finito tra di essi (né tra tutte
le coppie di nodi che ammettono un cammino
passante per tale ciclo)
• Se G non contiene cicli negativi, tra ogni coppia di
vertici connessi in G (cioè uniti da almeno un
cammino) esiste sempre un cammino minimo
semplice, in cui cioè tutti i vertici sono distinti
5
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Distanza fra vertici
• Ricorda: la distanza dxy tra due vertici x e y è il
costo di un cammino minimo da x a y, o +∞ se i due
vertici non sono connessi
• Disuguaglianza triangolare: per ogni x, y e z  V
dxy ≤ dxz + dzy (l’uguaglianza sussiste quando esiste
un cammino minimo da x a y che passa per z)
• Condizione di Bellman: per ogni arco (u,v) e per
ogni vertice s, essendo duv ≤ w(u,v), dalla
disuguaglianza triangolare segue che:
dsv ≤ dsu + duv ≤ dsu + w(u,v)
6
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Ricostruire cammini minimi dalle distanze
Supponendo di disporre delle distanze tra tutte le coppie di
nodi in un dato grafo, dalla condizione di Bellman è facile
risalire al cammino minimo che congiunge due nodi;
infatti, un arco (u,v) appartiene ad un cammino minimo da
s a v se e solo se dsu+w(u,v)=dsv, e quindi:
7
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Tecnica del rilassamento
• Partendo da stime per eccesso delle distanze
Dxy ≥ dxy si aggiornano le stime, decrementandole
progressivamente fino a renderle esatte.
• Aggiornamento delle stime basato sul seguente
passo di rilassamento (pvy denota un qualche
cammino tra v e y):
8
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Algoritmo generico
per il calcolo delle distanze
rilassamento
9
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Albero dei cammini minimi
• L’unione di tutti i cammini minimi da un
vertice s a tutti i vertici da esso raggiungibili nel
grafo G genera un sottografo di G, detto
sottografo dei cammini minimi con sorgente in s
• Se da tale sottografo rimuoviamo archi in modo
tale da ridurre ad 1 il grado entrante di tutti i
nodi (escluso s che ha grado entrante pari a 0)
otterremo un albero orientato con tutti gli archi
orientati in direzione delle foglie, detto albero
dei cammini minimi radicato in s
10
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempio di albero dei cammini minimi
1
a 1
c
11
s
0
2
4
5
1
1
1 b
5
d
6
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Sommario dei risultati a venire
• Algoritmo basato su ordinamento topologico
(albero dei cammini minimi in grafi aciclici)
• Algoritmo di Bellman e Ford
(albero dei cammini
minimi in grafi che non contengono cicli negativi)
• Algoritmo di Dijkstra (albero dei cammini minimi in
grafi con pesi non negativi)
• Algoritmo di Floyd e Warshall
(cammini minimi
tra tutte le coppie di nodi in grafi che non contengono cicli
negativi)
12
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Algoritmo basato su
ordinamento topologico
(albero dei cammini minimi
in grafi aciclici)
13
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Ordinamento topologico
Funzione biettiva s: V  {1, … n} tale che se esiste un cammino da
u a v in G, allora s(u)<s(v).
Teorema: Esiste se e solo se G è aciclico.
Dim.: (solo se) Infatti, se G avesse un ciclo e ammettesse un
ordinamento topologico s, allora su tale ciclo esisterebbe un
cammino da un nodo u a un nodo v ed un cammino da v ad u,
cioè s(u)<s(v) e s(v)<s(u) (assurdo).
Per il (se) si veda il prossimo algoritmo costruttivo:
14
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Calcolo di un ordinamento topologico
(*)
(*) perché altrimenti in Ĝ ogni vertice deve avere almeno un arco entrante, e quindi posso
trovare un ciclo percorrendo archi entranti a ritroso, e quindi G non può essere aciclico)
Tempo di esecuzione (con liste di adiacenza):
Θ(n+m) (dimostrare!)
15
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempio
Applicare l’algoritmo di ordinamento
topologico sul seguente grafo:
16
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Cammini minimi in grafi aciclici
Eseguo i rilassamenti in ordine topologico, da sinistra verso
destra: infatti, poiché tutti gli archi sono orientati verso
destra, le stime di distanza che mi lascio alle spalle sono
esatte (non possono essere ulteriormente rilassate)!
Tempo di esecuzione (liste di adiacenza): (n+m)
17
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esercizio
Assegnare pesi arbitrari al grafo appena
esaminato, e utilizzare l’ordinamento
topologico trovato per costruire l’albero dei
cammini minimi radicato in A.
18
Copyright © 2004 - The McGraw - Hill Companies, srl