Upload
karik
View
50
Download
0
Embed Size (px)
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 Presentation
Citation preview
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 (NP-hard)
• 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
MILANO
TORINO
GENOVA
140
169
246
115 142
186
Modello
10
85
6
16
7
A
B
C D
Nodi=citta
Archi=strade
Pesi=distanze
GRAFO!
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
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
Esempio
C
2
5 2
3
4
A B
D
4
...
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
Percorso non hamiltoniano
2
5 6
3
4
A B
CD
4
Percorso non hamiltoniano
2
5 6
3
4
A B
CD
4
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 & 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”
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
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
2
5 2
3
4
A B
CD
4
...
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 attraverso24.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?
2
5 6
3
A B
CD
4
Applicate l’algoritmo Nearest Neighbour al seguente grafo a partire dal nodo A
9
2
6
5
A B
CD
4
3
Applicate l’algoritmo Nearest Neighbour al seguente grafo a partire dal nodo D
9
2
6
5
A B
CD
4
3
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
Provate a risolvere l’icosian game...
Il tour deve passare una sola volta da ogni nodo E’ un caso molto particolare di TSP!