Το Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem Έλενα Ρόκου Μεταδιδακτορική Ερευνήτρια ΕΜΠ Κηρυττόπουλος Κωνσταντίνος Επ. Καθηγητής ΕΜΠ
Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς. 2
Το Πρόβλημα του Περιοδεύοντος Πωλητή Ένας πωλητής, πρέπει να επισκεφτεί n πελάτες σε διαφορετικές πόλεις, Θέλουμε να βρούμε την πιο σύντομη ή/και χαμηλότερου κόστους πορεία Αρχή και τέλος είναι η ίδια πόλη (ΑΦΕΤΗΡΙΑ) Πρέπει να επισκεφτεί κάθε πόλη ακριβώς μια φορά. B C A D F E 3
Αναπαράσταση προβληματος Το πρόβλημα μπορεί να αναπαρασταθεί από έναν πλήρη μη προσανατολισμένο γράφο στον οποίο όλοι οι κόμβοι αντιστοιχούν σε πόλεις και οι ακμές (edges) μεταξύ των κόμβων αντιστοιχούν στους άμεσους δρόμους μεταξύ των πόλεων Στόχος: η αναζήτηση της βέλτιστης (μικρότερης σε μήκος ή κόστος) διαδρομής που ενώνει τις ν πόλεις - κόμβους ενός γράφου. Η διαδρομή αυτή πρέπει να είναι Χαμιλτονιανή (Hamiltonian) δηλαδή να καταλήγει στο σημείο από όπου ξεκίνησε, χωρίς να περνά από κάποια πόλη 2 φορές 4
Διαφορές από MST και Ελάχιστης Διαδρομής Γιατί να μη λύσουμε το TSP πρόβλημα ως πρόβλημα συντομότερης διαδρομής ή MST; Στο TSP ζητάμε ένα μονοπάτι με ελάχιστο μήκος (ή κόστος) που διέρχεται από όλους τους κόμβους του γράφου και επιστρέφει στο κόμβο αρχής Στο πρόβλημα συντομότερης διαδρομής μας ενδιαφέρει η ελάχιστη διαδρομή χωρίς υποχρέωση επίσκεψης όλων των διαθέσιμων κόμβων Στο MST ένα δέντρο με ελάχιστο κόστος 5
Μαθηματική Μοντελοποίηση x ij = 1 αν i j στη διαδρομή αλλιώς 0 Cij κόστος για να πάω από την πόλη i στην πόλη j Κ υποσύνολο των πόλεων 1... M 1 αφετηρία 6
Επίλυση προβλημάτων Η εταιρεία «Glass Co» μόλις ανέλαβε τη διανομή προίοντων σε μια νέα περιοχή που περιλαμβάνει 9 αστικά κέντρα για τα οποία θέλει να αποστέλλει ένα πωλητή. Το δρομολόγιο πρέπει να περιλαμβάνει από μια φορά όλες τις πόλεις και να ξεκινάει και να τελειώνει στη πόλη Α που είναι και τα κεντρικά γραφεία. Οι δυνατές διαδρομές και οι χιλιομετρικές αποστάσεις των κέντρων φαίνονται στον ακόλουθο γράφο. A 48 20 16 28 33 B F 10 36 56 68 62 Βρείτε τη δέουσα διασύνδεση για να επιτευχθεί το ελάχιστο κόστος αν αυτό εξαρτάται αποκλειστικά από την απόσταση που διανύεται. E 21 40 43 41 C 20 D 7
Αλγόριθμοι επίλυσης Αλγόριθμος Heinritz- Hsiao (1969) Αναπτύχθηκε για την εύρεση διαδρομών ελάχιστου κόστους για τη διανομή πρώτων υλών, οδηγεί σε καλές λύσεις κοντινές στη βέλτιση χωρίς απαίτηση σύνθετων μαθηματικών υπολογισμών. Αλγόριθμος Branch and Bound Η μέθοδος προτάθηκε από τους A. H. Land και A. G. Doig το 1960 και στηρίζεται στην χρήση άνω ή κάτω ορίων για τον περιορισμό του χώρου λύσεων. Δυναμικός Προγραμματισμός Εξελικτικοί Αλγόριθμοι 8
Αλγόριθμος Heinritz- Hsiao 1. Καταστρώνουμε πίνακα με τα κόστη των ακμών. 2. Επιλέγουμε την γραμμή του πίνακα που αντιστοιχεί στον πρώτο κόμβο αφετηρία της διαδρομής. 3. Επιλέγουμε τη στήλη, έστω m με το μικρότερο δυνατό κόστος που μπορεί να συνδεθεί με τον κόμβο αφετηρίας. 4. Μεταβαίνουμε στη γραμμή που αντιστοιχεί στην τιμή που επιλέξαμε (m). 5. Συνεχίζουμε αντίστοιχα τα βήματα 3-5 έως ότου επιστρέψουμε στο κόμβο αφετηρίας. Στην εφαρμογή προσέχουμε να εξαιρούμε κάθε φορά τους κόμβους που έχουμε ήδη επισκεφθεί! 9
Αλγόριθμος Heinritz- Hsiao Η εταιρεία «Glass Co» μόλις ανέλαβε τη διανομή προίοντων σε μια νέα περιοχή που περιλαμβάνει 6 αστικά κέντρα για τα οποία θέλει αποστέλλει ένα πωλητή. Το δρομολόγιο πρέπει να περιλαμβάνει από μια φορά όλες τις πόλεις και να ξεκινάει και να τελειώνει στη πόλη Α που είναι και τα κεντρικά γραφεία. Οι δυνατές διαδρομές και οι χιλιομετρικές αποστάσεις των κέντρων φαίνονται στον ακόλουθο γράφο. A 48 20 16 28 33 B F 10 36 56 68 62 Βρείτε τη δέουσα διασύνδεση για να επιτευχθεί το ελάχιστο κόστος αν αυτό εξαρτάται αποκλειστικά από την απόσταση που διανύεται. E 21 40 43 41 C 20 D 10
Αλγόριθμος Heinritz- Hsiao Καταστρώνουμε πίνακα με τα κόστη των ακμών. A B C D E F Α - 48 20 16 28 33 Β 48-36 56 68 10 C 20 36-21 43 20 D 16 56 21-40 41 E 28 68 43 40-62 F 33 10 20 41 62-11
Αλγόριθμος Heinritz- Hsiao 1. Επιλέγουμε την γραμμή του πίνακα που αντιστοιχεί στον πρώτο κόμβο αφετηρία της διαδρομής. 2. Επιλέγουμε τη στήλη, με το μικρότερο δυνατό κόστος που μπορεί να συνδεθεί με τον κόμβο αφετηρίας. A B C D E F Α - 48 20 16 28 33 Β 48-36 56 68 10 C 20 36-21 43 20 D 16 56 21-40 41 E 28 68 43 40-62 F 33 10 20 41 62 - Διαδρομή: Α D 12
Αλγόριθμος Heinritz- Hsiao 1. Μεταβαίνουμε στη γραμμή που αντιστοιχεί στην τιμή που επιλέξαμε. 2. Επιλέγουμε τη στήλη, με το μικρότερο δυνατό κόστος που μπορεί να συνδεθεί με τον κόμβο αφετηρίας. A B C D E F Α - 48 20 16 28 33 Β 48-36 56 68 10 C 20 36-21 43 20 D 16 56 21-40 41 E 28 68 43 40-62 F 33 10 20 41 62 - Διαδρομή: Α D C 13
Αλγόριθμος Heinritz- Hsiao 1. Μεταβαίνουμε στη γραμμή που αντιστοιχεί στην τιμή που επιλέξαμε. 2. Επιλέγουμε τη στήλη, με το μικρότερο δυνατό κόστος που μπορεί να συνδεθεί με τον κόμβο αφετηρίας. A B C D E F Α - 48 20 16 28 33 Β 48-36 56 68 10 C 20 36-21 43 20 D 16 56 21-40 41 E 28 68 43 40-62 F 33 10 20 41 62 - Διαδρομή: Α D C F 14
Αλγόριθμος Heinritz- Hsiao 1. Μεταβαίνουμε στη γραμμή που αντιστοιχεί στην τιμή που επιλέξαμε. 2. Επιλέγουμε τη στήλη, με το μικρότερο δυνατό κόστος που μπορεί να συνδεθεί με τον κόμβο αφετηρίας. A B C D E F Α - 48 20 16 28 33 Β 48-36 56 68 10 C 20 36-21 43 20 D 16 56 21-40 41 E 28 68 43 40-62 F 33 10 20 41 62 - Διαδρομή: Α D C F B E A Κόστος=16+21+20+10+68+28=163 15
Αλγόριθμος Heinritz- Hsiao Διαδρομή: Α D C F B E A Κόστος=16+21+20+10+68+28=163 B C A 16 10 68 21 20 28 D F E 16
Αλγόριθμος Heinritz- Hsiao Άσκηση Η εταιρία 6 Logistics θέλει να σχεδιάσει το καθημερινό δρομολόγιο προς τα καταστήματα που εξυπηρετεί. Οι αποστάσεις των καταστημάτων σε χλμ. φαίνονται στο ακόλουθο σχήμα. Υπολογίστε το βέλτιστο δρομολόγιο με κριτήριο το ελάχιστο μήκος διαδρομής. Α 3 8 6 Β 5 4 5 12 10 Γ Δ 7 Ε 1 17
Αλγόριθμος Heinritz- Hsiao Λύση. 3 Β Α 4 5 Γ A B Γ Δ E Δ 7 Ε 1 Α - 3 8 5 12 Β 3-4 6 5 Γ 8 4-10 1 Δ 5 6 10-7 E 12 5 1 7-18
Αλγόριθμος Branch and Bound 1. Καταστρώνουμε πίνακα με τα κόστη των ακμών. 2. Υπολογίζουμε το κάτω φράγμα του μήκους της διαδρομής (Lower Bound - LB): Βρίσκουμε την ελάχιστη τιμή ανά γραμμή και τις αθροίζουμε. 3. Θεωρούμε δέντρο με ρίζα την αφετηρία και τιμή ίση με το LB. 4. ΔΙΑΚΛΑΔΩΣΗ: δημιουργούμε κόμβους παιδιά για κάθε δυνατή εναλλακτική. 5. Υπολογίζουμε την τιμή του κόμβου ως το άθροισμα του μήκους διαδρομής που αναπαριστά ο κόμβος συν το ελάχιστο για όσα τμήματα της διαδρομής δεν έχουμε αποφασίσει. 19
Αλγόριθμος Branch and Bound 6. Επαναλαμβάνουμε το 4 για τον κόμβο με την μικρότερη τιμή εως ότου φτάσουμε στον προτελευταίο κόμβο της διαδρομής. 7. Στον προτελευταίο κόμβο ενός μονοπατιού: 1. υπολογίζουμε το μήκος της συνολικής διαδρομής 2. αν μικρότερη από την τρέχουσα καλύτερη τιμή την αποθηκεύουμε ως καλύτερη. 8. Επιστρέφουμε (backtrack) στον κόμβο με τη ΜΙΚΡΟΤΕΡΗ ΤΙΜΗ του ίδιου ή εάν δεν έχει μείνει του προηγούμενου επιπέδου. 9. ΟΡΙΟΘΕΤΗΣΗ: Αν ο υπό εξέταση κόμβος έχει τιμή ΜΕΓΑΛΥΤΕΡΗ από την τρέχουσα καλύτερη ΔΕΝ τον εξετάζουμε και πάμε στο βήμα 7 αλλιώς στο βήμα 4. 20
Αλγόριθμος Branch and Bound Η εταιρεία «Transport Co» μόλις ανέλαβε τη διανομή προίοντων για ένα δίκτυο καταστημάτων που περιλαμβάνει 5 super market. Το δρομολόγιο πρέπει να περιλαμβάνει από μια φορά όλες τις τοποθεσίες και να ξεκινάει και να τελειώνει στην κεντρική αποθήκη Α. Οι δυνατές διαδρομές και οι χιλιομετρικές αποστάσεις των κέντρων φαίνονται στον ακόλουθο γράφο. 2 1 14 7 9 4 3 6 20 5 10 15 4 8 5 Βρείτε τη δέουσα διασύνδεση για να επιτευχθεί το ελάχιστο κόστος αν αυτό εξαρτάται αποκλειστικά από την απόσταση που διανύεται. 21
Αλγόριθμος Branch and Bound 1. Καταστρώνουμε πίνακα με τα κόστη των ακμών. 2. Υπολογίζουμε το κάτω φράγμα του μήκους της διαδρομής. Βρίσκουμε την ελάχιστη τιμή ανά γραμμή και αθροίζουμε. 1 2 3 4 5 1-14 4 20 10 2 14-7 6 9 3 4 7-5 15 4 20 6 5-8 5 10 9 15 8 - min 4 6 4 5 8 LB=27 22
Αλγόριθμος Branch and Bound 3. Θεωρούμε δέντρο με ρίζα την αφετηρία και τιμή ίση με το LB. 4. ΔΙΑΚΛΑΔΩΣΗ: δημιουργούμε κόμβους παιδιά για κάθε δυνατή εναλλακτική. min [1] 27 [1,2] [1,3] [1,4] [1,5] 4 6 4 5 8 LB=27 23
Αλγόριθμος Branch and Bound 5. Υπολογίζουμε την τιμή του κόμβου ως το άθροισμα του μήκους διαδρομής που αναπαριστά ο κόμβος συν το ελάχιστο για όσα τμήματα της διαδρομής δεν έχουμε αποφασίσει. [1] 27 [1,2]=14+ (6+4+5+8)=37 [1,2] 37 [1,3] 27 [1,4] 43 [1,5] 33 [1,3]=4+ (6+4+5+8)=27 [1,4]=20+ (6+4+5+8)=43 [1,5]=10+ (6+4+5+8)=33 24
Αλγόριθμος Branch and Bound 6. Επαναλαμβάνουμε το 4 για τον κόμβο με την μικρότερη τιμή εως ότου φτάσουμε στον προτελευταίο κόμβο της διαδρομής. [1] 27 [1,2] 37 [1,3] 27 [1,4] 43 [1,5] 33 [1,3,2] 30 [1,3,4] 28 [1,3,5] 38 [1,3,2]=4+7+(6+5+8)=30 [1,3,4]=4+5+ (6+5+8)=28 [1,3,5]=4+15 (6+5+8)=38 25
Αλγόριθμος Branch and Bound 7. Στον προτελευταίο κόμβο ενός μονοπατιού υπολογίζουμε το μήκος της συνολικής διαδρομής και αν μικρότερη από την τρέχουσα καλύτερη τιμή την αποθηκεύουμε ως καλύτερη. [1] 27 [1,2] 37 [1,3] 27 [1,4] 43 [1,5] 33 [1,3,2] 30 [1,3,4] 28 [1,3,4,2] [1,3,4,2,5,1] 34 [1,3,5] 38 ΤΡΕΧΟΝ ΒΕΛΤΙΣΤΟ 34 [1,3,4,2]= [1,3]+[3,4]+[4,2]+min(K2)+min(K5) δε χρειάζεται να το υπολογίσουμε [1,3,4,2,5,1]=[1,3]+[3,4]+[4,2]+[2,5]+[5,1]=4+5+6+9+10=34 26
Αλγόριθμος Branch and Bound 8. Επιστρέφουμε (backtrack) στον κόμβο με τη ΜΙΚΡΟΤΕΡΗ ΤΙΜΗ του ιδίου ή εάν τους έχουμε επισκεφθεί όλους, του προηγούμενου επιπέδου. [1] 27 [1,2] 37 [1,3] 27 [1,4] 43 [1,5] 33 [1,3,2] 30 [1,3,4] 28 [1,3,4,2] [1,3,4,2,5,1] 34 [1,3,5] 38 [1,3,4,5] [1,3,4,5,2,1] 40 ΤΡΕΧΟΝ ΒΕΛΤΙΣΤΟ 34 [1,3,4,5]= [1,3]+[3,4]+[4,5]+min(K2)+min(K5) δε χρειάζεται να το υπολογίσουμε [1,3,4,5,2,1]=[1,3]+[3,4]+[4,5]+[5,2]+[2,1]=4+5+8+9+14=40 27
Αλγόριθμος Branch and Bound 9. ΟΡΙΟΘΕΤΗΣΗ: Αν ο υπό εξέταση κόμβος έχει τιμή ΜΕΓΑΛΥΤΕΡΗ από την τρέχουσα καλύτερη ΔΕΝ τον εξετάζουμε και πάμε στο βήμα 7 αλλιώς στο βήμα 4. [1] 27 [1,2] 37 [1,3] 27 [1,4] 43 [1,5] 33 [1,3,2] 30 [1,3,4] 28 [1,3,4,2] [1,3,4,2,5,1] 34 [1,3,5] 38 [1,3,4,5] [1,3,4,5,2,1] 40 ΤΡΕΧΟΝ ΒΕΛΤΙΣΤΟ 34 28
Αλγόριθμος Branch and Bound [1] 27 [1,2] 37 [1,3] 27 [1,4] 43 [1,5] 33 [1,3,2] 30 [1,3,4] 28 [1,3,5] 38 [1,3,2,4] [1,3,2,4, 5,1] 35 [1,3,2,5] [1,3,2,5, 4,1] 48 [1,3,4,2] [1,3,4,2, 5,1] 34 [1,3,4,5] [1,3,4,5, 2,1] 40 ΤΡΕΧΟΝ ΒΕΛΤΙΣΤΟ 34 [1,3,2,4,5,1]=[1,3]+[3,2]+[2,4]+[4,5]+[5,1]=4+7+6+8+10=35 [1,3,2,5,4,1]=[1,3]+[3,2]+[2,5]+[5,4]+[4,1]=4+7+9+8+20=48 29
Αλγόριθμος Branch and Bound [1] 27 [1,2] 37 [1,3] 27 [1,4] 43 [1,5] 33 [1,3,2] 30 [1,3,4] 28 [1,3,5] 38 [1,3,2,4] [1,3,2,4, 5,1] 35 [1,3,2,5] [1,3,2,5, 4,1] 48 [1,3,4,2] [1,3,4,2, 5,1] 34 [1,3,4,5] [1,3,4,5, 2,1] 40 ΤΡΕΧΟΝ ΒΕΛΤΙΣΤΟ 34 30
Αλγόριθμος Branch and Bound [1,2] 37 [1,3] 27 [1] 27 [1,4] 43 [1,5] 33 ΤΡΕΧΟΝ ΒΕΛΤΙΣΤΟ 34 [1,5,2] 34 [1,5,3] 40 [1,5,4] 33 [1,5,4,2] [1,5,4,2,3,1] 44 [1,5,4,3] [1,5,4,3,2,1] 35 ΒΕΛΤΙΣΤΗ ΔΙΑΔΡΟΜΗ: 1->3->4->2->5->1 με μήκος 34 31
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα Ε.Μ.Π.» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 32