il problema del commesso viaggiatore

38
Il Problema del Commesso Viaggiatore

Upload: karik

Post on 18-Jan-2016

46 views

Category:

Documents


0 download

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

TRANSCRIPT

Page 1: Il Problema  del  Commesso  Viaggiatore

Il Problema del

Commesso Viaggiatore

Page 2: 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?

Page 3: Il Problema  del  Commesso  Viaggiatore

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

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

Modelliamo e Studiamo TSP

Page 6: Il Problema  del  Commesso  Viaggiatore

Le citta’... (nodi)

AOSTA

MILANO

TORINO

GENOVA

Page 7: Il Problema  del  Commesso  Viaggiatore

Le distanze... (archi pesati)

AOSTA

MILANO

TORINO

GENOVA

140

169

246

115 142

186

Page 8: Il Problema  del  Commesso  Viaggiatore

Modello

10

85

6

16

7

A

B

C D

Nodi=citta

Archi=strade

Pesi=distanze

GRAFO!

Page 9: Il Problema  del  Commesso  Viaggiatore

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

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

Esempio

C

2

5 2

3

4

A B

D

4

...

Page 12: Il Problema  del  Commesso  Viaggiatore

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

Percorso non hamiltoniano

2

5 6

3

4

A B

CD

4

Page 14: Il Problema  del  Commesso  Viaggiatore

Percorso non hamiltoniano

2

5 6

3

4

A B

CD

4

Page 15: Il Problema  del  Commesso  Viaggiatore

Come si risolve TSP?

Page 16: Il Problema  del  Commesso  Viaggiatore

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

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

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

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

Metodi di risoluzione per TSP

Page 21: Il Problema  del  Commesso  Viaggiatore

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

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

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

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

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

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

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

Esempio Nearest Neighbour

2

5 2

3

4

A B

CD

4

...

Page 29: Il Problema  del  Commesso  Viaggiatore

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

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

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

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

Prima della pratica ... un po’ di esercizi di riepilogo...

Page 34: Il Problema  del  Commesso  Viaggiatore

Quanti e quali cicli hamiltoniani contiene il seguente grafo?

2

5 6

3

A B

CD

4

Page 35: Il Problema  del  Commesso  Viaggiatore

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

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

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

Provate a risolvere l’icosian game...

Il tour deve passare una sola volta da ogni nodo E’ un caso molto particolare di TSP!