2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1



Documenti analoghi
2.2 Alberi di supporto di costo ottimo

2.2 Alberi di supporto di costo ottimo

2.2 Alberi di supporto di costo ottimo

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

2.2 Alberi di supporto di costo ottimo

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

età (anni) manutenzione (keuro) ricavato (keuro)

Teoria dei Grafi Parte I. Alberto Caprara DEIS - Università di Bologna

Teoria dei Grafi Parte I

1 TEORIA DELLE RETI 1. 1 Teoria delle reti. 1.1 Grafi

Problema dell albero di cammini minimi (SPT, Shortest Path Tree) o problema dei cammini minimi :

2.3.3 Cammini ottimi nei grafi senza circuiti

Algoritmo basato su cancellazione di cicli

2.3.5 Pianificazione di progetti

PROBLEMI SU GRAFO (combinatori)

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Cammini minimi. Definizioni. Distanza fra vertici. Proprietà dei cammini minimi. Algoritmi e Strutture Dati

5.1 Metodo Branch and Bound

Il Problema dell Albero Ricoprente Minimo (Shortest Spanning Tree - SST)

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa

Cammini minimi. Damiano Macedonio

Introduzione ai grafi

Quinto appello 27/6/ = 4. B b B = 2 b N = 4

Appunti lezione Capitolo 13 Programmazione dinamica

Progettazione di Algoritmi

Algoritmi e strutture dati

Algoritmi e Strutture Dati. Capitolo 13 Cammini minimi: Algoritmo di Bellman e Ford

Grafi (orientati): cammini minimi

5.1 Metodo Branch and Bound

Grafi (orientati): cammini minimi

RICERCA OPERATIVA (a.a. 2018/19)

Problema del cammino minimo

Il problema del commesso viaggiatore

Progettazione di algoritmi. Reti di flusso (2)

Parte V: Rilassamento Lagrangiano

Esame di Ricerca Operativa del 18/06/18

Modelli di Programmazione Lineare. PRTLC - Modelli

Esercizi proposti nel Cap Soluzioni. Esercizio 14.1

Capitolo 5. Algoritmi di ricerca su grafo. 5.1 Algoritmi di ricerca su grafo

Bioinformatica. Grafi. a.a Francesca Cordero. Grafi Bioinformatica

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013

Ottimizzazione Combinatoria e Reti (a.a. 2007/08)

Soluzioni della settima esercitazione di Algoritmi 1

Grafi Stessa distanza

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

11.4 Chiusura transitiva

Cammini minimi con sorgente singola

Visite in Grafi BFS e DFS

Cammini minimi fra tutte le coppie

Problemi di Percorso. Capitolo dodicesimo

Cammini Minimi. Algoritmo di Dijkstra. Cammino in un grafo

PROBLEMA DEI CAMMINI MINIMI [CORMEN ET AL. CAP. 24] Il costo di cammino minimo da un vertice u ad un vertice v è definito nel seguente modo:

Alberi e arborescenze di costo minimo

Definizione 1.3 (Arco accoppiato) Un arco è accoppiato se è appartenente al matching M.

Cammini di costo minimo

RICERCA OPERATIVA (a.a. 2011/12) Nome: Cognome: Matricola:

Grafi non orientati. Grafi (non orientati) Rappresentazione di Grafi: matrice delle adiacenze. Tipiche applicazioni di modelli basati su grafi

Cammini Minimi. Algoritmo di Dijkstra

Ottimizzazione su grafi: massimo flusso (parte 1) Ottimizzazione su grafi:massimo flusso (parte 1) p. 1/33

1) Data la seguente istanza di TSP (grafo completo con 5 nodi): c 12 = 52; c 13 = 51; c 14 = 40; c 15 = 53; c 23 = 44;

RICERCA OPERATIVA (a.a. 2017/18) Nome: Cognome: Matricola:

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Esame di Ricerca Operativa del 07/06/2019

Esercizi Union-Find e su Grafi. Ugo Vaccaro

RICERCA OPERATIVA (a.a. 2017/18) Nome: Cognome: Matricola:

G è 2-colorabile se ogni nodo può essere colorato di bianco o di nero in modo che nodi connessi da archi siano colorati con colori distinti.

AMPL Problemi su Reti

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione

2.3.4 Pianificazione di progetti

RICERCA OPERATIVA (a.a. 2016/17) Nome: Cognome: Matricola:

Università Roma Tre - PAS Classe A048 "Matematica Applicata" - Corso di Informatica a.a. 2013/2014

Teoria dei Grafi Concetti fondamentali

Progettazione di Algoritmi Anno Accademico Esercizi su Grafi: Parte Prima

Esame di Ricerca Operativa del 19/07/19. Esercizio 1. (a) Risolvere mediante il metodo del simplesso il seguente problema di programmazione lineare:

Algoritmi e Strutture Dati

Complessità Computazionale

Algoritmi e Strutture dati Mod B. Grafi Percorsi Minimi: algoritmi esatti e algoritmi euristici (A*)

RICERCA OPERATIVA (a.a. 2015/16) Nome: Cognome: Matricola:

RICERCA OPERATIVA (a.a. 2016/17) Nome: Cognome: Matricola:

Esame di Ricerca Operativa del 20/02/18

Claudio Arbib Università di L Aquila. Ricerca Operativa. Reti di flusso

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 20 giugno 2014

Algoritmi e Strutture dati Mod B. Grafi: Percorsi Minimi (parte I)

RICERCA OPERATIVA (a.a. 2003/04) Nome Cognome:

Algoritmi e Strutture Dati

Ad ogni arco (i,j) del grafo e' associato un valore intero c(i,j) detto capacita' dell'arco

Esercitazione 6 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

algoritmi e strutture di dati

RICERCA OPERATIVA (a.a. 2012/13) Nome: Cognome: Matricola:

Visite in Grafi BFS e DFS. PDF created with FinePrint pdffactory trial version

RICERCA OPERATIVA (a.a. 2015/16) Nome: Cognome: Matricola:

INSTRADAMENTO: ALGORITMO DI BELLMAN-FORD

3.3 Problemi di PLI facili

Analisi e implementazione dell algoritmo di Dijkstra (Parte 1)

Transcript:

. Cammini ottimi E. Amaldi Fondamenti di R.O. Politecnico di Milano

.. Cammini minimi e algoritmo di Dijkstra Dato un grafo orientato G = (N, A) con una funzione di costo c : A c ij R e due nodi s e t, determinare un cammino di costo minimo da s a t. s èl origine s 6 8 t èla destinazione c ij rappresenta il costo (lunghezza, tempo di percorrenza, ) dell arco (i, j) A 9 5 E. Amaldi Fondamenti di R.O. Politecnico di Milano 6 t

I problemi di cammini ottimi (minimi o massimi) hanno innumerevoli applicazioni: pianificazione e gestione di reti di trasporto, elettriche, idrauliche, di comunicazione,.. pianificazione di progetti complessi (relazioni logiche tra entità)... N.B.: Se grafo G non orientato j i lati sono considerati come coppie di archi i i j E. Amaldi Fondamenti di R.O. Politecnico di Milano

Un approccio di tipo greedy rispetto agli archi del taglio corrente ( simile a quello di Prim per gli alberi di supporto di costo minimo ) non è esatto! Esempio S s δ + ( S ) t s S δ + ( S ) t E. Amaldi Fondamenti di R.O. Politecnico di Milano

S s t s t = 6 = 5 il cammino ottenuto con il procedimento greedy non è di costo minimo. E. Amaldi Fondamenti di R.O. Politecnico di Milano 5

Algoritmo di Dijkstra ipotesi c ij, (i, j) A con c ij = + se (i, j) A input G = (N, A) con n = N e m = A, un nodo s N, c ij (i, j) A output Cammini minimi da s a tutti gli altri nodi 6 8 s 9 5 6 t E. Amaldi Fondamenti di R.O. Politecnico di Milano 6

Idea: Esplorare i nodi in ordine crescente del costo di un cammino minimo da s a ciascuno di essi. Ad ogni nodo j N si associa una etichetta L[j] che al termine dell algoritmo rappresenta il costo di un cammino minimo da s a j. Greedy sui cammini da s a j! # s # # 6 8 # # E. Amaldi Fondamenti di R.O. Politecnico di Milano 7 9 5 8 6 6 t # 5

Esempio s 6 8 Etichette associate ad ogni nodo j: [ L[j], pred[j] ] 9 dove pred[j] è il predecessore di j nel cammino minimo da s a j 5 6 t [, ] δ + ( S ) S * + < + [, ] s S E. Amaldi Fondamenti di R.O. Politecnico di Milano 8

S * [, ] [, ] [, ] + < + δ + ( S ) 8 5 S [, ] [, ] δ + ( S ) [, ] + < + * 5 [ 6, ] [, ] S δ + ( S ) [, ] [, ] 5 E. Amaldi Fondamenti di R.O. Politecnico di Milano 9 [ 6, ] * [ 8, 5 ] 6 + < +

[, ] [, ] δ + ( S ) * [ 8, 5 ] S [, ] [ 6, ] 5 S [, ] [ 8, 5 ] δ + ( S ) [, ] * 6 [, ] [ 6, ] [, ] E. Amaldi Fondamenti di R.O. Politecnico di Milano 5

Cammino minimo da s a j: pred[j], pred[ pred [j] ],..., s [, ] s [, ] 6 8 [, ] 9 5 [ 8, 5 ] 6 [ 6, ] t [, ] j= t Cammino di costo minimo da s a t Cammino di costo minimo da s al nodo E. Amaldi Fondamenti di R.O. Politecnico di Milano

Algoritmo di Dijkstra Struttura dati S N sottoinsieme di nodi di cui le etichette sono definitive L[ j] = costo di un cammino minimo da s a j, j S min { L[i] + c ij : (i, j) δ + (S) }, j S... E. Amaldi Fondamenti di R.O. Politecnico di Milano

s v L[v]= h c vh = L[h] δ + ( S ) i S c ij = L[i]=5 L[j] j Dato grafo G orientato e il sottoinsieme corrente di nodi S N, si considera il taglio orientato δ + (S) e si individua (v,h) δ + (S) tale che: L[v] + c vh = min { L[i] + c ij : (i, j) δ + (S) } cioè L[v] + c vh L[i] + c ij (i,j) δ + (S) E. Amaldi Fondamenti di R.O. Politecnico di Milano

pred[j] = v t.c. L[ v]+ c min L[i] + i c ij vj = { c : S} con = + se (i,j) A j S predecessore di j nel cammino minimo da s a j j S s L[i]=5 ij i c ij = j v c vj = L[v]= L[ j]=5 pred[ j]=v S δ + (S) E. Amaldi Fondamenti di R.O. Politecnico di Milano

Algoritmo di Dijkstra input output G = (N, A), n = N, m = A, s N, c ij (i, j) A Cammini minimi da s a tutti gli altri nodi BEGIN END S := {s}; L[s] := ; pred[s] := s; WHILE S n DO individuare (v,h) δ + (S) ={ (i,j) : (i,j) A, i S, j S} t.c. L[v] + c vh = min { L[i] + c ij : (i,j) δ + (S) }; L[h] := L[v] + c vh ; pred[h] := v; S := S {h}; END-WHILE taglio uscente NB: Se δ + (S)=, l algoritmo finisce: nessun h N \ S è raggiungibile da s E. Amaldi Fondamenti di R.O. Politecnico di Milano 5

Complessità Dipende da come, ad ogni iterazione, viene individuato l arco (v,h) del taglio uscente δ + (S). Se scansione esplicita di tutti m archi scartando quelli che non appartengono a δ + (S), complessità totale sarebbe O(nm), ossia O(n ) per i grafi densi. Determinando le etichette (qui L[j]) per aggiornamento ( algoritmo di Prim) basta considerare un solo arco di δ + (S) per ogni nodo j S complessità totale O(n ). E. Amaldi Fondamenti di R.O. Politecnico di Milano 6

Proprietà L algoritmo di Dijkstra è esatto. Dim. Al p-esimo passo: S = {s, i,..., i p } e L[ j ] = costo di un cammino minimo da s a j, j S costo di un cammino minimo con tutti i nodi intermedi in S j S Per induzione sul numero p di passi : base induttiva : è vero per p = : S = {s}, L[s] = e L[ j] = c sj j s passo induttivo : se è vero al p-esimo passo, lo è anche al (p+)-esimo E. Amaldi Fondamenti di R.O. Politecnico di Milano 7

(p+)-esimo passo: Sia h S il nodo che viene inserito in S e ϕ il cammino da s a h tale che: L[v] + c vh L[i] + c ij (i, j) δ + (S) Verifichiamo che per qualsiasi cammino π da s a h si ha c(π) c(ϕ) esistono i S e j S tali che S v h π = π (i, j) π dove ϕ (i, j) è il primo arco π δ + (S) s π L[v] i π π j per scelta di (v,h) costo c(ϕ) c(π) = c(π ) + c ij + c(π ) L[i] + c ij L[v] + c vh c(π ) L[ i ]: per ipotesi induttiva c(π ) perché c ij E. Amaldi Fondamenti di R.O. Politecnico di Milano 8

I cammini minimi da s a tutti i nodi j sono memorizzati mediante il vettore dei predecessori [, ] [ 8, 5 ] [, ] s 5 t [, ] j=t [, ] [ 6, ] I cammini minimi da s a tutti gli altri nodi formano un albero (albero dei cammini minimi). E. Amaldi Fondamenti di R.O. Politecnico di Milano 9

L algoritmo di Dijkstra non è applicabile se esistono archi di costo c ij < Esempio - In questo caso, otteniamo il cammino di costo mentre esiste il cammino di costo Il costo da a non è più modificato dopo il primo passo. Tramite una scelta greedy sui cammini uscenti dal nodo viene preso pari a c che è localmente migliore (c < c ) anche se il cammino ha un costo totale inferiore causa la presenza di c <. E. Amaldi Fondamenti di R.O. Politecnico di Milano

Esercizio Determinare i cammini minimi dal nodo a tutti gli altri nodi del seguente grafo: 5 6 7 E. Amaldi Fondamenti di R.O. Politecnico di Milano

.. Algoritmo di Floyd-Warshall Permette di determinare i cammini minimi tra tutte le coppie di nodi s, t anche in presenza di archi di costo negativo. N.B.: Se il grafo contiene circuiti di costo totale negativo, il problema non è ben definito! Esempio s -6 costo: - t L algoritmo di Floyd-Warshall permette di individuare l esistenza di circuiti di costo negativo E. Amaldi Fondamenti di R.O. Politecnico di Milano

Algoritmo di Floyd-Warshall input output Grafo orientato G = (N, A) descritto mediante la matrice n x n dei costi c ij. Per ogni coppia di nodi i, j N, il costo d ij di un cammino minimo da i a j. Struttura dati: due matrici n x n De P di cui gli elementi rappresentano al termine dell algoritmo d ij = costo di un cammino minimo da i a j p ij = predecessore di j nel cammino minimo da i a j E. Amaldi Fondamenti di R.O. Politecnico di Milano

E. Amaldi Fondamenti di R.O. Politecnico di Milano 6 8-9 Esempio D 9 8-6 P Algoritmo di Floyd-Warshall Per (i, j) A si pone d ij = c ij, per gli auto-anelli d ii = e per (i, j) A si pone d ij = La matrice dei predecessori viene inizializzata con p ij = i n.b.: da a e da a.

Ciclo h= : Per ogni coppia di nodi i, j (compreso casi i=j) si controlla se per andare da i a j conviene passare per h (=): d i + d j < d ij = c ij Operazione triangolare relativa al nodo h: Poiché non esistono tali archi, le matrici D e P rimangono invariate - 6 8 9 E. Amaldi Fondamenti di R.O. Politecnico di Milano 5 i d ih h d ij d hj j

E. Amaldi Fondamenti di R.O. Politecnico di Milano 6 D P 9 8-6 -7 - Per andare da a conviene passare per : d = mentre il cammino (,) (,) è di costo d + d = = -7 Il costo d viene rimpiazzato col costo del nuovo cammino d +d Poiché il predecessore di nel nuovo cammino è si pone p = Ciclo h= :

E. Amaldi Fondamenti di R.O. Politecnico di Milano 7 D P 9-8 - 6-7 - Per andare da a conviene passare per : d = mentre il cammino (,) (,) è di costo d + d = 8 = - Poiché il predecessore di nel nuovo cammino è si pone p = Il costo d viene rimpiazzato col costo del nuovo cammino d +d

- Per andare da a conviene passare per : d = 9 mentre il cammino (,) (,) è di costo d + d = + 6 = 7 Riguardo gli auto-anelli, si nota che passando per il cammino da a se stesso risulta di costo - = - 9 < d = Esiste quindi un circuito ( ) di costo negativo! Alla fine del ciclo h = le matrici dei costi e dei predecessori sono: D 8 6 7-7 - - -9 P E. Amaldi Fondamenti di R.O. Politecnico di Milano 8

Algoritmo di Floyd-Warshall BEGINg FOR i:= TO n DO FOR j:= TO n DO p ij := i; END-FOR END-FOR FOR h:= TO n DO /* operazione triangolare su h */ FOR i:= TO n WITH i h DO FOR j:= TO n WITH j h DO IF (d ih + d hj < d ij ) THEN d ij = d ih + d hj ; Operazione triangolare: p ij := p hj ; Si aggiorna d ij se dal punto di END-IF vista del costo risulta più END-FOR conveniente raggiungere j da i passando per h END-FOR FOR i:= TO n DO IF d ii < THEN STOP; END-IF /* un circuito negativo */ END-FOR END-FOR END E. Amaldi Fondamenti di R.O. Politecnico di Milano 9

Si può verificare (per induzione su h) che l algoritmo di Floyd-Warshall è esatto Complessità Nel caso peggiore l operazione triangolare viene eseguita su tutti i nodi h ( che sono n ) e per ogni coppia di nodi i e j ( che sono n ) Complessità totale: O(n ) E. Amaldi Fondamenti di R.O. Politecnico di Milano

Esercizio Determinare i cammini minimi tra tutte le coppie di nodi del seguente grafo: - 5-7 8 E. Amaldi Fondamenti di R.O. Politecnico di Milano