Κεφάλαιο Αλγόριθμος του Dijkra Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.
. Συντομότερες Διαδρομές σε ένα Γράφημα hore pah from Princeon CS deparmen o Einein' houe
το πρόβλημα της συντομότερης διαδρομής (hore pah problem) Ένας φοιτητής στην Ξάνθη θέλει να μετακινηθεί από την πλατεία Αντίκα στην πλατεία Μητροπόλεως έχει στη διάθεσή του χάρτη με τις αποστάσεις γειτονικών κόμβων του οδικού δικτύου της παλιάς πόλης Μπορούμε να τον βοηθήσουμε;
Συντομότερη (;) διαδρομή από την πλατεία Αντίκα στην πλατεία Μητροπόλεως
συντομότερες διαδρομές με κοινή αφετηρία (ingle-ource hore pah) Ένας αναποφάσιστος μοτοσικλετιστής θέλει να βρει επιλέξει σε ποια παραλία ή θέρετρο της Ανατολικής Μακεδονίας ή της Θράκης θα πάει έχει στη διάθεσή του χάρτη με τις αποστάσεις γειτονικών κόμβων του οδικού δικτύου χρειάζεται την ελάχιστη απόσταση (συντομότερη διαδρομή) από την Ξάνθη προς κάθε πιθανό προορισμό Μπορούμε να τον βοηθήσουμε;
πολυπλοκότητα του προβλήματος Συντομότερη διαδρομή από μία κορυφή προς μία κορυφή : Το πρόβλημα επιλύεται σε πολυωνυμικό χρόνο Και το πρόβλημα τις εύρεσης συντομότερων διαδρομών από μία κορυφή προς κάθε άλλη κορυφή επιλύεται και αυτό πολυωνυμικά (μπορείτε να σκεφτείτε μια απλή απόδειξη ;) Και το πρόβλημα τις εύρεσης συντομότερων διαδρομών για όλα τα ζεύγη κορυφών του γραφήματος (αφετηρία τερματισμός) επιλύεται και αυτό πολυωνυμικά (μπορείτε να σκεφτείτε μια απλή απόδειξη ;) ΑΝΤΙΘΕΤΑ το πρόβλημα του περιοδεύοντος πωλητή (raveling aleman problem) αν και φαίνεται να μοιάζει με το πρόβλημα συντομότερων διαδρομών είναι NP-Complee πρόβλημα και πιθανότατα δεν επιλύεται σε πολυωνυμικό χρόνο.
αλγόριθμος του Dijkra Ο αλγόριθμος του Dijkra επιλύει αποδοτικά το πρόβλημα των συντομότερων διαδρομών από μία κοινή αφετηρία σε κατευθυνόμενα γραφήματα με μη-αρνητικά βάρη στις ακμές. Είναι ένας από τους πιο κλασικούς και ευρύτατα χρησιμοποιούμενους αλγορίθμους
Το πρόβλημα των συντομότερων διαδρομών (hore pah problem) Περιγραφή του προβλήματος Κατευθυνόμενο γράφημα G = (V, E). Αφετηρία, τερματισμός. Μήκος e = το μήκος της ακμής e. Πρόβλημα συντομότερης διαδρομής (hore pah problem): εύρεση του συντομότερου κατευθυνόμενου μονοπατιού από το στο. κόστος ενός μονοπατιού = το άθροισμα των βαρών των ακμών του μονοπατιού 8 Κόστος του μονοπατιού ---- = + + + =. 8
Αλγόριθμος του Dijkra Αλγόριθμος του Dijkra. Διατηρεί ένα σύνολο S από κόμβους που έχουν εξερευνηθεί για τους οποίους έχει βρεθεί η ελάχιστη απόσταση d(u) από το στον u. Αρχικοποίησε = { }, d() =. Επέλεγε συνεχώς έναν κόμβο v που δεν έχει εξερευνηθεί και οποίος ελαχιστοποιεί ( v) min e ( u, v) : us d( u) e, πρόσθεσε τον v στο S, και θέσε d(v) = (v). συντομότερη διαδρομή προς έναν κόμβο u σε εξερευνημένο μέρος, και επιπλέον μια μεμονωμένη ακμή edge (u, v) S d(u) u e v
Αλγόριθμος του Dijkra Αλγόριθμος του Dijkra. Διατηρεί ένα σύνολο S από κόμβους που έχουν εξερευνηθεί για τους οποίους έχει βρεθεί η ελάχιστη απόσταση d(u) από το στον u. Αρχικοποίησε = { }, d() =. Επέλεγε συνεχώς έναν κόμβο v που δεν έχει εξερευνηθεί και οποίος ελαχιστοποιεί ( v) min e ( u, v) : us d( u) e, πρόσθεσε τον v στο S, και θέσε d(v) = (v). συντομότερη διαδρομή προς έναν κόμβο u σε εξερευνημένο μέρος, και επιπλέον μια μεμονωμένη ακμή edge (u, v) S d(u) u e v
Αλγόριθμος του Dijkra: Απόδειξη Ορθότητας Αναλλοίωτη συνθήκη (Invarian). Για κάθε κόμβο u S, το d(u) είναι το μήκος του συντομότερου μονοπατιού -u. Απόδειξη. (με επαγωγή στο S ) Βάση της επαγωγής: S = ισχύει προφανώς. Επαγωγική υπόθεση: Υποθέτουμε ότι ισχύει για S = k. Έστω v ο επόμενος κόμβος που προστίθεται στο S, και έστω u-v η ακμή που επιλέχθηκε. Η συντομότερη διαδρομή -u συν την ακμή (u, v) είναι ένα μονοπάτι -v pah μήκους (v). Έστω P ένα οποιοδήποτε μονοπάτι -v. Θα δούμε ότι δεν μπορεί να είναι πιο σύντομο από το (v). Έστω x-y η πρώτη ακμή στο P η οποία βγαίνει από το S, και έστω P' ένα μονοπάτι μέχρι το x. Το μονοπάτι P έχει ήδη υπερβολικό μήκος όταν βγαίνει από το σύνολο S. P P' x y (P) (P') + (x,y) d(x) + (x, y) (y) (v) μη-αρνητικά βάρη επαγωγική υπόθεση ορισμός του (y) ο Dijkra επιλέγει το v αντί του y S u v
Αλγόριθμος του Dijkra: Υλοποίηση Για κάθε κόμβο που δεν έχει εξερευνηθεί ακόμα, διατηρούμε ρητά το (v) min e (u,v) : u S d(u) e. Ο επόμενος κόμβος που επιλέγεται για εξερεύνηση = ο κόμβος με το ελάχιστο (v). Όταν εξερευνούμε τον κόμβο v, για κάθε ακμή e = (v, w) που ξεκινά από τον v, ενημερώνουμε (w) min { (w), (v) e }. Αποδοτική υλοποίηση. Διατηρούμε μια ουρά προτεραιότητας με κόμβους που δεν έχουν εξερευνηθεί, με βάση την προτεραιότητα (v). Prioriy Queue PQ Operaion Dijkra Array Binary heap d-way Heap Fib heap Iner n n log n d log d n ExracMin n n log n d log d n log n ChangeKey m log n log d n IEmpy n Toal n m log n m log m/n n m + n log n Οι χρόνοι για τις μεμονωμένες λειτουργίες είναι amorized
Επιπλέον Διαφάνειες
Edger W. Dijkra The queion of wheher compuer can hink i like he queion of wheher ubmarine can wim. Do only wha only you can do. In heir capaciy a a ool, compuer will be bu a ripple on he urface of our culure. In heir capaciy a inellecual challenge, hey are wihou preceden in he culural hiory of mankind. The ue of COBOL cripple he mind; i eaching hould, herefore, be regarded a a criminal offence. APL i a miake, carried hrough o perfecion. I i he language of he fuure for he programming echnique of he pa: i creae a new generaion of coding bum.
Παράδειγμα Αλγορίθμου Dijkra
Αλγόριθμος του Dijkra Find hore pah from o. 8
Αλγόριθμος του Dijkra S = { } PQ = {,,,,,,, } 8 diance label
Αλγόριθμος του Dijkra S = { } PQ = {,,,,,,, } delmin 8 diance label 8
Αλγόριθμος του Dijkra S = { } PQ = {,,,,,, } decreae key X X 8 diance label X
Αλγόριθμος του Dijkra S = { } PQ = {,,,,,, } X delmin X 8 diance label X
Αλγόριθμος του Dijkra S = {, } PQ = {,,,,, } X X 8 X
Αλγόριθμος του Dijkra S = {, } PQ = {,,,,, } decreae key X X X 8 X
Αλγόριθμος του Dijkra S = {, } PQ = {,,,,, } X X X delmin 8 X
Αλγόριθμος του Dijkra S = {,, } PQ = {,,,, } X X X X X 8 X
Αλγόριθμος του Dijkra S = {,, } PQ = {,,,, } X X X X X 8 X delmin
Αλγόριθμος του Dijkra S = {,,, } PQ = {,,, } X X X X X X 8 X X
Αλγόριθμος του Dijkra S = {,,, } PQ = {,,, } delmin X X X X X X 8 X X
Αλγόριθμος του Dijkra S = {,,,, } PQ = {,, } X X X X X X 8 X X X X 8
Αλγόριθμος του Dijkra S = {,,,, } PQ = {,, } X X X X 8 X X X delmin X X X
Αλγόριθμος του Dijkra S = {,,,,, } PQ = {, } X X X X X X 8 X X X X X X
Αλγόριθμος του Dijkra S = {,,,,, } PQ = {, } X X X X X X 8 X X delmin X X X X
Αλγόριθμος του Dijkra S = {,,,,,, } PQ = { } X X X X X X 8 X X X X X X
Αλγόριθμος του Dijkra S = {,,,,,, } PQ = { } X X X X X X 8 X X X delmin X X X
Αλγόριθμος του Dijkra S = {,,,,,,, } PQ = { } X X X X X X 8 X X X X X X
Αλγόριθμος του Dijkra S = {,,,,,,, } PQ = { } X X X X X X 8 X X X X X X
παράδειγμα εκτέλεσης του αλγορίθμου του Dijkra Δομές Δεδομένων και Αλγόριθμοι
Δομές Δεδομένων και Αλγόριθμοι Συντομότερα Μονοπάτια (Shore Pah),,,, 8 8,,,,
Τα βήματα σε πίνακα (,-) (,) (,-) (,) Μ= (,) (,) (8,) {,} Μ= {,} (,) (,) Μ= {,} (,) Μ= {,} Δομές Δεδομένων και Αλγόριθμοι 8
,,,,,,, 8, 8 (,-) (,) (,-) (,) Μ= (,) (,) (8,) {,} Μ= {,} (,) (,) Μ= {,} (,) Μ= {,} Δομές Δεδομένων και Αλγόριθμοι
πηγές/αναφορές Κεφάλαιο, Σχεδίαση Αλγορίθμων, J. Kleinberg and E. Tardo, Ελληνική έκδοση από τις Εκδ. Κλειδάριθμος Κεφάλαιο, Ενότητες.8,.. και., Σχεδίαση Αλγορίθμων, J. Kleinberg and E. Tardo, Ελληνική έκδοση από τις Εκδ. Κλειδάριθμος Κεφάλαια, Εισαγωγή στους αλγόριθμους, T. Cormen, C. Leieron, R. Rive and C. Sein, Ελληνική έκδοση από τις Πανεπιστημιακές Εκδ. Κρήτης Αλγόριθμοι - Εισαγωγικά θέματα και παραδείγματα, Θ. Παπαθεοδώρου, Εκδόσεις Πανεπιστημίου Πατρών Αλγόριθμοι, Π.Μποζάνη, Εκδ. Τζιόλα, Κεφάλαιο