Πρόβλημα συντομότερης διαδρομής - Shortest path problem Κηρυττόπουλος Κωνσταντίνος Επ. Καθηγητής ΕΜΠ
Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς. date: /0/0
Πρόβλημα συντομότερης διαδρομής Αποτελεί υποπερίπτωση του προβλήματος μεταφοράς με τους εξής περιορισμούς: Ένας κόμβος αφετηρίας και ένας κόμβος προορισμού Παραγωγή κόμβου αφετηρίας = ζήτηση σε κόμβο προορισμού = date: /0/0
Σχετικά προβλήματα Μεταφορά ή μετάβαση από ένα σημείο σε ένα άλλο οδικώς, σιδηροδρομικώς ή αεροπορικώς. Συστήματα GPS date: /0/0
Επίλυση προβλημάτων Από τον κόμβο του ακόλουθου σχήματος θέλετε να βρείτε τη συντομότερη διαδρομή μετάβασης στον κόμβο. Οι τιμές στις ακμές αντιπροσωπεύουν αποστάσεις. 6 date: /0/0
Αλγόριθμοι επίλυσης Αλγόριθμος Dijkstra date: /0/0 6
Αλγόριθμος Dijkstra. Δημιουργούμε πίνακα στην πρώτη γραμμή του οποίου γράφουμε τους κόμβους.. Για κάθε κόμβο (στήλη του πίνακα) τοποθετούμε στη στήλη όλες τις ακμές που ξεκινούν από αυτόν με αύξουσα σειρά απόστασης. Παραλείπονται οι ακμές που οδηγούν στον κόμβο αφετηρίας ή προέρχονται από τον κόμβο προορισμού.. Επιλέγουμε τον κόμβο που βρίσκεται εγγύτερα στον κόμβο αφετηρίας, έστω είναι ο Χ. Διαγράφουμε όλες τις άλλες ακμές που οδηγούν στον Χ. Σημειώνουμε την απόσταση του Χ από τον κόμβο αφετηρίας πάνω από τη στήλη του Χ.. Εντοπίζουμε τους κόμβους που βρίσκονται πλησιέστερα στους συνδεδεμένους κόμβους. Για κάθε έναν από αυτούς υπολογίζουμε την απόσταση από τον κόμβο αφετηρίας.. Επαναλαμβάνουμε το βήμα μέχρι να συνδεθούν όλοι οι κόμβοι. 6. Ξεκινώντας από τον κόμβο προορισμού βρίσκουμε την αλληλουχία των επιλεγμένων ακμών που οδηγούν στην αφετηρία. date: /0/0 Βασισμένο σε: Υψηλάντης, 006
. Δημιουργούμε πίνακα κόμβων ακμών. Για κάθε κόμβο τοποθετούμε στον πίνακα όλες τις ακμές που ξεκινούν από αυτόν με αύξουσα σειρά απόστασης. Παραλείπονται οι ακμές που οδηγούν στον κόμβο αφετηρίας ή προέρχονται από τον κόμβο προορισμού. 6 -() -() -() -() -() 6-() -() -() -6() -() -6() 6-() -() -() -() 6-() -() -() 6 date: /0/0 8
. Επιλέγουμε τον κόμβο που βρίσκεται εγγύτερα στον κόμβο αφετηρίας, εδώ τον. Διαγράφουμε όλες τις άλλες ακμές που οδηγούν στον. Σημειώνουμε την απόσταση του από τον κόμβο αφετηρίας πάνω από τη στήλη του. 6 -() -() -() -() -() 6-() -() -() -6() -() -6() 6-() -() -() -() 6-() -() -() 6 date: /0/0 9
. Εντοπίζουμε τους κόμβους που βρίσκονται πλησιέστερα στους συνδεδεμένους κόμβους. Για κάθε έναν από αυτούς υπολογίζουμε την απόσταση από τον κόμβο αφετηρίας. 6 -() -() -() -() -() 6-() -() -() -6() -() -6() 6-() -() -() -() 6-() -() -() Κόμβος Πλησιέστερος Απόσταση από αφετηρία += 6 += date: /0/0 0
. Επιλέγουμε τον κόμβο που βρίσκεται εγγύτερα στον κόμβο αφετηρίας, εδώ τον. Διαγράφουμε όλες τις άλλες ακμές που οδηγούν στον. Σημειώνουμε την απόσταση του από τον κόμβο αφετηρίας πάνω από τη στήλη του. 6 -() -() -() -() -() 6-() -() -() -6() -() -6() 6-() -() -() -() 6-() -() -() 6 date: /0/0
. Εντοπίζουμε τους κόμβους που βρίσκονται πλησιέστερα στους συνδεδεμένους κόμβους. Για κάθε έναν από αυτούς υπολογίζουμε την απόσταση από τον κόμβο αφετηρίας. 6 -() -() -() -() -() 6-() -() -() -6() -() -6() 6-() -() -() -() 6-() -() -() Κόμβος Πλησιέστερος Απόσταση από αφετηρία += 6 += date: /0/0
. Επιλέγουμε τον κόμβο που βρίσκεται εγγύτερα στον κόμβο αφετηρίας, εδώ τον 6. Διαγράφουμε όλες τις άλλες ακμές που οδηγούν στον 6. Σημειώνουμε την απόσταση του 6 από τον κόμβο αφετηρίας πάνω από τη στήλη του 6. 6 -() -() -() -() -() 6-() -() -() -6() -() -6() 6-() -() -() -() 6-() -() -() 6 date: /0/0
. Εντοπίζουμε τους κόμβους που βρίσκονται πλησιέστερα στους συνδεδεμένους κόμβους. Για κάθε έναν από αυτούς υπολογίζουμε την απόσταση από τον κόμβο αφετηρίας. 6 -() -() -() -() -() 6-() -() -() -6() -() -6() 6-() -() -() -() 6-() -() -() Κόμβος Πλησιέστερος Απόσταση από αφετηρία += += 6 += 6 += date: /0/0
. Επιλέγουμε τον κόμβο που βρίσκεται εγγύτερα στον κόμβο αφετηρίας, εδώ τον και. Διαγράφουμε όλες τις άλλες ακμές που οδηγούν στον και. Σημειώνουμε την απόσταση του και από τον κόμβο αφετηρίας πάνω από τη στήλη του και αντίστοιχα. 6 -() -() -() -() -() 6-() -() -() -6() -() -6() 6-() -() -() -() 6-() -() -() 6 date: /0/0
. Εντοπίζουμε τους κόμβους που βρίσκονται πλησιέστερα στους συνδεδεμένους κόμβους. Για κάθε έναν από αυτούς υπολογίζουμε την απόσταση από τον κόμβο αφετηρίας. 6 -() -() -() -() -() 6-() -() -() -6() -() -6() 6-() -() -() -() 6-() -() -() Κόμβος Πλησιέστερος Απόσταση από αφετηρία +=8 6 += date: /0/0 6
. Επιλέγουμε τον κόμβο που βρίσκεται εγγύτερα στον κόμβο αφετηρίας, εδώ τον. Διαγράφουμε όλες τις άλλες ακμές που οδηγούν στον. Σημειώνουμε την απόσταση του από τον κόμβο αφετηρίας πάνω από τη στήλη του. 6 -() -() -() -() -() 6-() -() -() -6() -() -6() 6-() -() -() -() 6-() -() -() 6 date: /0/0
6. Ξεκινώντας από τον κόμβο προορισμού βρίσκουμε την αλληλουχία των επιλεγμένων ακμών που οδηγούν στην αφετηρία. Συνεπώς, η συντομότερη διαδρομή από την αφετηρία στον προορισμό είναι μέσω των ακμών -, -6, 6-. 6 date: /0/0 8
Μεταφορά σε πρόβλημα ΓΠ x ij -> ροή από i σε j Z= ΣΣc ij *x ij -> min 6 κόμβο i (εκτός αφετηρίας και προορισμού) θέλω Σx ki Σx im = 0 όπου K το σύνολο κόμβων που οδηγούν στον i και Μ το σύνολο κόμβων στους οποίους οδηγεί ο i για τον κόμβο αφετηρίας έστω s θέλω Σx sm Σx ks = και προορισμού έστω f θέλω Σx kf Σx fm = X ij 0 date: /0/0 9
Αλγόριθμος Dijkstra - Άσκηση Το εφημερεύον νοσοκομείο βρίσκεται στα δυτικά προάστια της πόλης (Δ). Ζητείται να υποδείξετε τη συντομότερη διαδρομή για τα ασθενοφόρα που έρχονται από τα νότια προάστια (Ν). Οι αποστάσεις σε λεπτά μέσω των κύριων κόμβων φαίνονται στις ακμές του παρακάτω δικτύου. Δ 0 6 Ν Από: Υψηλάντης, 006 date: /0/0 0
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα Ε.Μ.Π.» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. date: /0/0