Θεωρία & Αλγόριθμοι Γράφων Το πρόβλημα του περιοδεύοντος πωλητή Data Science & Engineering Lab
Data Science & Engineering Lab Περιοδεύων πωλητής Πρόβλημα: με ποιά σειρά πρέπει να επισκεφθεί τις πόλεις ο πωλητής και να επιστρέψει στη δική του διανύοντας τη μικρότερη δυνατή συνολική απόσταση; Ζυγισμένος Ευκλείδειος γράφος: ισχύει η ανισοϊσότητα του τριγώνου Αν ο γράφος δεν είναι Ευκλείδειος, τότε κατά τη βέλτιστη λύση ο πωλητής μπορεί να περνά από την ίδια πόλη περισσότερες από μία φορές. Αλλιώς το πρόβλημα ανάγεται σε πρόβλημα εύρεσης Hamiltonian κύκλων με το ελάχιστο βάρος. 2 2 4 3 1 6 3 7 3 4 5 4 3 Data Science & Engineering Lab
Data Science & Engineering Lab Περιοδεύων πωλητής (2) Σε έναν πλήρη γράφο ο συνολικός αριθμός Hamiltonian κύκλων ισούται με (n–1)!/2. Η λύση του πρoβλήματος με εξαντλητικό τρόπο έχει πολυπλοκότητα O(nn), είναι δηλαδή δυσχείριστο. Αν χρησιμοποιηθεί η μέθοδος του δυναμικού προγραμματισμού ή η μέθοδος της διακλάδωσης με περιορισμό, η πολυπλοκότητα προβλήματος παραμένει εκθετική: O(n22n). Επίσης, το πρόβλημα έχει αντιμετωπισθεί με Γεννετικούς Αλγορίθμους, με Νευρωνικά Δίκτυα και με Αλγόριθμους Μυρμηγκιών (ant). Data Science & Engineering Lab
TSP με Διακλάδωση και Περιορισμό 25 1 2 4 3 30 6 5 15 23 20 16 24 22 13 11 18 26 12 21 14 Τεχνική branch & bound 25 18 12 22 30 15 14 21 11 23 26 24 20 13 16 Data Science & Engineering Lab
Data Science & Engineering Lab TSP με Διακλάδωση και Περιορισμό (2) Πρέπει να βρεθεί ένα κάτω όριο για το μήκος του Hamiltonian κύκλου. Θεωρούμε ανά κορυφή τις 2 ακμές με το μικρότερο βάρος (με τη μία μπαίνουμε στην κορυφή, με την άλλη βγαίνουμε) 25 18 12 22 30 15 14 21 11 23 26 24 20 13 16 12 18 11 14 15 13 16 20 30 25 33 36 24 173 Βρίσκουμε κάτω όριο = 173/2 = 86,5 Τι θα προκύψει αν θεωρήσουμε τις στήλες του πίνακα γειτνίασης? Data Science & Engineering Lab
Data Science & Engineering Lab TSP με Διακλάδωση και Περιορισμό (3) Θεωρούμε ότι αφετηρία είναι η κορυφή 1. Ποιό είναι το όριο στην περίπτωση αυτή, αν από την κορυφή 1 πάμε στην κορυφή 2? 25 18 12 22 30 15 14 21 11 23 26 24 20 13 16 12 25 37 11 36 15 18 33 13 16 20 24 191 Βρίσκουμε κάτω όριο = 191/2 = 95,5 Data Science & Engineering Lab
Data Science & Engineering Lab TSP με Διακλάδωση και Περιορισμό (4) Αν από την κορυφή 1 πάμε στη 2, το όριο είναι 95,5 Αν από την κορυφή 1 πάμε στη 3, το όριο είναι 86,5 Αν από την κορυφή 1 πάμε στη 4, το όριο είναι 86,5 Αν από την κορυφή 1 πάμε στη 5, το όριο είναι 89,5 Αν από την κορυφή 1 πάμε στη 6, το όριο είναι 101 Τα όρια αυτά εισάγονται διαδοχικά σε ένα σωρό ελαχίστων. Εξάγεται από το σωρό το 86,5 του μονοπατιού <1,3> ως περισσότερο υποσχόμενο και εισάγονται τα μήκη των μονοπατιών <1,3,2>, <1,3,4>, <1,3,5>, <1,3,6> κοκ. Γιατί συνεχίζουμε με το μονοπάτι <1,3> και όχι με το μονοπάτι <1,4>? Data Science & Engineering Lab
Data Science & Engineering Lab TSP με Διακλάδωση και Περιορισμό (5) Το σχήμα δείχνει τον περιορισμό των διακλαδώσεων. Ο βέλτιστος κύκλος είναι <1456231> με κόστος 92. Η κόκκινη αρίθμηση δείχνει τη σειρά εξαγωγής από το σωρό. Data Science & Engineering Lab
Data Science & Engineering Lab TSP με Δυναμικό Προγραμματισμό (1) Έστω ότι ο κύκλος αρχίζει και τελειώνει στην κορυφή 1 Κάθε κύκλος αποτελείται από την ακμή <1,k> για κάποιο kV–{1} και ένα μονοπάτι από την κορυφή k στην κορυφή 1. Το μονοπάτι αυτό περνάει από κάθε κορυφή του συνόλου V–{1,k} μία φορά ακριβώς Έστω ότι g(i,S) είναι το μήκος του μικρότερου μονοπατιού που αρχίζει από την κορυφή i, περνάει από όλες τις κορυφές του συνόλου S και καταλήγει στην κορυφή 1 g(1,V–{1}) είναι το μήκος του βέλτιστου κύκλου Με βάση την αρχή της βελτιστότητας προκύπτει ότι: g(1,V–{1}) = min {c1k + g(k,V–{1,k})} (1) 2≤k≤n Data Science & Engineering Lab
Data Science & Engineering Lab TSP με Δυναμικό Προγραμματισμό (2) Γενικεύοντας τον προηγούμενο τύπο (1) προκύπτει g(i,S) = minjS {cij + g(j,S–{j})} (2) Ο τύπος (2) μπορεί να επιλυθεί αν γνωρίζουμε όλα τα επί μέρους του τύπου (1), δηλαδή υπολογίζουμε το g(1,V–{1}) αν γνωρίζουμε το g(k,V–{1,k}) για κάθε k Προφανώς ισχύει g(i,)=ci,1, για 1≤i≤n Στη συνέχεια μπορούμε να χρησιμοποιήσουμε το αποτέλεσμα αυτό για τον υπολογισμό του g(i,S) για κάθε S μεγέθους 1, μετά μεγέθους 2, 3 κοκ Όταν |S|<n–1, οι τιμές των i και S για τον υπολογισμό του g(i,S) πρέπει να είναι i1, 1S και iS Data Science & Engineering Lab
Data Science & Engineering Lab TSP με Δυναμικό Προγραμματισμό (3) Παράδειγμα: έστω ο κατευθυνόμενος ζυγισμένος γράφος με αναπαράσταση Ισχύει κατά σειρά g(2,) = c21 = 5 g(3,) = c31 = 6 g(4,) = c41 = 8 Στη συνέχεια g(2,{3}) = c23+g(3,) = 9+6 = 15 g(2,{4}) = c24+g(4,) = 10+8 = 18 g(3,{2}) = c32+g(2,) = 13+5 = 18 g(3,{4}) = c34+g(4,) = 12+8 = 20 g(4,{2}) = c42+g(2,) = 8+5 = 13 g(4,{3}) = c43+g(3,) = 9+6 =15 10 15 20 5 9 6 13 12 8 Data Science & Engineering Lab
Data Science & Engineering Lab TSP με Δυναμικό Προγραμματισμό (4) Στη συνέχεια υπολογίζουμε το g(i,S) για |S|=2, όπου i1; 1S και iS g(2,{3,4}) = min {c23+g(3,{4}), c24+g(4,{3})} = 25 g(3,{2,4}) = min {c32+g(2,{4}), c34+g(4,{2})} = 25 g(4,{2,3}) = min {c42+g(2,{3}), c43+g(3,{2})} = 23 Τελικά λαμβάνουμε g(1,{2,3,4}) = min {c12+g(2,{3, 4}), c13+g(3,{2,4}), c14+g(4,{2,3})} = min {35,40,43} = 35 Η διαδρομή με αυτό το ελάχιστο μήκος μπορεί να βρεθεί αν για κάθε g(i,S) κρατούμε την τιμή του j που ελαχιστοποιεί αυτή την τιμή. Έστω ότι J(i, S) είναι αυτή η τιμή J(1,{2,3,4})=2. Αυτό σημαίνει ότι η διαδρομή ξεκινά από την κορυφή 1 και πάει στην κορυφή 2. Η υπολειπόμενη διαδρομή μπορεί να βρεθεί από το g(2,{3,4}). Ισχύει J(2,{3,4})=4. Επομένως η απόμενη ακμή είναι <2,4>. Η υπολειπόμενη διαδρομή είναι g(4,{3}). Ισχύει J(4,{3})=3. Συνεπώς η βέλτιστη διαδρομή είναι <1,2,4,3,1> Data Science & Engineering Lab
Data Science & Engineering Lab TSP με Δυναμικό Προγραμματισμό (5) Έστω N το πλήθος των g(i,S) που πρέπει να υπολογίσουμε πριν τον τύπο (1) για τον υπολογισμό του g(1,V–{1}) Για κάθε τιμή του |S| υπάρχουν n–1 επιλογές για το i. Το πλήθος των διακριτών συνόλων S μεγέθους k, που δεν περιέχουν τα 1 και i είναι C(n-2,k) n-2 Ισχύει N = (n–1) C(n-2,k) = (n–1) 2n-2 k=0 Ο τελικός υπολογισμός του τύπου (2) είναι n φορές οι προηγούμενοι υπολογισμοί. Συνεπώς απαιτείται χρόνος O(n22n) Προφανώς είναι καλύτερα από την εξαντλητική απαρίθμηση Μειονέκτημα της μεθόδου είναι ότι απαιτείται χώρος τάξης O(n2n) Data Science & Engineering Lab
Το μέγεθος του TSP 100,000 = 105 άνθρωποι σε ένα γήπεδο 5,500,000,000 = 5.5 109 άνθρωποι στη γη 1,000,000,000,000,000,000,000 = 1021 λίτρα νερού στη γη 1010 years = 3 1017 seconds η ηλικία του σύμπαντος # of cities n possible solutions (n-1)! = # of cyclic permutations 10 181,000 20 10,000,000,000,000,000 = 1016 50 100,000,000,000,000,000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000,000 = 1062 Data Science & Engineering Lab
Data Science & Engineering Lab Εφαρμογή TSP για πόλεις των ΗΠΑ Μία αφίσα του 1962 από την Proctor & Gamble για το διαγωνισμό επίλυσης του προβλήματος για 33 πόλεις των ΗΠΑ το 1962. Data Science & Engineering Lab
Data Science & Engineering Lab Εξέλιξη επίδοσης TSP Data Science & Engineering Lab Data Engineering Lab
Data Science & Engineering Lab Εξέλιξη επίδοσης TSP (2) Data Science & Engineering Lab
Data Science & Engineering Lab Εφαρμογή TSP για 49 πόλεις των ΗΠΑ Το 1954 λύθηκε το πρόβλημα TSP για 49 πόλεις των ΗΠΑ George Dantzig, Ray Fulkerson, Selmer Johnson (1954) Data Science & Engineering Lab Data Engineering Lab
Data Science & Engineering Lab Εφαρμογή TSP για 100 πόλεις της Ευρώπης Το μήκος του βέλτιστου κύκλου είναι 21134 km. Data Science & Engineering Lab Data Engineering Lab
Data Science & Engineering Lab Εφαρμογή TSP για 120 πόλεις της Γερμανίας Το μήκος του βέλτιστου κύκλου είναι 6942 km (1977) Πλήθος λύσεων (179 ψηφία) Data Science & Engineering Lab
Data Science & Engineering Lab Εφαρμογή TSP για 13.509 πόλεις των ΗΠΑ Το 1998 λύθηκε το πρόβλημα TSP για 13,509 πόλεις των ΗΠΑ με πληθυσμό άνω των 500 κατοίκων http://www.tsp.gatech.edu Data Science & Engineering Lab Data Engineering Lab
Data Science & Engineering Lab Εφαρμογή TSP για πόλεις των ΗΠΑ Βέλτιστος κύκλος TSP http://www.tsp.gatech.edu Data Science & Engineering Lab Data Engineering Lab
3 βέλτιστοι κύκλοι για πόλεις της Γερμανίας http://www.math.princeton.edu/ tsp/d15sol/dhistory.html Data Science & Engineering Lab Data Science & Engineering Lab
Βέλτιστος κύκλος για 24.978 πόλεις της Σουηδίας Βέλτιστος κύκλος για 24.978 πόλεις της Σουηδίας 24.978 πόλεις, 2004 Data Science & Engineering Lab
Τρέχον παγκόσμιο ρεκόρ (2006) Με παραλληλισμό του κώδικα Concorde και 2719.5 cpu-days N = 85,900 Data Science & Engineering Lab
Data Science & Engineering Lab Εφαρμογή TSP για PLA 11,849 τρύπες σε programmed logic array http://www.tsp.gatech.edu Data Science & Engineering Lab Data Engineering Lab
Data Science & Engineering Lab Εφαρμογή TSP για PLA (2) Βέλτιστος κύκλος TSP για το ρομποτικό μηχανισμό που θα ανοίξει τις τρύπες http://www.tsp.gatech.edu Data Science & Engineering Lab Data Engineering Lab
Προσεγγιστικοί Αλγόριθμοι Επίλυση με ευριστικές υπο-βέλτιστες λύσεις Μέτρο σύγκρισης είναι η ποσότητα 1<L/Lopt=a 1 2 4 3 51 6 5 60 56 21 36 68 57 61 35 70 13 Data Science & Engineering Lab
Μέθοδος πλησιέστερου γείτονα Θέτουμε i←1. Επιλέγουμε μία τυχαία κορυφή v0 και θεωρούμε το μονοπάτι Pi=v0 Αν i=n, τότε C=Pn είναι ένας κύκλος Hamilton, αλλιώς αναζητείται η ακμή e με το μικρότερο βάρος ώστε να προσπίπτει σε μία από τις δύο τερματικές κορυφές του Pi και αν είναι δυνατόν, να μη δημιουργείται κύκλος με τις κορυφές του Pi. Σχηματίζεται το μονοπάτι Pi+1=(Pie). Θέτουμε i←i+1. Πηγαίνουμε στο βήμα 2. Έχει αποδειχθεί ότι α=(|ln n|+1)/2 και άρα για μεγάλα n έχει σημαντική απόκλιση από τη βέλτιστη λύση Πολυπλοκότητα; Data Science & Engineering Lab
Data Science & Engineering Lab Παράδειγμα 1 2 4 3 51 6 5 13 60 56 21 36 68 57 61 35 70 Μέθοδος πλησιέστερου γείτονα (άπληστη) 3-6 βάρος 2 5-3-6 βάρος 2+35=37 4-5-3-6 βάρος 37+21=58 4-5-3-6-1 βάρος 58+51=109 4-5-3-6-1-2 βάρος 109+13=122 4-5-3-6-1-2-4 βάρος 122+70=192 Data Science & Engineering Lab
Μέθοδος μικρότερης εισαγωγής Θέτουμε i←1. Επιλέγουμε μία τυχαία κορυφή v0 και θεωρούμε το μονοπάτι Ci=v0 Αν i=n, τότε C=Cn είναι ένας κύκλος Hamilton, αλλιώς αναζητείται μία κορυφή vi που δεν υπάρχει στον κύκλο Ci και είναι πλησιέστερα προς ένα ζεύγος διαδοχικών κορυφών {wi,wi+1} του Ci. Σχηματίζεται ο κύκλος Ci+1 εισάγοντας την κορυφή vi μεταξύ των wi και wi+1. Θέτουμε i←i+1. Πηγαίνουμε στο Βήμα 2. Στο βήμα 2 ελαχιστοποιείται η ποσότητα dist(wi,vi)+ dist(vi,wi+1)–dist(wi, wi+1). Πρέπει να ισχύει η τριγωνική ανισότητα. Ισχύει ότι α≤2 Πολυπλοκότητα; Data Science & Engineering Lab
Data Science & Engineering Lab Παράδειγμα Μέθοδος μικρότερης εισαγωγής (άπληστη) (3) (3,6,3) (3,6,5,3) (3,6,5,4,3) (3,6,1,5,4,3) (3,6,2,1,5,4,3) βάρος 192 13 1 2 61 51 60 68 68 51 2 6 3 70 35 57 70 36 56 5 4 21 Data Science & Engineering Lab
Ελάχιστα ζευγνύοντα δέντρα Βρίσκουμε ένα ελάχιστο ζευγνύον δένδρο Τ του G. Εκτελούμε μία αναζήτηση κατά βάθος. [Αν από μία κορυφή v0 προσπελασθεί η v1, τότε η διαδικασία συνεχίζεται προς κάποια νέα γειτονική κορυφή της v1 και όχι της v0. Αν προσεγγισθεί κάποια κορυφή από όπου είναι αδύνατο η διαδικασία να συνεχισθεί σε μία μη ήδη επισκεφθείσα κορυφή, τότε η διαδικασία συνεχίζει από την προηγούμενη της τρέχουσας κορυφής με την ίδια τεχνική.] Αν είναι η σειρά επίσκεψης των κορυφών του T από το Βήμα 2, τότε ο κύκλος Hamilton είναι Data Science & Engineering Lab
Data Science & Engineering Lab Παράδειγμα Ο(m+n logn) Μέθοδος με ελάχιστα ζευγνύοντα δένδρα Με τον αλγόριθμο του Prim προκύπτει το επόμενο ζευγνύον δένδρο και λαμβάνεται το αποτέλεσμα με DFS 1 2 3 6 5 4 51 35 21 68 57 13 DFS με αφετηρία τον κόμβο 3 (3,1,2,5,4,6,3): βάρος 212 DFS με αφετηρία τον κόμβο 1 (1,2,3,5,4,6,1) βάρος 237 κλπ Data Science & Engineering Lab
Διαδοχικές ανταλλαγές ακμών Θεωρείται ένας Hamiltonian κύκλος C=(v1,v2,…,vn,v1) Για κάθε i,j, τέτοια ώστε 1<i+1<j<n, λαμβάνεται ένας νέος Hamiltonian κύκλος Ci,j=(v1,v2,…,vi,vj,vj-1,…,vi+1, vj+1,vj+2,…,vn,v1) διαγράφοντας τις ακμές (vi,vi+1) και (vj,vj+1) και προσθέτοντας τις ακμές (vi,vj) και (vi+1,vj+1). Αν για κάποια i,j προκύψει w(vi,vj)+w(vi+1,vj+1)<w(vi,vi+1)+w(vj,vj+1) τότε θέτουμε C=Ci,j. Πηγαίνουμε στο Βήμα 2. Data Science & Engineering Lab
Data Science & Engineering Lab Παράδειγμα Μέθοδος με διαδοχικές ανταλλαγές ακμών (3,4,5,6,1,2,3) βάρος 237 (3,6,5,4,1,2,3) βάρος 210 (3,6,5,4,2,1,3) βάρος 193 (3,6,1,2,4,5,3) βάρος 192 Ο τελευταίος κύκλος δεν βελτιώνεται περισσότερο αλλά μπορεί να βρεθεί μικρότερος κύκλος με άλλη κορυφή ως αφετηρία. 13 1 2 61 51 60 68 68 51 2 6 3 70 35 57 70 36 56 5 21 4 Data Science & Engineering Lab
Πρακτική εύρεση κάτω φράγματος Μέθοδος πρακτικής εύρεσης κάτω ορίου σε πρόβλημα TSP: Θεωρούμε ελάχιστο ζευγνύον δένδρο σε γράφο G–v με βάρος w(T) Θεωρούμε δύο ακμές προσπίπτουσες στο v έτσι ώστε το άθροισμα των βαρών τους να είναι ελάχιστο Aν v=5, τότε w(T)=122, 122+21+35=178=κάτω φράγμα 1 2 3 6 5 4 13 51 35 56 21 Data Science & Engineering Lab
Σημαντικά βιβλία για TSP The Traveling Salesman Problem, Lawler, Lenstra, Rinnooy Kan, and Shmoys (Editors), Wiley (1985). The Traveling Salesman Problem and Its Variations, Gutin and Punnen (Editors), Kluwer (2002). The Traveling Salesman Problem: A Computational Study, Applegate, Bixby, Chvatal, and Cook, Princeton University Press (2006). In Pursuit of the Traveling Salesman, Cook, Princeton University Press (2012). Data Science & Engineering Lab