Grafi e Cammini minimi Algoritmi e Strutture Dati.

29
Grafi e Cammini minimi Algoritmi e Strutture Dati

Transcript of Grafi e Cammini minimi Algoritmi e Strutture Dati.

Page 1: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Grafi e Cammini minimi

Algoritmi e Strutture Dati

Page 2: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

2

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Definizioni• Sia G=(V,E) un grafo orientato con costi w sugli archi; w: E→R.

• Il costo di un cammino =<v0,v1,v2,… ,vk> è dato da:

• Un cammino minimo tra una coppia di vertici x,y è un cammino di costo minore o uguale a quello di ogni altro cammino tra gli stessi vertici.

Page 3: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

3

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Proprietà dei cammini minimi

• Sottostruttura ottima: ogni sottocammino di un cammino minimo è anch’esso minimo– Questa proprietà permette di applicare tecniche di programmazione Greedy e

Dinamica, assicurando soluzioni ottime:• a partire da sottocammini minimi si perviene a cammini minimi.

• In generale potrebbe esistere più di un cammino minimo tra una stessa coppia di vertici. – A noi interesserà uno qualunque

• Nel caso di grafi orientati con pesi reali, si potrebbero avere cicli caratterizzati da un costo negativo; in tal caso la soluzione ottima potrebbe essere -∞ (cicli infiniti !!!!)– Non vengono mai considerati grafi con cicli aventi costo minore di zero

Page 4: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

4

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Distanza fra vertici

• Sia G=(V,E) un grafo orientato con costi w sugli archi; w: E→R.

• La distanza dxy tra due vertici x e y in G è:

– il costo di un cammino minimo tra da x a y,

– o +∞ se i due vertici x e y non sono connessi

• Caso Particolare: la distanza di un vertice da se stesso è 0

Page 5: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

5

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Distanza fra vertici• Disuguaglianza triangolare: per ogni x, y e z in

V vale sempre la relazione:

• Condizione di Bellman: per ogni arco (u,v) in E e per ogni vertice s in V, vale:

Page 6: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

6

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Calcolare un cammino minimo • Obiettivo: calcolare il cammino minimo <v0, v1,.., vk>, con v0=x e vk=y

• Un arco (u,v) appartiene ad un cammino minimo tra s e v se e solo se la condizione di Bellman vale con l’eguaglianza: dsu+w(u,v)=dsv

O(δout*k)

O(n*k) caso peggiore

Page 7: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

7

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Algoritmi per il Calcolo del Cammino Minimo

•Ci sono diverse variantiSorgente/Destinazione

Cammino minimo tra una singola coppia Cammini minimi a sorgente singola (da un vertice a tutti gli altri) Cammini minimi tra tutte le coppie

Tipologia di Grafo Cammini minimi per generico grafo orientato con funzione costo reale Cammini minimi per grafi orientati aciclici con funzione costo reale Cammini minimi per generico grafo orientato ma con funzione costo

maggiore o uguale a zero

Page 8: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

8

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Alberi di Cammini Minimi

• Come memorizzare i cammini minimi a partire da una sorgente s ?

• Soluzione ovvia: liste di vertici, una lista per ogni destinazione

– Spazio: (n cammini di lunghezza max O(n) = O(n2))

• Soluzione migliore: I cammini minimi da un vertice s a tutti gli altri vertici del grafo possono essere rappresentati tramite un albero radicato in s, detto albero dei cammini minimi– Spazio: vettore/lista di O(n) elementi

Page 9: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

9

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Alberi di Cammini Minimi• Esempio: Vettore di n elementi

* A B A C E E

A B C D E F G

• Si basa sul Lemma che ogni sottocammino di un cammino minimo è esso stesso un cammino minimo

Page 10: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

10

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Tecnica del Rilassamento

• Tutti gli algoritmi che vedremo nel seguito si basano sulla tecnica del rilassamento

• Si parte 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:

Page 11: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

11

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Algoritmo di Bellman e Ford

•Algoritmo generico per qualunque grafo orientato G=(V,E) con funzione costo w: E→R

•Calcola Cammini Minimi a Sorgente singola

Page 12: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

12

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Sia =< s,v1,v2,… ,vk > un cammino minimo. Se fossimo in grado di eseguire i passi di rilassamento nell’ordine seguente:

in k passi avremmo la soluzione. Purtroppo non conosciamo l’ordine giusto, essendo ignoto

Approccio di Bellman e Ford

Page 13: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

13

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Approccio di Bellman e Ford

• Esegue n passate

• In ciascuna passata rilassa tutti gli archi

• Dopo la j-esima passata, i primi j rilassamenti corretti sono stati certamente eseguiti

• Esegue però molti rilassamenti inutili!

Page 14: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

14

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Pseudocodice

Tempo di esecuzione: O(n m)

Approccio di Bellman e Ford

Page 15: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

15

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

• Si applica per cammini minimi a sorgente singola• Sfrutta il fatto che non vi sono cicli, dunque se esiste un cammino da u a v, non può esistere il cammino da

v a u• Sulla base di questa proprietà, l’algoritmo “rilassa” gli archi sulla base di un precedente ordinamento

topologico– Ogni arco viene rilassato solo una volta !

Variante dell’Algoritmo di Bellman e Ford per Grafi Aciclici

Page 16: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

16

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Ordinamento topologico

• Funzione : V {1, … n} tale che (u)< (v) se esiste un cammino da u a v in G

• Esiste solo e solo se G è aciclico

• Si costruisce a partire da un vertice che non ha archi entranti

• L’ordinamento topologico non è unico !!!

Page 17: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

17

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Calcolo di un ordinamento topologico

Tempo di esecuzione: O(n+m)

Page 18: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

18

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Variante dell’Algoritmo di Bellman e Ford per Grafi Aciclici

Tempo di esecuzione: O(n+m)

•Eseguire i rilassamenti in ordine topologico

•Ogni arco viene rilassato solo una volta !

Page 19: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

19

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Algoritmo di Dijkstra

Calcolo dei cammini minimi:

• a sorgente singola

• in grafi orientati G=(V,E) ciclici (può contenere cicli)

• Gli archi devono avere costi non negativi, ossia ad ogni arco è associata la funzione costo w: E → R+ {0}

Page 20: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

20

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Principio di Funzionamento: Estensione dell’albero dei cammini minimi

Lemma: Se T è un albero dei cammini minimi radicato in s che non include tutti i vertici raggiungibili da s, l’arco (u,v) tale che uT e vT che minimizza la quantità dsu+w(u,v) appartiene a un cammino minimo da s a v

Page 21: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

21

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Approccio di Dijkstra• Si suppone che ogni vertice sia raggiungibile da s• All’inizio l’albero T contiene solo s• Si applica per (n-1) volte:

– Scegli un arco (u,v) con uT e vT che minimizza la quantità Dsu+w(u,v), effettua il passo di rilassamento Dsv Dsu+w(u,v), ed aggiungilo a T

algoritmo DijkstraGenerico(grafo G, vertice s) → T

inizializza D tale che Dsv=+∞ per v≠s e Dss=0T←albero formato solo da swhile (T ha meno di n nodi) do

trova l’arco (u,v) incidente su T con Dsu+w(u,v) minimo

Dsv Dsu+w(u,v) {rilassamento}

rendi u padre di v in T return T

Page 22: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

22

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Esempio (1/2)

Page 23: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

23

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Esempio (2/2)

Page 24: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

24

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Implementazione con Code con Priorità

• Operazione cruciale: selezione dell’arco (u,v) con uT e vT che minimizza la quantità Dsu+w(u,v)

• Per ogni nodo u, significa fare m calcoli O(m)

• Totale complessità O(m*n), eccessiva!!!!

• Soluzione: uso code con priorità; complessità varia da O(m*logn) a O(m+n*logn)

Page 25: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

25

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Implementazione con Code con Priorità

• Uso della coda di priorità Min per gestire l’arco (u,v) con uT e vT• Si preferisce mantenere vertici invece che archi (al più n elementi in coda)

– la coda memorizzerà solo il vertice v, che minimizza la quantità Dsu+w(u,v)

– il valore di ogni elemento della coda è il vertice v

– La priorità di ogni elemento della coda è la quantità Dsu+w(u,v)

• Se il vertice v già esiste in coda e trovo un altro arco (u,v) per cui la quantità Dsu+w(u,v) diminuisce, allora devo aggiornare la priorità dell’elemento v– Si usa una funzione delle code di priorità Min: DecreaseKey

Page 26: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

26

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Pseudocodice

Page 27: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

27

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Tempo di esecuzioneAl più:• n insert, n*O(log n)• n deleteMin, n*O(log n)• (m-n) decreaseKey, (m-n)*O(log n)

• O(m log n) utilizzando heap

• O(m+n log n) utilizzando heap di Fibonacci (DecreaseKey O(1))

Page 28: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

28

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Algoritmo di Floyd e Warshall

•Algoritmo generico per qualunque grafo orientato G=(V,E) con funzione costo w: E→R

•Calcola Cammini Minimi tra tutte le coppie

•Tempo di esecuzione: O(n3)

Page 29: Grafi e Cammini minimi Algoritmi e Strutture Dati.

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

29

Algoritmi e strutture dati 2/ed

Copyright © 2008 - The McGraw - Hill Companies, srl

Riepilogo

• Algoritmi classici per il calcolo di distanze (e quindi di cammini minimi), basati sulla tecnica del rilassamento:– Bellman e Ford: cammini minimi a sorgente singola, grafi

diretti senza cicli negativi, tempo O(nm)• Grafi diretti aciclici: tempo O(n+m)

– Dijkstra: cammini minimi a sorgente singola, grafi diretti senza pesi negativi, tempo O(m+n log n)

– Floyd e Warshall: cammini minimi tra tutte le coppie in tempo O(n3)