Στοχαστικές Στρατηγικές η ενότητα: Το γενικό πρόβλημα ελάχιστης διαδρομής () Τμήμα Μαθηματικών, ΑΠΘ Ακαδημαϊκό έτος 08-09 Χειμερινό Εξάμηνο Παπάνα Αγγελική Μεταδιδακτορική ερευνήτρια, ΑΠΘ & Πανεπιστήμιο Μακεδονίας E-mail: angeliki.papana@gmail.com, agpapana@auth.gr Webpage: http://users.auth.gr/agpapana
Το γενικό πρόβλημα ελάχιστης διαδρομής Έστω ότι έχουμε ένα δικτυωτό στο οποίο υπάρχουν Ν κόμβοι και ένα σύνολο από τόξα, τα οποία θα συμβολίζουμε με (i, j) για την μετάβαση από τον κόμβι i στον κόμβο j. Κάθε τόξο συνοδεύεται από μια ποσότητα α ij που αντιπροσωπεύει κόστος ή κέρδος ή απόσταση ή χρόνο κτλ. Το πρόβλημα Θέλουμε να βρούμε την ελάχιστη διαδρομή μεταξύ του κόμβου και του κόμβου Ν.
Το γενικό πρόβλημα ελάχιστης διαδρομής Υπάρχουν δύο βασικά είδη δικτυωτών: ) Ακυκλικά δικτυωτά ) Κυκλικά δικτυωτά Κυκλικό δικτυωτό ονομάζεται ένα δικτυωτό που περιέχει κύκλους. Κύκλος είναι μια διαδρομή που αρχίζει και τελειώνει στον ίδιο κόμβο.
) Ακυκλικά δικτυωτά Μέθοδος επαναρίθμησης Σε ένα ακυκλικό δικτυωτό είναι δυνατόν να γίνει αρίθμηση των κόμβων έτσι ώστε αν υπάρχει στο δικτυωτό ένα τόξο (i, j), τότε i < j. Αρίθμηση κόμβων Καλούμε ως κόμβο, έναν κόμβο από τον οποίο ξεκινούν τόξα, χωρίς να καταλήγει κανένα σε αυτόν. Αν υπάρχουν πάνω από ένας τέτοιοι κόμβοι, μπορούμε να ορίσουμε ως κόμβο, οποιονδήποτε από αυτούς.
Σε κάθε μη κυκλικό δικτυωτό υπάρχει πάντα ένας τέτοιος κόμβος. Στο επόμενο βήμα, αγνοούμε τον κόμβο και όλα τα τόξα που ξεκινάνε από αυτόν. Το δικτυωτό που παραμένει είναι πάλι ένα μη κυκλικό δικτυωτό. Έχει λοιπόν τουλάχιστον ένα κόμβο με τόξα που μόνο ξεκινούν από αυτόν. Ονομάζουμε τον κόμβο αυτόν.
Συνεχίζουμε την διαδικασία αυτή μέχρι να αριθμήσουμε όλους τους κόμβους.
Επίλυση προβλήματος εύρεσης της ελάχιστης διαδρομής από τον κόμβο στον κόμβο με την προς τα εμπρός μέθοδο του Δυναμικού Προγραμματισμού Βέλτιστη συνάρτηση f i = {το μήκος της ελάχιστης διαδρομής από τον κόμβο μέχρι τον κόμβο i} Επαναληπτική σχέση f i = min j<i {f j + a ji }, i =,,, N j i Οριακή συνθήκη f = 0 Παρατήρηση Αν κάποιο τόξο a ji δεν υπάρχει, τότε υποθέτουμε ότι a ji =.
Για i = : f = 0 Για i = : f = f + a = 0 + = Για i = : f = f + a = 0 + = Για i = : f = min f + a, f + a = min 0 +, + = Για i = : f = min f + a, f + a = min +, + = Για i = : f = min f + a, f + a, f + a = min +, +, + = 9 8
Άρα f = min f + a, f + a, f + a = min +, +, + = 9 f = min f + a, f + a = min +, + = f = min f + a, f + a, f + a = min 0 +, +, + = f = min f + a, f + a = min{0 +, + } = f = f + a = 0 + = Άρα η ελάχιστη διαδρομή από τον κόμβο ως τον κόμβο είναι: 9
Παρατήρηση Με την παραπάνω αρίθμηση των κόμβων, μετατρέπουμε το δικτυωτό σε ισοδύναμο όπου οι κόμβοι μπορούν να θεωρηθούν σημεία του R, δηλαδή ουσιαστικά μετατρέπετε σε ένα στοιχειώδες δικτυωτό όπου οι κινήσεις γίνονται μόνο προς τα δεξιά. Η αρίθμηση γίνεται με την εξής λογική: Η βέλτιστη διαδρομή i μπορεί να επιτευχθεί με ενδιάμεσους κόμβους j, μόνο εκείνους όπου j < i. Οι κόμβοι αυτοί j είναι οι πλησιέστεροι (ως προς το πλήθος των βημάτων) προς τον (πριν τον i). 0 0 0 0 0 0 0
Επίλυση προβλήματος εύρεσης της ελάχιστης διαδρομής σε ακυκλικό δικτυωτό από τον κόμβο στον κόμβο Ν με την προς τα πίσω μέθοδο του Δυναμικού Προγραμματισμού Βέλτιστη συνάρτηση f i = {το μήκος της ελάχιστης απόστασης από τον κόμβο i μέχρι τον κόμβο Ν} Επαναληπτική σχέση f i = min j>i {a ij + f j }, για i = N, N,, i j N Οριακή συνθήκη f Ν = 0
) Κυκλικά δικτυωτά Η μεθοδολογία που παρουσιάσαμε για τα μη κυκλικά δικτυωτά δεν εφαρμόζεται σε αυτήν την περίπτωση. Για να λύσουμε το πρόβλημα ελάχιστης διαδρομής σε γενικά δικτυωτά, υπάρχουν τρεις βασικές μεθοδολογίες: ) Μέθοδος Dijkstra ) Μέθοδος των βημάτων ) Μέθοδος των μειώσεων
) Μέθοδος Dijkstra Υποθέτουμε ότι έχουμε ένα δικτυωτό με Ν κόμβους, αριθμημένους από το ως το Ν, και θέλουμε να βρούμε την ελάχιστη διαδρομή από τον κόμβο ως το Ν. Η μέθοδος Dijkstra στηρίζεται στην λογική του υπολογισμού των πλησιέστερων κόμβων προς τον αρχικό ως προς το χαμηλό κόστος, ανεξάρτητα από το πλήθος των βημάτων. Υποθέτουμε επιπλέον ότι a ij 0 για κάθε τόξο (i, j). Έστω Ν i () το σύνολο που αποτελείται από τους i πλησιέστερους κόμβους στον κόμβο. Προφανώς Ν = {}.
Βέλτιστη συνάρτηση f i j = {η απόσταση ελάχιστης διαδρομής από τον κόμβο στον κόμβο j όταν είμαστε περιορισμένοι να χρησιμοποιήσουμε διαδρομές τέτοιες ώστε όλοι οι κόμβοι πριν από τον j να ανήκουν στο σύνολο Ν i ()} Στην φάση i (i =,,.., Ν) προσδιορίζεται ένας κόμβος τέτοιος ώστε: k i N i () και f i k i = min j Ni () {f i (j)} Το k i δεν ανήκει στο σύνολο των (i )- πλησιέστερων κόμβων στον κόμβο k i j N i j Αφήνουμε από έξω τους κόμβους που δεν ανήκουν στο N i
Θέτουμε N i = N i {k i } και υπολογίζουμε την f i j από την επαναληπτική σχέση: f i j f i j = { min{f i j, f i k i } + a ki j} Αν j N i Αν j N i f i j = {η απόσταση ελάχιστης διαδρομής από τον κόμβο στον κόμβο j όταν είμαστε περιορισμένοι να χρησιμοποιήσουμε διαδρομές τέτοιες ώστε όλοι οι κόμβοι πριν από τον j να ανήκουν στο σύνολο Ν i ()} f i k i = {η απόσταση ελάχιστης διαδρομής από τον κόμβο στον κόμβο k i όταν είμαστε περιορισμένοι να χρησιμοποιήσουμε διαδρομές τέτοιες ώστε όλοι οι κόμβοι πριν από τον k i να ανήκουν στο σύνολο Ν i ()}
Οριακές συνθήκες: N i = {}, k =, f j = a j Λύση Οριακές συνθήκες (για i = ): Είναι: Ν = {} και f = a = 0 f = a = f = a = f = a =
Για i = : Ποιο είναι το k ; (o ος πλησιέστερος κόμβος στον ) k : {min{f j } με j N = {}} = min f, f,f = άρα k = Δηλ. N = {, } N : f = f = 0 N : f = f = N : f = min f, f + a = min, + = N : f = min f, f + a = min, + =
Για i = : Ποιο είναι το k ; (o ος πλησιέστερος κόμβος στον ) k : {min{f j } με j N = {, }} = min f,f = min, = άρα k = Άρα N = {,, } N : f = f = 0 N : f = f = N : f = f = N : f = min f, f + a = min, + = 8
Για i = : Ποιο είναι το k ; (o ος πλησιέστερος κόμβος στον ) k = Άρα N = {,,, } f = f = Συνολικό κόστος ελάχιστης διαδρομής = 9
Είναι: f = f = f = min f, f + a f = min f, f + a = min, + = = min, + = f = a = Άρα η ελάχιστη διαδρομή είναι: 0
Άσκηση Για το δικτυωτό του σχήματος, να υπολογίσετε την ελάχιστη διαδρομή από τον κόμβο ως τον κόμβο με την μέθοδο Dijkstra. Οι τιμές των τόξων παριστάνουν κόστος. Λύση Συμβολίζουμε με Ν i () το σύνολο που αποτελείται από τους i πλησιέστερους κόμβους στον κόμβο. Βέλτιστη συνάρτηση f i j = {το μήκος της ελάχιστης διαδρομής από τον κόμβο στον κόμβο j, όταν για να φτάσουμε στον κόμβο j, χρησιμοποιούμε μόνο τους i κόμβους του συνόλου Ν i ()}
Στην i-φάση (i =,,.., Ν) προσδιορίζεται κόμβος k i τέτοιος ώστε: k i N i () και f i k i = min j Ni () {f i (j)} Θέτουμε N i = N i k i Επαναληπτική σχέση: f i j, αν j N i f i j = { min f i j, f i k i + a ki j, αν j N i Οριακές συνθήκες: f j = a j
Οριακές συνθήκες (για i = ): f = a = 0 f = a = f = a = f = a = f = f = f = Προφανώς: Ν = {}.
Για i = : Ποιο είναι το k ; (o ος πλησιέστερος κόμβος στον ) k : {min{f j } με j N } = min{f, f,f, f, f, f } = Άρα N = {, } N : f = f = 0 N : f = min f, f + a = min, + = N : f = f =
N : f = min f, f + a = min, + = N : f = min f, f + a = min, + = N : f = min f, f + a = min, + = N : f = min f, f + a = min, + =
Για i = : k : {min{f j } με j N } = min{f, f, f, f, f } = Άρα N = {,, } N : f = f = 0 N : f = f = N : f = f = N : f = min f, f + a = min, + = N : f = min f, f + a = min, + = N : f = min f, f + a = min, + = 8 N : f = min f, f + a = min, + =
Για i = : k : {min{f j } με j N } = min{f, f, f, f } = Άρα N = {,,, } N : f = f = 0 N : f = f = N : f = f = N : f = f = N : f = min f, f + a = min, + = N : f = min f, f + a = min 8, + = 8 N : f = min f, f + a = min, + =
Για i = : k : {min{f j } με j N } = min{f, f, f } = Άρα N = {,,,, } N : f = f = 0 N : f = f = N : f = f = N : f = f = N : f = f = N : f = min f, f + a = min 8, + = N : f = min f, f + a = min, + = 8
Για i = : k : {min{f j } με j N } = min{f, f } = Άρα N = {,,,,, } N : f = f = 0 N : f = f = N : f = f = N : f = f = N : f = f = N : f = f = N : f = min f, f + a = min, + = 9
Για i = : Τελευταίος κόμβος k = Άρα N = {,,,,,, } N : f = f = Συνολικό κόστος ελάχιστης διαδρομής = 0
Η διαδρομή με το ελάχιστο κόστος είναι: f = f = f = min f, f + a = f = min f, f + a = f = min f, f + a = f = min f, f + a = f = min f, f + a = f = a = f = min f, f + a = f = min f, f + a = f = min f, f + a = f = min f, f + a = f = a = Άρα ή
Άσκηση Για το δικτυωτό του σχήματος, να υπολογίσετε την ελάχιστη διαδρομή από τον κόμβο ως τον κόμβο με την μέθοδο Dijkstra. Οι τιμές των τόξων παριστάνουν κόστος. Λύση 8 Συμβολίζουμε με Ν i () το σύνολο που αποτελείται από τους i πλησιέστερους κόμβους στον κόμβο. Βέλτιστη συνάρτηση f i j = {το μήκος της ελάχιστης διαδρομής από τον κόμβο στον κόμβο j, όταν για να φτάσουμε στον κόμβο j, χρησιμοποιούμε μόνο τους i κόμβους του συνόλου Ν i ()}
Οριακές συνθήκες (i = ): Ν = {} f = a = 0 f = a = 8 f = a = f = f =
Για i = : Ποιο είναι το k ; k : {min{f j } με j N } = min{f, f,f, f } = Άρα N = {, } 8 N : f = f = 0 N : f = f = N : f = min f, f + a = min, + = N : f = min f, f + a = min, + = N : f = min f, f + a = min, + 8 =0
Για i = : k : {min{f j } με j N } = min{f, f, f } = Άρα N = {,, } 8 N : f = f = 0 N : f = f = N : f = f = N : f = min f, f + a = min, + = N : f = min f, f + a = min 0, + =
Για i = : k : {min{f j } με j N } = min f, f = min, = Άρα N =,,, (δηλ. ο τελευταίος κόμβος ) (k = ή, δεν θα είχε διαφορά) 8 f = f = Συνολικό κόστος ελάχιστης διαδρομής =
Η διαδρομή με το ελάχιστο κόστος είναι: f = f = f = min f, f + a = f = min f, f + a = 8 f = a = Άρα
Βιβλιογραφία ) Π.-Χ. Βασιλείου (00) Εφαρμοσμένος Μαθηματικός Προγραμματισμός, Εκδόσεις Ζήτη. ) Π.-Χ. Βασιλείου, Γ. Τσακλίδης, Ν. Τσάντας (998) Ασκήσεις στην Επιχειρησιακή Έρευνα, Εκδόσεις Ζήτη. 8