Il Problema
del
Commesso
Viaggiatore
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?
Caratteristiche
• TSP e’ uno dei problemi matematici piu’ studiati
in informatica
• Appartiene alla classe dei problemi difficili (NPhard)
• La prima formulazione risale al 1857 e al gioco
icosian inventato dal matematico William
Hamilton
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
– ...
Modelliamo e Studiamo
TSP
Le citta’... (nodi)
AOSTA
MILANO
TORINO
GENOVA
Le distanze... (archi pesati)
AOSTA
186
115
142
TORINO
MILANO
246
140
169
GENOVA
Modello
A
Nodi=citta
10
B
16
8
Archi=strade
5
7
C
GRAFO!
6
D
Pesi=distanze
Percorso in un grafo
A
10
B
16
8
5
7
C
6
D
A, D, B rappresenta un percorso da A a B con peso 16+5
TSP come problema sui grafi
Dato un grafo G con N nodi e archi pesati
trovare 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
Esempio
A
5
C
B
2
4
4
2
3
D
...
Ciclo hamiltoniano
A
5
B
2
4
4
6
3
C
A,B,C,D,A: 2+4+3+2=11
Con questo percorso “visito” tutti i nodi!
D
Percorso non hamiltoniano
A
5
C
B
2
4
4
6
3
D
Percorso non hamiltoniano
A
5
C
B
2
4
4
6
3
D
Come si risolve TSP?
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
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
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
• ...
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
Metodi di risoluzione per TSP
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
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
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
Un algoritmo esatto
Generate & Test
Per 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”
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=P
MinD=S
Alla fine MinP contiene tour minimo
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...
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’
Esempio Nearest Neighbour
A
5
C
B
2
4
4
2
3
D
...
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
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
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
• ...
Sistemi per risolvere TSP
• Concorde: http://www.tsp.gatech.edu/
• Nel 2004 ha calcolato un tour minimo attraverso
24.978 citta’ in Svezia (72.500 km)
Prima della pratica ... un po’
di esercizi di riepilogo...
Quanti e quali cicli hamiltoniani contiene il
seguente grafo?
A
5
C
2
B
6
4
3
D
Applicate l’algoritmo Nearest Neighbour al
seguente grafo a partire dal nodo A
A
B
9
4
2
C
6
3
5
D
Applicate l’algoritmo Nearest Neighbour al
seguente grafo a partire dal nodo D
A
B
9
4
2
C
6
3
5
D
Aggiungete i pesi agli archi in modo che la
soluzione calcolata con l’algoritmo NN a partire
dal nodo A non sia quella ottimale
A
C
B
D
Provate a risolvere l’icosian game...
Il tour deve passare una sola volta da ogni nodo
E’ un caso molto particolare di TSP!
Scarica

Il Problema del Commesso Viaggiatore