Individuare un cammino connettente due o più nodi di un grafo è un problema che compare come sottoproblema di molti altri problemi di ottimizzazione discreta ed ha, inoltre, numerosissime applicazioni nel mondo reale.
Si pensi, ad esempio, al problema di individuare un percorso tra due località riportate in una cartina stradale, in cui i vertici sono le località, mentre gli archi sono le strade che le collegano.
In tal caso, ad ogni arco è associato un costo che può essere la lunghezza in chilometri della strada o il tempo medio necessario per percorrerla (in quest’ultimo caso, dipendente dal traffico).
Se invece di un percorso qualunque, si vuole individuarne uno di costo totale minimo, allora il problema risultante è noto come problema del cammino minimo in un grafo.
Nel seguito si supporrà il caso più generale in cui il grafo istanza del problema sia orientato, per cui il costo di collegamento tra due nodi dipende dalla direzione del percorso.
Si noti che il caso di grafo orientato è più generale, dato che un grafo non orientato può sempre essere trasformato
in un grafo orientato.
Sia
→ G=(V,A) un grafo orientato, |V|=n, |A|=m;
→ il costo associato all’arco (i,j), per ogni (i,j) in A;
→ un cammino che collega a visitando in sequenza i nodi intermedi ed ha costo (lunghezza) totale pari a
Un cammino P che collega il nodo al nodo è detto minimo se non esiste in G un cammino alternativo di costo totale inferiore a c(P).
Tipicamente, si può essere interessati ad individuare in G
Il problema 1. è noto come problema di cammino minimo singola origine – singola destinazione (SPP – Shortest Path Problem).
Il problema 2. è noto come problema dell’albero dei cammini minimi (SPT – Shortest Path Tree Problem).
I problemi 1. e 2. ammettono soluzione se
Si definiscano m variabili di decisione binarie con il seguente significato:
L’obiettivo è minimizzare il costo totale del percorso P e cioè
Per definire i vincoli del problema, occorre imporre la semplicità del percorso soluzione P.
A questo punto, si hanno tutti gli elementi per descrivere formalmente il problema SPP da un nodo s ad un nodo d diverso da s di un grafo orientato G=(V,A):
Nota: la matrice dei vincoli tecnologici è la matrice di incidenza nodo-arco di G ed è unimodulare. Dunque, qualunque soluzione ammissibile del rilassamento continuo avrà componenti intere.
Con analoghi ragionamenti si giunge alla descrizione matematica del problema SPT da un nodo s ai restanti nodi di un grafo orientato G=(V,A):
Nota: la matrice dei vincoli tecnologici è la matrice di incidenza nodo-arco di G ed è unimodulare. Dunque, qualunque soluzione ammissibile del rilassamento continuo avrà componenti intere.
L’algoritmo di Dijkstra risolve il problema SPP ed il problema SPT in un grafo G=(V,A), tale che (G non può contenere cicli di costo negativo).
In quanto segue faremo riferimento al problema SPT.
Gli n-1 cammini minimi da s sono memorizzati in un’arborescenza realizzata attraverso l’uso dell’array dei predecessori p[n], definito come segue:
Teorema. Sia G=(V,A) un grafo orientato. Sia S un sottoinsieme proprio di V, s in S e per ogni i in S, sia L[i] il costo del cammino minimo da s ad i (L[s]=0).
Sia, inoltre,
Se , allora .
Dimostrazione. Per dimostrare che è il costo di un cammino minimo da s ad h, occorre
verificare che ogni altro percorso alternativo P non ha costo minore.
1. Presentazione del Corso ed Introduzione alla Programmazione Mat...
2. Introduzione ai Problemi di PL
6. Algoritmo del Simplesso Revisionato
7. Algoritmo del Simplesso Tabellare
10. Soluzione di Problemi di PL tramite Algoritmo del Simplesso
11. Problemi di Programmazione Lineare Intera
12. PLI con matrice dei vincoli unimodulare
13. Problemi di PLI: Branch & Bound
14. Il Problema dello Zaino 0/1 e il Problema dello Zaino Frazionar...
15. Il Problema dello Zaino 0/1: un algoritmo B&B
16. Il Problema dello Zaino 0/1: un algoritmo di Programmazione Din...
17. Richiami di Teoria dei Grafi: definizioni e notazioni
18. Il Problema del Vertex Cover Minimo di un Grafo
19. Il Problema dell'Albero di Copertura Minimo (MST)
20. Il Problema dell'Albero di Copertura Minimo (MST): esempio
D. Bertsimas e J.N. Tsitsiklis, Introduction to Linear Optimization, Belmont - Massachusetts (USA), Dynamic Ideas and Athena Scientific, 2008.
M. Fischetti, Lezioni di Ricerca Operativa, Padova, Edizioni Libreria Progetto Padova, 1999.
S. Martello, Fondamenti di Ricerca Operativa L-A, Bologna, Società Editrice Esculapio, 2004.
S. Martello, Ricerca Operativa LS, Bologna, Società Editrice Esculapio, 2004.
Dispense del Corso di Ricerca Operativa presso l'Università degli Studi di Pisa.
Dispense ed Appunti del Corso prodotte da Paola Festa.