390 likes | 531 Views
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
E N D
Traveling Salesman’s Problem (TSP) • Un commesso viaggiatore deve visitare un certo numero di città • Conosce la distanzada 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 • ...
Le citta’... (nodi) AOSTA MILANO TORINO GENOVA
Le distanze... (archi pesati) AOSTA 186 MILANO 115 142 140 TORINO 246 169 GENOVA
Modello A Nodi=citta 10 B 16 Archi=strade 8 5 7 Pesi=distanze C 6 D GRAFO!
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 pesatitrovare un percorso che sia: • un ciclohamiltoniano (tour) • inizia e finisce nello stesso node • passa da tutti i nodi una sola volta • con peso totale (somma dei pesi) minimo
A B 2 4 4 2 5 D 3 Esempio C ...
A B 2 4 4 6 5 D 3 C Ciclo hamiltoniano A,B,C,D,A: 2+4+3+2=11 Con questo percorso “visito” tutti i nodi!
Percorso non hamiltoniano A B 2 4 4 6 5 D 3 C
Percorso non hamiltoniano A B 2 4 4 6 5 D 3 C
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
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 esattiApplicabili solo a problemi con un numero di città relativamente basso Algoritmi euristiciProducono 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 B 2 4 4 5 2 D 3 C ...
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)
Quanti e quali cicli hamiltoniani contiene il seguente grafo? A B 2 6 5 4 D 3 C
Applicate l’algoritmo Nearest Neighbour al seguente grafo a partire dal nodo A A B 9 4 6 2 3 D C 5
Applicate l’algoritmo Nearest Neighbour al seguente grafo a partire dal nodo D A B 9 4 6 2 3 D C 5
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 B D C
Provate a risolvere l’icosian game... Il tour deve passare una sola volta da ogni nodo E’ un caso molto particolare di TSP!