Il problema del commesso viaggiatore Mauro Passacantando Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa mpassacantando@di.unipi.it M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 1 / 20
Problema In un dodecaedro regolare è possibile partire da un vertice e, passando sugli spigoli, toccare tutti i vertici una ed una sola volta e tornare al vertice di partenza? M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 2 / 20
Icosian game Grafo: nodi (=vertici del poliedro), archi(=spigoli del poliedro). Trovare un ciclo che passa su tutti i nodi una ed una sola volta. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 3 / 20
Icosian game M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 4 / 20
Altri problemi Per ognuno degli altri 4 solidi regolari cercare un ciclo che passa su tutti i vertici una ed sola volta. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 5 / 20
Altri problemi Ciclo del cavallo È possibile muovere un cavallo su una scacchiera in modo da passare su tutte le caselle della scacchiera e tornare alla casella iniziale? Vedi anche: http://neamar.fr/res/icosien M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 6 / 20
Proprietà Definizione Un ciclo che passa su tutti i nodi di un grafo una ed una sola volta è detto ciclo hamiltoniano. Come si fa a stabilire se in un grafo esiste un ciclo hamiltoniano? Vale una proprietà simile a quella dei cicli euleriani? M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 7 / 20
Problema del commesso viaggiatore (TSP) Problema Grafo (N,A) completo; c ij = costi sugli archi. Trovare un ciclo hamiltoniano di costo minimo. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 8 / 20
Problema del commesso viaggiatore (TSP) Problema Grafo (N,A) completo; c ij = costi sugli archi. Trovare un ciclo hamiltoniano di costo minimo. Applicazioni trasporti, logistica: (N,A ) rete stradale. S N, cerco ciclo di costo minimo che passi su tutti i nodi di S. Il problema è un TSP sul grafo (N,A), dove N = S, A = S S, c ij = costo cammino minimo da i a j sul grafo (N,A ). M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 8 / 20
Problema del commesso viaggiatore (TSP) Problema Grafo (N,A) completo; c ij = costi sugli archi. Trovare un ciclo hamiltoniano di costo minimo. Applicazioni trasporti, logistica: (N,A ) rete stradale. S N, cerco ciclo di costo minimo che passi su tutti i nodi di S. Il problema è un TSP sul grafo (N,A), dove N = S, A = S S, c ij = costo cammino minimo da i a j sul grafo (N,A ). scheduling produzione di circuiti integrati data analysis sequenze DNA...(vedi http://www.tsp.gatech.edu) applicazione Concorde TSP per iphone/ipad M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 8 / 20
Modello Variabili: x ij = { 1 se arco (i,j) ciclo hamiltoniano, 0 altrimenti. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 9 / 20
Modello Variabili: x ij = { 1 se arco (i,j) ciclo hamiltoniano, 0 altrimenti. min (i,j) A c ij x ij x ij {0,1} (i,j) A M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 9 / 20
Modello Variabili: x ij = { 1 se arco (i,j) ciclo hamiltoniano, 0 altrimenti. min (i,j) A c ij x ij x ij {0,1} (i,j) A (1)-(2): per ogni nodo deve esistere un arco entrante e un arco uscente (3): eliminazione di sottocicli. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 9 / 20
Modello Variabili: x ij = { 1 se arco (i,j) ciclo hamiltoniano, 0 altrimenti. min (i,j) A i N\{j} j N\{i} c ij x ij x ij = 1 j N (1) x ij = 1 i N (2) x ij {0,1} (i,j) A (1)-(2): per ogni nodo deve esistere un arco entrante e un arco uscente (3): eliminazione di sottocicli. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 9 / 20
Modello Variabili: x ij = { 1 se arco (i,j) ciclo hamiltoniano, 0 altrimenti. min (i,j) A i N\{j} j N\{i} (i,j) A: i S, j/ S c ij x ij x ij = 1 j N (1) x ij = 1 i N (2) x ij 1 S N, S,N (3) x ij {0,1} (i,j) A (1)-(2): per ogni nodo deve esistere un arco entrante e un arco uscente (3): eliminazione di sottocicli. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 9 / 20
Metodi euristici Metodo greedy sugli archi Dispongo gli archi in ordine crescente di costo. Seguendo l ordine, inserisco un arco se vengono rispettati tutti i vincoli. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 10 / 20
Metodi euristici Metodo greedy sugli archi Dispongo gli archi in ordine crescente di costo. Seguendo l ordine, inserisco un arco se vengono rispettati tutti i vincoli. Esempio 1 2 3 4 5 1 11 21 36 31 2 15 25 24 3 27 34 4 29 5 5 4 1 3 2 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 10 / 20
Metodi euristici Metodo greedy sugli archi Dispongo gli archi in ordine crescente di costo. Seguendo l ordine, inserisco un arco se vengono rispettati tutti i vincoli. Esempio 1 2 3 4 5 1 11 21 36 31 2 15 25 24 3 27 34 4 29 5 5 4 1 3 2 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 10 / 20
Metodi euristici Metodo greedy sugli archi Dispongo gli archi in ordine crescente di costo. Seguendo l ordine, inserisco un arco se vengono rispettati tutti i vincoli. Esempio 1 2 3 4 5 1 11 21 36 31 2 15 25 24 3 27 34 4 29 5 5 4 1 3 2 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 10 / 20
Metodi euristici Metodo greedy sugli archi Dispongo gli archi in ordine crescente di costo. Seguendo l ordine, inserisco un arco se vengono rispettati tutti i vincoli. Esempio 1 2 3 4 5 1 11 21 36 31 2 15 25 24 3 27 34 4 29 5 5 4 1 3 2 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 10 / 20
Metodi euristici Metodo greedy sugli archi Dispongo gli archi in ordine crescente di costo. Seguendo l ordine, inserisco un arco se vengono rispettati tutti i vincoli. Esempio 1 2 3 4 5 1 11 21 36 31 2 15 25 24 3 27 34 4 29 5 5 4 1 3 2 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 10 / 20
Metodi euristici Metodo greedy sugli archi Dispongo gli archi in ordine crescente di costo. Seguendo l ordine, inserisco un arco se vengono rispettati tutti i vincoli. Esempio 1 2 3 4 5 1 11 21 36 31 2 15 25 24 3 27 34 4 29 5 5 4 1 3 2 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 10 / 20
Metodi euristici Metodo greedy sugli archi Dispongo gli archi in ordine crescente di costo. Seguendo l ordine, inserisco un arco se vengono rispettati tutti i vincoli. Esempio 1 2 3 4 5 1 11 21 36 31 2 15 25 24 3 27 34 4 29 5 5 4 1 3 2 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 10 / 20
Metodi euristici Metodo greedy sugli archi Dispongo gli archi in ordine crescente di costo. Seguendo l ordine, inserisco un arco se vengono rispettati tutti i vincoli. Esempio 1 2 3 4 5 1 11 21 36 31 2 15 25 24 3 27 34 4 29 5 5 4 1 3 2 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 10 / 20
Metodi euristici Metodo greedy sugli archi Dispongo gli archi in ordine crescente di costo. Seguendo l ordine, inserisco un arco se vengono rispettati tutti i vincoli. Esempio 1 2 3 4 5 1 11 21 36 31 2 15 25 24 3 27 34 4 29 5 5 4 1 3 2 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 10 / 20
Metodi euristici Metodo greedy sugli archi Dispongo gli archi in ordine crescente di costo. Seguendo l ordine, inserisco un arco se vengono rispettati tutti i vincoli. Esempio 1 2 3 4 5 1 11 21 36 31 2 15 25 24 3 27 34 4 29 5 5 4 1 3 2 Il ciclo 1 2 3 4 5 1 costa 113. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 10 / 20
Metodi euristici Algoritmo del nodo più vicino 1. Scegli un nodo i, poni u := i (nodo corrente), C := i (sequenza di nodi). 2. Se C contiene tutti i nodi allora STOP 3. Tra i nodi di N \C trova il nodo j più vicino a u aggiungi j in coda a C, poni u := j e torna al passo 2. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 11 / 20
Metodi euristici Algoritmo del nodo più vicino 1. Scegli un nodo i, poni u := i (nodo corrente), C := i (sequenza di nodi). 2. Se C contiene tutti i nodi allora STOP 3. Tra i nodi di N \C trova il nodo j più vicino a u aggiungi j in coda a C, poni u := j e torna al passo 2. Esempio Partendo dal nodo 1 si ottiene il ciclo 1 2 3 4 5 1 11 21 36 31 2 15 25 24 3 27 34 4 29 5 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 11 / 20
Metodi euristici Algoritmo del nodo più vicino 1. Scegli un nodo i, poni u := i (nodo corrente), C := i (sequenza di nodi). 2. Se C contiene tutti i nodi allora STOP 3. Tra i nodi di N \C trova il nodo j più vicino a u aggiungi j in coda a C, poni u := j e torna al passo 2. Esempio 1 2 3 4 5 1 11 21 36 31 2 15 25 24 3 27 34 4 29 5 Partendo dal nodo 1 si ottiene il ciclo 1 2 3 4 5 1 di costo 113. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 11 / 20
Metodi euristici Algoritmo del nodo più vicino 1. Scegli un nodo i, poni u := i (nodo corrente), C := i (sequenza di nodi). 2. Se C contiene tutti i nodi allora STOP 3. Tra i nodi di N \C trova il nodo j più vicino a u aggiungi j in coda a C, poni u := j e torna al passo 2. Esempio 1 2 3 4 5 1 11 21 36 31 2 15 25 24 3 27 34 4 29 5 Partendo dal nodo 1 si ottiene il ciclo 1 2 3 4 5 1 di costo 113. Partendo dal nodo 5 si ottiene il ciclo M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 11 / 20
Metodi euristici Algoritmo del nodo più vicino 1. Scegli un nodo i, poni u := i (nodo corrente), C := i (sequenza di nodi). 2. Se C contiene tutti i nodi allora STOP 3. Tra i nodi di N \C trova il nodo j più vicino a u aggiungi j in coda a C, poni u := j e torna al passo 2. Esempio 1 2 3 4 5 1 11 21 36 31 2 15 25 24 3 27 34 4 29 5 Partendo dal nodo 1 si ottiene il ciclo 1 2 3 4 5 1 di costo 113. Partendo dal nodo 5 si ottiene il ciclo 5 2 1 3 4 5 di costo 112. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 11 / 20
Metodi euristici Algoritmo dell albero 1. Trova un albero di copertura di costo minimo T 2. Raddoppia tutti gli archi di T ottenendo il multigrafo G 3. Su G trova un ciclo euleriano C E 4. Estrai da C E un ciclo hamiltoniano prendendo i nodi, senza ripetizione, nello stesso ordine in cui compaiono in C E M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 12 / 20
Metodi euristici Esempio Applichiamo l algoritmo dell albero al problema precedente: 31 36 1 21 11 5 24 2 34 25 29 15 4 27 3 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 13 / 20
Metodi euristici Esempio (segue) 1. L albero di copertura di costo minimo T è formato dagli archi: M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 14 / 20
Metodi euristici Esempio (segue) 1. L albero di copertura di costo minimo T è formato dagli archi: {1,2},{2,3},{2,4},{2,5}. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 14 / 20
Metodi euristici Esempio (segue) 1. L albero di copertura di costo minimo T è formato dagli archi: {1,2},{2,3},{2,4},{2,5}. 2. Raddoppiando gli archi di T si ottiene G : 1 5 2 4 3 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 14 / 20
Metodi euristici Esempio (segue) 1. L albero di copertura di costo minimo T è formato dagli archi: {1,2},{2,3},{2,4},{2,5}. 2. Raddoppiando gli archi di T si ottiene G : 1 5 2 4 3 3. Un ciclo euleriano su G è dato dalla sequenza di nodi: M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 14 / 20
Metodi euristici Esempio (segue) 1. L albero di copertura di costo minimo T è formato dagli archi: {1,2},{2,3},{2,4},{2,5}. 2. Raddoppiando gli archi di T si ottiene G : 1 5 2 4 3 3. Un ciclo euleriano su G è dato dalla sequenza di nodi: 2 1 2 3 2 4 2 5 2 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 14 / 20
Metodi euristici Esempio (segue) 1. L albero di copertura di costo minimo T è formato dagli archi: {1,2},{2,3},{2,4},{2,5}. 2. Raddoppiando gli archi di T si ottiene G : 1 5 2 4 3 3. Un ciclo euleriano su G è dato dalla sequenza di nodi: 2 1 2 3 2 4 2 5 2 4. Dal ciclo euleriano ricaviamo il ciclo hamiltoniano: M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 14 / 20
Metodi euristici Esempio (segue) 1. L albero di copertura di costo minimo T è formato dagli archi: {1,2},{2,3},{2,4},{2,5}. 2. Raddoppiando gli archi di T si ottiene G : 1 5 2 4 3 3. Un ciclo euleriano su G è dato dalla sequenza di nodi: 2 1 2 3 2 4 2 5 2 4. Dal ciclo euleriano ricaviamo il ciclo hamiltoniano: 2 1 3 4 5 2 di costo 112. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 14 / 20
Rilassamenti Eliminando i vincoli di connessione, il problema diventa un problema di assegnamento di costo minimo. min (i,j) A i N\{j} j N\{i} c ij x ij x ij = 1 x ij = 1 j N i N x ij {0,1} (i,j) A Il valore ottimo di tale problema è una stima per difetto del valore ottimo del TSP. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 15 / 20
Rilassamenti Se da un ciclo hamiltoniano eliminiamo un arco, otteniamo un cammino che passa per tutti nodi. Questo cammino è un particolare albero di copertura. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 16 / 20
Rilassamenti Se da un ciclo hamiltoniano eliminiamo un arco, otteniamo un cammino che passa per tutti nodi. Questo cammino è un particolare albero di copertura. Teorema Se T è un albero di copertura di costo minimo, allora il suo costo è una stima per difetto del valore ottimo del TSP. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 16 / 20
Rilassamenti Esempio L albero di copertura di costo minimo sul grafo 1 31 36 21 11 5 24 2 34 25 29 15 è formato dagli archi: 4 27 3 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 17 / 20
Rilassamenti Esempio L albero di copertura di costo minimo sul grafo 1 31 36 21 11 5 24 2 34 25 29 15 è formato dagli archi: {1,2},{2,3},{2,4},{2,5} e costa 75. 4 27 3 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 17 / 20
Rilassamenti È possibile migliorare la stima inferiore ottenuta con l albero di copertura di costo minimo. Osservazione Fissiamo un nodo r. Ogni ciclo hamiltoniano è formato da 2 archi incidenti sul nodo r (che lo connettono ai nodi p e q) e da un cammino (che è un particolare albero di copertura) che connette p e q. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 18 / 20
Rilassamenti È possibile migliorare la stima inferiore ottenuta con l albero di copertura di costo minimo. Osservazione Fissiamo un nodo r. Ogni ciclo hamiltoniano è formato da 2 archi incidenti sul nodo r (che lo connettono ai nodi p e q) e da un cammino (che è un particolare albero di copertura) che connette p e q. Definizione Un r albero è un insieme di n archi di cui 2 sono incidenti sul nodo r n 2 formano un albero di copertura sui nodi diversi da r M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 18 / 20
Rilassamenti È possibile migliorare la stima inferiore ottenuta con l albero di copertura di costo minimo. Osservazione Fissiamo un nodo r. Ogni ciclo hamiltoniano è formato da 2 archi incidenti sul nodo r (che lo connettono ai nodi p e q) e da un cammino (che è un particolare albero di copertura) che connette p e q. Definizione Un r albero è un insieme di n archi di cui 2 sono incidenti sul nodo r n 2 formano un albero di copertura sui nodi diversi da r Teorema Ogni ciclo hamiltoniano è un r albero. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 18 / 20
Rilassamenti Teorema Il costo dell r albero di costo minimo è una stima per difetto del valore ottimo del TSP. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 19 / 20
Rilassamenti Teorema Il costo dell r albero di costo minimo è una stima per difetto del valore ottimo del TSP. È facile risolvere il problema dell r albero di costo minimo? M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 19 / 20
Rilassamenti Teorema Il costo dell r albero di costo minimo è una stima per difetto del valore ottimo del TSP. È facile risolvere il problema dell r albero di costo minimo? SI, basta trovare 2 archi di costo minimo incidenti sul nodo r (ovvio) un albero di copertura di costo minimo sui nodi diversi da r (alg. Kruskal) M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 19 / 20
Rilassamenti Teorema Il costo dell r albero di costo minimo è una stima per difetto del valore ottimo del TSP. È facile risolvere il problema dell r albero di costo minimo? SI, basta trovare 2 archi di costo minimo incidenti sul nodo r (ovvio) un albero di copertura di costo minimo sui nodi diversi da r (alg. Kruskal) Teorema Se T è un albero di copertura di costo minimo e T è un r albero di costo minimo, allora costo(t) costo(t ), cioè la stima fornita da T non è mai peggiore di quella fornita da T. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 19 / 20
Rilassamenti Esempio Il 2 albero di costo minimo sul grafo 31 36 1 21 11 5 24 2 34 25 29 15 è formato dagli archi: 4 27 3 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 20 / 20
Rilassamenti Esempio Il 2 albero di costo minimo sul grafo 31 36 1 21 11 5 24 2 34 25 29 15 è formato dagli archi: {1,2}, {2,3} (incidenti sul nodo 2) 4 27 3 M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 20 / 20
Rilassamenti Esempio Il 2 albero di costo minimo sul grafo 31 36 1 21 11 5 24 2 34 25 29 15 4 3 27 è formato dagli archi: {1,2}, {2,3} (incidenti sul nodo 2) {1,3}, {3,4}, {4,5} (albero di copertura sui nodi diversi da 2). di costo 103. M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università di Pisa 20 / 20