Κεφάλαιο Αλγόριθµος του 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). Αφετηρία, τερµατισµός. Μήκος l e = το µήκος της ακµής e. Πρόβληµα συντοµότερης διαδροµής (hore pah problem): εύρεση του συντοµότερου κατευθυνόµενου µονοπατιού από το στο. κόστος ενός µονοπατιού = το άθροισµα των βαρών των ακµών του µονοπατιού 8 Κόστος του µονοπατιού ---- = + + + = 8. 8
Αλγόριθµος του Dijkra Αλγόριθµος του Dijkra. Διατηρεί ένα σύνολο S από κόµβους που έχουν εξερευνηθεί για τους οποίους έχει βρεθεί η ελάχιστη απόσταση d(u) από το στον u. Αρχικοποίησε = { }, d() =. Επέλεγε συνεχώς έναν κόµβο v που δεν έχει εξερευνηθεί και οποίος ελαχιστοποιεί π ( v) = min e = ( u, v) : u S d( u) + l e, πρόσθεσε τον v στο S, και θέσε d(v) = π(v). συντοµότερη διαδροµή προς έναν κόµβο u σε εξερευνηµένο µέρος, και επιπλέον µια µεµονωµένη ακµή edge (u, v) S d(u) u l e v
Αλγόριθµος του Dijkra Αλγόριθµος του Dijkra. Διατηρεί ένα σύνολο S από κόµβους που έχουν εξερευνηθεί για τους οποίους έχει βρεθεί η ελάχιστη απόσταση d(u) από το στον u. Αρχικοποίησε = { }, d() =. Επέλεγε συνεχώς έναν κόµβο v που δεν έχει εξερευνηθεί και οποίος ελαχιστοποιεί π ( v) = min e = ( u, v) : u S d( u) + l e, πρόσθεσε τον v στο S, και θέσε d(v) = π(v). συντοµότερη διαδροµή προς έναν κόµβο u σε εξερευνηµένο µέρος, και επιπλέον µια µεµονωµένη ακµή edge (u, v) S d(u) u l 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 l (P) l (P') + l (x,y) d(x) + l (x, y) π(y) π(v) µη-αρνητικά βάρη επαγωγική υπόθεση ορισµός του π(y) ο Dijkra επιλέγει το v αντί του y S u v
Αλγόριθµος του Dijkra: Υλοποίηση Για κάθε κόµβο που δεν έχει εξερευνηθεί ακόµα, διατηρούµε ρητά το π(v)= min e=(u,v) : u S d(u)+ l e. Ο επόµενος κόµβος που επιλέγεται για εξερεύνηση = ο κόµβος µε το ελάχιστο π(v). Όταν εξερευνούµε τον κόµβο v, για κάθε ακµή e = (v, w) που ξεκινά από τον v, ενηµερώνουµε π (w)=min { π(w), π(v)+l 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
Αλγόριθµος του Dijkra S = { } PQ = {,,,,,, } X delmin X 8 diance label
Αλγόριθµος του Dijkra S = {, } PQ = {,,,,, } X X 8
Αλγόριθµος του Dijkra S = {, } PQ = {,,,,, } decreae key X X 8
Αλγόριθµος του Dijkra S = {, } PQ = {,,,,, } X delmin X 8
Αλγόριθµος του Dijkra S = {,, } PQ = {,,,, } X X X 8
Αλγόριθµος του Dijkra S = {,, } PQ = {,,,, } X X X X 8 delmin
Αλγόριθµος του Dijkra S = {,,, } PQ = {,,, } X X X X X 8
Αλγόριθµος του Dijkra S = {,,, } PQ = {,,, } delmin X X X X X 8
Αλγόριθµος του Dijkra S = {,,,, } PQ = {,, } X X X X 8 X X X 8
Αλγόριθµος του Dijkra S = {,,,, } PQ = {,, } X X X X 8 X X delmin X
Αλγόριθµος του Dijkra S = {,,,,, } PQ = {, } X X X X X 8 X X X
Αλγόριθµος του Dijkra S = {,,,,, } PQ = {, } X X X X X 8 X delmin X X
Αλγόριθµος του Dijkra S = {,,,,,, } PQ = { } X X X X X 8 X X X
Αλγόριθµος του Dijkra S = {,,,,,, } PQ = { } X X X X X 8 X delmin X X
Αλγόριθµος του Dijkra S = {,,,,,,, } PQ = { } X X X X 8 X X X X
Αλγόριθµος του Dijkra S = {,,,,,,, } PQ = { } X X X X 8 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, Ελληνική έκδοση από τις Πανεπιστηµιακές Εκδ. Κρήτης Αλγόριθµοι - Εισαγωγικά θέµατα και παραδείγµατα, Θ. Παπαθεοδώρου, Εκδόσεις Πανεπιστηµίου Πατρών Αλγόριθµοι, Π.Μποζάνη, Εκδ. Τζιόλα, Κεφάλαιο