il problema del commesso viaggiatore
DESCRIPTION
Il Problema del Commesso Viaggiatore. Traveling Salesman’s Problem (TSP). Un commesso viaggiatore deve visitare un certo numero di città C onosce la distanza da una città all’altra - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/1.jpg)
Il Problema del
Commesso Viaggiatore
![Page 2: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/2.jpg)
Traveling Salesman’s Problem (TSP)
• Un commesso viaggiatore deve visitare un certo numero di città
• Conosce la distanza da una città all’altra
• Vuole determinare il percorso più breve che gli permetta di partire da casa sua e di farvi ritorno dopo aver visitato ogni città una sola volta.
• Come può fare?
![Page 3: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/3.jpg)
Caratteristiche
• TSP e’ uno dei problemi matematici piu’ studiati in informatica
• Appartiene alla classe dei problemi difficili (NP-hard)
• La prima formulazione risale al 1857 e al gioco icosian inventato dal matematico William Hamilton
![Page 4: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/4.jpg)
Forma generale TSP
• La formulazione generale considera forme geometrie qualsiasi e distanze tra le citta’
• Venne introdotta tra gli anni ‘40 e ’50• Nel corso degli anni ha trovato numerose istanziazioni
interessanti:– logistica e trasporti– costruzione di circuiti stampati (pianificazione del percorso
del trapano)– protocolli di routing– DNA sequencing– ...
![Page 5: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/5.jpg)
Modelliamo e Studiamo TSP
![Page 6: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/6.jpg)
Le citta’... (nodi)
AOSTA
MILANO
TORINO
GENOVA
![Page 7: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/7.jpg)
Le distanze... (archi pesati)
AOSTA
MILANO
TORINO
GENOVA
140
169
246
115 142
186
![Page 8: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/8.jpg)
Modello
10
85
6
16
7
A
B
C D
Nodi=citta
Archi=strade
Pesi=distanze
GRAFO!
![Page 9: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/9.jpg)
Percorso in un grafo
10
85
6
16
7
A
B
C D
A, D, B rappresenta un percorso da A a B con peso 16+5
![Page 10: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/10.jpg)
TSP come problema sui grafi
Dato un grafo G con N nodi e archi pesatitrovare un percorso che sia:– un ciclo hamiltoniano (tour)
• inizia e finisce nello stesso node
• passa da tutti i nodi una sola volta
– con peso totale (somma dei pesi) minimo
![Page 11: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/11.jpg)
Esempio
C
2
5 2
3
4
A B
D
4
...
![Page 12: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/12.jpg)
Ciclo hamiltoniano
A,B,C,D,A: 2+4+3+2=11
Con questo percorso “visito” tutti i nodi!
2
5 6
3
4
A B
CD
4
![Page 13: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/13.jpg)
Percorso non hamiltoniano
2
5 6
3
4
A B
CD
4
![Page 14: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/14.jpg)
Percorso non hamiltoniano
2
5 6
3
4
A B
CD
4
![Page 15: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/15.jpg)
Come si risolve TSP?
![Page 16: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/16.jpg)
Soluzioni a TSP
• Trovare manualmente una soluzione esatta del problema TSP (cioe’ calcolare un tour minimo) e’ molto difficile
• La difficolta’ e’ legata al numero di possibili percorsi che occorre esplorare per calcolare quello minimo
![Page 17: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/17.jpg)
Per capire la difficolta’ del problema... facciamo due conti
• Negli USA ci sono 49 stati continentali + un distretto
• Supponiamo che Obama programmi di fare un solo comizio in ogni stato
![Page 18: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/18.jpg)
Quanti percorsi devo considerare per calcolare il migliore?
• Partendo da Washington, Obama ha 49 possibili scelte per la prima tappa
• Fissata la prima tappa, rimangono 48 scelte per la seconda tappa
• Fissata la seconda tappa, rimangono 47 scelte per la terza tappa
• ...
![Page 19: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/19.jpg)
Il numero di possibili percorsi tra i quali trovare il piu’ breve e’
49! = 49 * 48 * ... * 3 * 2 * 1
... nell’ordine di 1062 cioe’ maggiore del numero di atomi di cui è composta la Terra
![Page 20: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/20.jpg)
Metodi di risoluzione per TSP
![Page 21: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/21.jpg)
Come si puo’ fare?• Per poter affrontare questo tipo di problemi
dobbiamo necessariamente programmare delle soluzioni su uno o piu’ elaboratori
• Per calcolare le soluzioni usiamo quindi dei programmi che rappresentano i passi che l’elaboratore deve eseguire (algoritmo)
• Lo sviluppo di algoritmi per risolvere problemi come TSP e’ uno degli obiettivi principali dell’Informatica
![Page 22: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/22.jpg)
Algoritmo
• Algoritmo: sequenza di istruzioni che deve eseguire l’elaboratore
• Si scrivono usando i linguaggi di programmazione• Esempi di istruzioni:
– memorizza ... in ...
- confronta ... con ...
- per ogni valore in ... esegui....
- ripeti ... fino a che ... diventa vera
![Page 23: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/23.jpg)
Algoritmi per TSP
Algoritmi esatti
Applicabili solo a problemi con un numero di città relativamente basso
Algoritmi euristici
Producono soluzioni probabilmente buone, ma impossibili da provare essere ottimali
![Page 24: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/24.jpg)
Un algoritmo esatto
Generate & TestPer ogni permutazione P di [1...N]– calcola la somma S dei pesi sugli archi del ciclo
indotto da P– se S e’ minore dei precedenti calcolati
memorizza il cammino in Min
Alla fine Min contiene un ciclo “minimo”
![Page 25: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/25.jpg)
Raffinamento
MinD=MAX_INT
MinP=nullo
Per ogni permutazione P=[i1,....,iN] di [1...N]
– S=dist(i1,i2)+....+dist(iN,i1)
– se S < MinD allora MinP=PMinD=S
Alla fine MinP contiene tour minimo
![Page 26: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/26.jpg)
Problema
• Abbiamo visto che per TSP con molte citta’ il numero di possibili percorsi puo’ essere astronomico!
• Provate a pensare e scrivere un algoritmo euristico... quello che probabilmente usate nei vostri viaggi...
![Page 27: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/27.jpg)
Un Algoritmo Euristico
Nearest Neighbour (NN)
• Partendo da un nodo iniziale scelto a piacere, ci muoviamo sempre verso la citta’ piu’ vicina non ancora visitata
• L’algoritmo termina quando abbiamo visitato tutte le citta’
![Page 28: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/28.jpg)
Esempio Nearest Neighbour
2
5 2
3
4
A B
CD
4
...
![Page 29: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/29.jpg)
Algoritmo Nearest Neighbour
• I = nodo iniziale
• Fino a che ho ancora nodi da visitare – Sia J il nodo non ancora visitato piu’ vicino ad I
• marco J come visitato
– proseguo la ricerca
• La sequenza dei nodi marcati rappresenta il ciclo hamiltoniano
![Page 30: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/30.jpg)
Osservazioni su NN
• E’ un algoritmo “intuitivo”• L’algoritmo Nearest Neighbour non da’ sempre la
soluzione ottimale (cercare di ottenere un vantaggio immediato non sempre e’ la scelta migliore...)
• Tuttavia e’ una buona approssimazione dell’algoritmo ottimale
![Page 31: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/31.jpg)
Esistono molti altri modi
• Algoritmi basati su programmazione intera lineare (LIP)– si codifica il problema come un insieme di
disequazioni ed una funzione costo– si usano euristiche per problemi di LIP
• Algoritmi genetici
• ...
![Page 32: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/32.jpg)
Sistemi per risolvere TSP
• Concorde: http://www.tsp.gatech.edu/
• Nel 2004 ha calcolato un tour minimo attraverso24.978 citta’ in Svezia (72.500 km)
![Page 33: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/33.jpg)
Prima della pratica ... un po’ di esercizi di riepilogo...
![Page 34: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/34.jpg)
Quanti e quali cicli hamiltoniani contiene il seguente grafo?
2
5 6
3
A B
CD
4
![Page 35: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/35.jpg)
Applicate l’algoritmo Nearest Neighbour al seguente grafo a partire dal nodo A
9
2
6
5
A B
CD
4
3
![Page 36: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/36.jpg)
Applicate l’algoritmo Nearest Neighbour al seguente grafo a partire dal nodo D
9
2
6
5
A B
CD
4
3
![Page 37: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/37.jpg)
Aggiungete i pesi agli archi in modo che la soluzione calcolata con l’algoritmo NN a partire
dal nodo A non sia quella ottimaleA B
CD
![Page 38: Il Problema del Commesso Viaggiatore](https://reader035.vdocuments.pub/reader035/viewer/2022062301/56814d80550346895dbade41/html5/thumbnails/38.jpg)
Provate a risolvere l’icosian game...
Il tour deve passare una sola volta da ogni nodo E’ un caso molto particolare di TSP!