Κεφάλαιο 4 - euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του dijkstra...
TRANSCRIPT
![Page 1: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/1.jpg)
Κεφάλαιο 4
Αλγόριθµος του Dijkstra
1
Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.
![Page 2: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/2.jpg)
4.4 Συντοµότερες Διαδροµές σε ένα Γράφηµα
shortest path from Princeton CS department to Einstein's house
![Page 3: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/3.jpg)
το πρόβληµα της συντοµότερης διαδροµής (shortest path problem)
Ένας φοιτητής στην Ξάνθη� θέλει να µετακινηθεί από την πλατεία Αντίκα στην πλατεία
Μητροπόλεως� έχει στη διάθεσή του χάρτη µε τις αποστάσεις γειτονικών κόµβων του
3
� έχει στη διάθεσή του χάρτη µε τις αποστάσεις γειτονικών κόµβων του οδικού δικτύου της παλιάς πόλης
Μπορούµε να τον βοηθήσουµε;
![Page 4: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/4.jpg)
Συντοµότερη (;) διαδροµή από την πλατεία Αντίκα στην πλατεία Μητροπόλεως
4
![Page 5: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/5.jpg)
συντοµότερες διαδροµές µε κοινή αφετηρία (single-source shortest paths)
Ένας αναποφάσιστος µοτοσικλετιστής � θέλει να βρει επιλέξει σε ποια παραλία ή θέρετρο της Ανατολικής
Μακεδονίας ή της Θράκης θα πάει� έχει στη διάθεσή του χάρτη µε τις αποστάσεις γειτονικών κόµβων του
5
� έχει στη διάθεσή του χάρτη µε τις αποστάσεις γειτονικών κόµβων του οδικού δικτύου
� χρειάζεται την ελάχιστη απόσταση (συντοµότερη διαδροµή) από την Ξάνθη προς κάθε πιθανό προορισµό
Μπορούµε να τον βοηθήσουµε;
![Page 6: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/6.jpg)
πολυπλοκότητα του προβλήµατος
Συντοµότερη διαδροµή από µία κορυφή s προς µία κορυφή t: Το πρόβληµα επιλύεται σε πολυωνυµικό χρόνο
� Και το πρόβληµα τις εύρεσης συντοµότερων διαδροµών από µία κορυφή s προς κάθε άλλη κορυφή επιλύεται και αυτό πολυωνυµικά (µπορείτε να σκεφτείτε µια απλή απόδειξη ;)
� Και το πρόβληµα τις εύρεσης συντοµότερων διαδροµών για όλα τα ζεύγη κορυφών του γραφήµατος (αφετηρία – τερµατισµός) επιλύεται και αυτό
6
κορυφών του γραφήµατος (αφετηρία – τερµατισµός) επιλύεται και αυτό πολυωνυµικά (µπορείτε να σκεφτείτε µια απλή απόδειξη ;)
ΑΝΤΙΘΕΤΑ το πρόβληµα του περιοδεύοντος πωλητή (traveling salesman problem) αν και φαίνεται να µοιάζει µε το πρόβληµα συντοµότερων διαδροµών είναι NP-Complete πρόβληµα και πιθανότατα δεν επιλύεται σε πολυωνυµικό χρόνο.
![Page 7: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/7.jpg)
αλγόριθµος του Dijkstra
Ο αλγόριθµος του Dijkstra επιλύει αποδοτικά το πρόβληµα των
συντοµότερων διαδροµών από µία κοινή αφετηρία σε κατευθυνόµενα
γραφήµατα µε µη-αρνητικά βάρη στις ακµές.
Είναι ένας από τους πιο κλασικούς και ευρύτατα χρησιµοποιούµενους
αλγορίθµους
7
![Page 8: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/8.jpg)
Το πρόβληµα των συντοµότερων διαδροµών (shortest path problem)
Περιγραφή του προβλήµατος
� Κατευθυνόµενο γράφηµα G = (V, E).
� Αφετηρία s, τερµατισµός t.
� Μήκος le = το µήκος της ακµής e.
Πρόβληµα συντοµότερης διαδροµής (shortest path problem): εύρεση του
συντοµότερου κατευθυνόµενου µονοπατιού από το s στο t.
8
Κόστος του µονοπατιούs-2-3-5-t
= 9 + 23 + 2 + 16= 48.
s
3
t
2
6
7
4
5
23
18
2
9
14
15 5
30
20
44
16
11
6
19
6
κόστος ενός µονοπατιού = το άθροισµα των βαρών των ακµών του µονοπατιού
![Page 9: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/9.jpg)
Αλγόριθµος του Dijkstra
Αλγόριθµος του Dijkstra.
� Διατηρεί ένα σύνολο S από κόµβους που έχουν εξερευνηθεί για τους
οποίους έχει βρεθεί η ελάχιστη απόσταση d(u) από το s στον u.
� Αρχικοποίησε = { s }, d(s) = 0.
� Επέλεγε συνεχώς έναν κόµβο v που δεν έχει εξερευνηθεί και οποίος
ελαχιστοποιεί ,)(min)(:),(
eSuvue
udv l+=∈=
π
συντοµότερη διαδροµή προς έναν κόµβο
9
πρόσθεσε τον v στο S, και θέσε d(v) = π(v).
s
v
u
d(u)
S
le
συντοµότερη διαδροµή προς έναν κόµβο u σε εξερευνηµένο µέρος, και επιπλέον µια µεµονωµένη ακµή edge (u, v)
![Page 10: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/10.jpg)
Αλγόριθµος του Dijkstra
Αλγόριθµος του Dijkstra.
� Διατηρεί ένα σύνολο S από κόµβους που έχουν εξερευνηθεί για τους
οποίους έχει βρεθεί η ελάχιστη απόσταση d(u) από το s στον u.
� Αρχικοποίησε = { s }, d(s) = 0.
� Επέλεγε συνεχώς έναν κόµβο v που δεν έχει εξερευνηθεί και οποίος
ελαχιστοποιεί ,)(min)(:),(
eSuvue
udv l+=∈=
π
συντοµότερη διαδροµή προς έναν κόµβο
10
πρόσθεσε τον v στο S, και θέσε d(v) = π(v).
s
v
u
d(u)
S
le
συντοµότερη διαδροµή προς έναν κόµβο u σε εξερευνηµένο µέρος, και επιπλέον µια µεµονωµένη ακµή edge (u, v)
![Page 11: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/11.jpg)
Αλγόριθµος του Dijkstra: Απόδειξη Ορθότητας
Αναλλοίωτη συνθήκη (Invariant). Για κάθε κόµβο u ∈ S, το d(u) είναι το µήκος του
συντοµότερου µονοπατιού s-u.
Απόδειξη. (µε επαγωγή στο |S|)
Βάση της επαγωγής: |S| = 1 ισχύει προφανώς.
Επαγωγική υπόθεση: Υποθέτουµε ότι ισχύει για |S| = k ≥ 1.
� Έστω v ο επόµενος κόµβος που προστίθεται στο S, και έστω u-v η ακµή που επιλέχθηκε.
� Η συντοµότερη διαδροµή s-u συν την ακµή (u, v) είναι ένα µονοπάτι s-v path µήκους π(v).
� Έστω P ένα οποιοδήποτε µονοπάτι s-v. Θα δούµε ότι δεν µπορεί να είναι πιο σύντοµο από
το π(v).
11
το π(v).
� Έστω x-y η πρώτη ακµή στο P η οποία βγαίνει από το S,
και έστω P' ένα µονοπάτι µέχρι το x.
� Το µονοπάτι P έχει ήδη υπερβολικό µήκος όταν βγαίνει από το σύνολο S.
l (P) ≥ l (P') + l (x,y) ≥ d(x) + l (x, y) ≥ π(y) ≥ π(v)
µη-αρνητικά βάρη
επαγωγική υπόθεση
ορισµός του π(y)
ο Dijkstra επιλέγει το v αντί του y
S
s
y
v
x
P
u
P'
![Page 12: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/12.jpg)
Αλγόριθµος του Dijkstra: Υλοποίηση
Για κάθε κόµβο που δεν έχει εξερευνηθεί ακόµα, διατηρούµε ρητά το
� Ο επόµενος κόµβος που επιλέγεται για εξερεύνηση = ο κόµβος µε το ελάχιστο π(v).
� Όταν εξερευνούµε τον κόµβο v, για κάθε ακµή e = (v, w) που ξεκινά από τον v,
ενηµερώνουµε
Αποδοτική υλοποίηση. Διατηρούµε µια ουρά προτεραιότητας µε κόµβους που δεν έχουν
π (v) = mine = (u,v) : u∈ S
d (u) + le .
π (w) = min { π (w), π (v)+ le }.
12
Αποδοτική υλοποίηση. Διατηρούµε µια ουρά προτεραιότητας µε κόµβους που δεν έχουν
εξερευνηθεί, µε βάση την προτεραιότητα π(v).
† Οι χρόνοι για τις µεµονωµένες λειτουργίες είναι amortized
PQ Operation
Insert
ExtractMin
ChangeKey
Binary heap
log n
log n
log n
Fib heap †
1
log n
1
Array
n
n
1
IsEmpty 1 11
Priority Queue
Total m log n m + n log nn2
Dijkstra
n
n
m
n
d-way Heap
d log d n
d log d n
log d n
1
m log m/n n
![Page 13: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/13.jpg)
Επιπλέον Διαφάνειες
![Page 14: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/14.jpg)
Edsger W. Dijkstra
The question of whether computers can think is like the question of whether submarines can swim.
Do only what only you can do.
In their capacity as a tool, computers will be but a ripple on the surface of our culture. In their capacity as intellectual challenge, they are without precedent in the cultural history of mankind.
14
cultural history of mankind.
The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence.
APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums.
![Page 15: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/15.jpg)
Παράδειγµα Αλγορίθµου Dijkstra
15
![Page 16: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/16.jpg)
Αλγόριθµος του Dijkstra
Find shortest path from s to t.
s
32 24
9
16
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
![Page 17: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/17.jpg)
Αλγόριθµος του Dijkstra
s
32 24
9
∞∞∞∞∞∞∞∞
0
S = { }
PQ = { s, 2, 3, 4, 5, 6, 7, t }
17
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
∞∞∞∞∞∞∞∞
∞∞∞∞
∞∞∞∞
∞∞∞∞
distance label
![Page 18: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/18.jpg)
Αλγόριθµος του Dijkstra
s
32 24
9
∞∞∞∞∞∞∞∞
0
S = { }
PQ = { s, 2, 3, 4, 5, 6, 7, t }
delmin
18
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
∞∞∞∞∞∞∞∞
∞∞∞∞
∞∞∞∞
∞∞∞∞
distance label
![Page 19: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/19.jpg)
Αλγόριθµος του Dijkstra
s
32 24
9
9∞∞∞∞
0
S = { s }
PQ = { 2, 3, 4, 5, 6, 7, t }
decrease key
∞∞∞∞X
19
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞∞∞∞
∞∞∞∞
14
∞∞∞∞
distance label ∞∞∞∞
∞∞∞∞X
X
![Page 20: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/20.jpg)
Αλγόριθµος του Dijkstra
s
32 24
9
9∞∞∞∞
0
S = { s }
PQ = { 2, 3, 4, 5, 6, 7, t }
∞X
delmin
20
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞∞∞∞
∞∞∞∞
14
∞∞∞∞
distance label ∞∞∞∞
∞X
X
![Page 21: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/21.jpg)
Αλγόριθµος του Dijkstra
s
32 24
9
9∞∞∞∞
0
S = { s, 2 }
PQ = { 3, 4, 5, 6, 7, t }
∞X
21
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞∞∞∞
∞∞∞∞
14
∞∞∞∞
∞∞∞∞
∞X
X
![Page 22: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/22.jpg)
Αλγόριθµος του Dijkstra
s
32 24
9
9∞
0
S = { s, 2 }
PQ = { 3, 4, 5, 6, 7, t }
∞X
decrease key
X 33
22
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞∞∞∞
∞∞∞∞
14
∞∞∞∞
∞∞∞∞
∞X
X
![Page 23: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/23.jpg)
Αλγόριθµος του Dijkstra
s
32 24
9
9∞
0
S = { s, 2 }
PQ = { 3, 4, 5, 6, 7, t }
∞XX 33
delmin
23
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞∞∞∞
∞∞∞∞
14
∞∞∞∞
∞∞∞∞
∞X
X
delmin
![Page 24: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/24.jpg)
Αλγόριθµος του Dijkstra
s
32 24
9
9∞
0
S = { s, 2, 6 }
PQ = { 3, 4, 5, 7, t }
∞XX 33X
32
24
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞∞∞∞
∞
14
∞
∞∞∞∞
∞X
X
44X
![Page 25: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/25.jpg)
Αλγόριθµος του Dijkstra
s
32 24
9
9
0
S = { s, 2, 6 }
PQ = { 3, 4, 5, 7, t }
∞X∞X 33X
32
25
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞∞∞∞
∞
14
∞
∞∞∞∞
∞X
X
44X
delmin
![Page 26: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/26.jpg)
Αλγόριθµος του Dijkstra
s
329
9
0
S = { s, 2, 6, 7 }
PQ = { 3, 4, 5, t }
∞X
24
∞X 33X
32
26
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞
∞
14
∞
∞
∞X
X
44X
35X
59 X
![Page 27: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/27.jpg)
Αλγόριθµος του Dijkstra
s
32 24
9
9
0
S = { s, 2, 6, 7 }
PQ = { 3, 4, 5, t }
∞X
delmin
∞X 33X
32
27
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞
∞
14
∞
∞
∞X
X
44X
35X
59 X
![Page 28: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/28.jpg)
Αλγόριθµος του Dijkstra
s
32 24
9
9
0
S = { s, 2, 3, 6, 7 }
PQ = { 4, 5, t }
∞X∞X 33X
32
28
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞
∞
14
∞
∞
∞X
X
44X
35X
59 XX51
X 34
![Page 29: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/29.jpg)
Αλγόριθµος του Dijkstra
s
329
9
0
S = { s, 2, 3, 6, 7 }
PQ = { 4, 5, t }
∞X∞X 33X
32
24
29
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞
∞
14
∞
∞
∞X
X
44X
35X
59 XX51
X 34
delmin
![Page 30: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/30.jpg)
Αλγόριθµος του Dijkstra
s
329
9
0
S = { s, 2, 3, 5, 6, 7 }
PQ = { 4, t }
∞X
24
∞X 33X
32
30
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞
∞
14
∞
∞
∞X
X
44X
35X
59 XX51
X 34
X50
X45
![Page 31: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/31.jpg)
Αλγόριθµος του Dijkstra
s
329
9
0
S = { s, 2, 3, 5, 6, 7 }
PQ = { 4, t }
∞X
24
∞X 33X
32
31
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞
∞
14
∞
∞
∞X
X
44X
35X
59 XX51
X 34
X50
X45
delmin
![Page 32: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/32.jpg)
Αλγόριθµος του Dijkstra
s
329
9
0
S = { s, 2, 3, 4, 5, 6, 7 }
PQ = { t }
∞X
24
∞X 33X
32
32
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞
∞
14
∞
∞
∞X
X
44X
35X
59 XX51
X 34
X50
X45
![Page 33: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/33.jpg)
Αλγόριθµος του Dijkstra
s
329
9
0
S = { s, 2, 3, 4, 5, 6, 7 }
PQ = { t }
∞X∞X 33X
32
24
33
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞
∞
14
∞
∞
∞X
X
44X
35X
59 XX51
X 34
X50
X45
delmin
![Page 34: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/34.jpg)
Αλγόριθµος του Dijkstra
s
32 24
9
9
0
S = { s, 2, 3, 4, 5, 6, 7, t }
PQ = { }
∞X∞X 33X
32
34
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞
∞
14
∞
∞
∞X
X
44X
35X
59 XX51
X 34
X50
X45
![Page 35: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/35.jpg)
Αλγόριθµος του Dijkstra
s
32 24
9
9
0
S = { s, 2, 3, 4, 5, 6, 7, t }
PQ = { }
∞X∞X 33X
32
35
s
t
6
7
4
5
18
214
155
30
20
44
16
11
6
19
6
15 ∞
∞
14
∞
∞
∞X
X
44X
35X
59 XX51
X 34
X50
X45
![Page 36: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/36.jpg)
παράδειγµα εκτέλεσης του
Δοµές Δεδοµένων και Αλγόριθµοι
οµοαφετηριακές ελαφρύτατες διαδροµές
36
παράδειγµα εκτέλεσης του αλγορίθµου του Dijkstra
![Page 37: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/37.jpg)
Συντοµότερα Μονοπάτια (Shortest Paths)
0
12
4
3
11
4
5
3
25 2 3 0
2
4
3
11
4
5
3
5 2 3 0
2
4
3
11
4
5
3
25 2 3
1 15
3
8
4
5
3
0 0 0
∅
∅
∅ ∅
∅∅
Δοµές Δεδοµένων και Αλγόριθµοι
οµοαφετηριακές ελαφρύτατες διαδροµές
37
3, 4 5, 2 4, 1 5, 2 8, 3
0
2
4
3
11
4
5
3
25 2 3
15 7
4
3
5, 2 7, 3
0
2
4
3
11
4
5
3
25 2 3
15 6
43
6, 3
0
2
4
3
11
4
5
3
25 2 3
15 6
43
0 0 0
![Page 38: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/38.jpg)
Τα βήµατα σε πίνακα
0
12
4
3
11
4
5
3
25 2 3
0
∅ ∅
∅∅
1 2 3 4
(∞,-) (5,0) (∞,-) (3,0)
Δοµές Δεδοµένων και Αλγόριθµοι
οµοαφετηριακές ελαφρύτατες διαδροµές
38
(∞,-) (5,0) (∞,-) (3,0)
Μ=4 (4,4) (5,0) (8,4) {3,0}
Μ=1 {4,4} (5,0) (7,1)
Μ=2 {5,0} (6,2)
Μ=3 {6,2}
![Page 39: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/39.jpg)
0
12
4
3
11
4
5
3
3, 4 5, 2
25 2 3 0
2
4
3
11
4
5
3
5 2 3 0
2
4
3
11
4
5
3
25 2 3
1 1
4, 1 5, 2
5
3
8
4
5
8, 3
3
0
2 3
4
5
3
25 2 3
15 7
0
2 3
4
52
5 2 3
15 6
0
2 3
4
52
5 2 3
15 6
0
0 0 0
0 0
∅
∅
∅ ∅
∅∅
Δοµές Δεδοµένων και Αλγόριθµοι
οµοαφετηριακές ελαφρύτατες διαδροµές
39
4 113 4
3
5, 2
7, 3
4 113
43
6, 3
4 113
5 2 3
43
1 2 3 4
(∞,-) (5,0) (∞,-) (3,0)
Μ=4 (4,4) (5,0) (8,4) {3,0}
Μ=1 {4,4} (5,0) (7,1)
Μ=2 {5,0} (6,2)
Μ=3 {6,2}
![Page 40: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες](https://reader030.vdocuments.net/reader030/viewer/2022040705/5e0340d6d9e2ea2f204278cf/html5/thumbnails/40.jpg)
πηγές/αναφορές
Κεφάλαιο 4, Σχεδίαση Αλγορίθµων, J. Kleinberg and E. Tardos, Ελληνική
έκδοση από τις Εκδ. Κλειδάριθµος
Κεφάλαιο 6, Ενότητες 6.8, 6.9. και 6.10, Σχεδίαση Αλγορίθµων, J.
Kleinberg and E. Tardos, Ελληνική έκδοση από τις Εκδ. Κλειδάριθµος
Κεφάλαια 24, Εισαγωγή στους αλγόριθµους, T. Cormen, C. Leiserson, R.
Rivest and C. Stein, Ελληνική έκδοση από τις Πανεπιστηµιακές Εκδ. Rivest and C. Stein, Ελληνική έκδοση από τις Πανεπιστηµιακές Εκδ.
Κρήτης
Αλγόριθµοι - Εισαγωγικά θέµατα και παραδείγµατα, Θ. Παπαθεοδώρου,
Εκδόσεις Πανεπιστηµίου Πατρών
Αλγόριθµοι, Π.Μποζάνη, Εκδ. Τζιόλα, Κεφάλαιο 5
40