La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Capitolo 13 Cammini minimi: Algoritmo di ordinamento topologico, di Dijkstra, e di Floyd e Warshall Algoritmi e Strutture Dati.

Presentazioni simili


Presentazione sul tema: "Capitolo 13 Cammini minimi: Algoritmo di ordinamento topologico, di Dijkstra, e di Floyd e Warshall Algoritmi e Strutture Dati."— Transcript della presentazione:

1 Capitolo 13 Cammini minimi: Algoritmo di ordinamento topologico, di Dijkstra, e di Floyd e Warshall Algoritmi e Strutture Dati

2 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 2 Algoritmo di ordinamento topologico (per cammini minimi a sorgente singola in grafi aciclici)

3 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 3 Ordinamento topologico Funzione  : V  {1, … n} tale che  (u)<  (v) se esiste un cammino da u a v in G Esiste se e solo se G è aciclico

4 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 4 Calcolo di un ordinamento topologico Tempo di esecuzione: O(n + m)

5 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 5 Cammini minimi in grafi aciclici Tempo di esecuzione: O(n + m) Eseguire i rilassamenti in ordine topologico

6 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 6 Algoritmo di Dijkstra (per cammini minimi a sorgente singola in grafi con costi non negativi)

7 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 7 Estendere l’albero dei cammini minimi 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 u  T e v  T che minimizza la quantità d su +w(u,v) appartiene a un cammino minimo da s a v

8 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 8 Approccio di Dijkstra Nodi non ancora in T mantenuti in una coda con priorità, prestando attenzione ad avere un solo arco per ogni nodo y  T: se (x,y) è in coda quando analizziamo (v,y) dopo aver aggiunto v a T, e risulta D sv +w(v,y) < D sx +w(x,y), rimpiazziamo (x,y) con (v,y) Dato un nodo u in T, scegli un nodo v  T che minimizza la quantità d su +w(u,v), aggiungi v a T ed effettua il passo di rilassamento D sy  d sv +w(v,y) per ogni y  T.

9 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 9 Pseudocodice

10 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 10 Tempo di esecuzione Al più n insert, n deleteMin e m decreaseKey O(m log n) utilizzando heap (binari o binomiali) O(m+n log n) utilizzando heap di Fibonacci

11 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 11 Esempio (1/2)

12 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 12 Esempio (2/2)

13 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 13 Algoritmo di Floyd e Warshall (per cammini minimi tra tutte le coppie in grafi con cicli non negativi)

14 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 14 Approccio Elegante applicazione della tecnica della programmazione dinamica Un cammino minimo k-vincolato da x a y è un cammino di costo minimo tra tutti i cammini da x a y che usano solo i vertici {v 1, v 2, … v k } Idea di Floyd e Warshall: calcolare cammini minimi k-vincolati per k=1,…,n

15 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 15 Relazioni tra distanze vincolate Sia d xy il costo di un cammino minimo k-vincolato da x a y. Risulta: k d xy =w(x,y) se (x,y)  E, +∞ altrimenti 0 d xy =d xy n L’algoritmo calcola d xy dal basso verso l’alto, incrementando k da 1 a n

16 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 16 Pseudocodice Tempo di esecuzione: O(n 3 )

17 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 17 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) –Ordinamento topologico: cammini minimi a sorgente singola, 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(n 3 )


Scaricare ppt "Capitolo 13 Cammini minimi: Algoritmo di ordinamento topologico, di Dijkstra, e di Floyd e Warshall Algoritmi e Strutture Dati."

Presentazioni simili


Annunci Google