Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra...

40
Κεφάλαιο 4 Αλγόριθμος του Dijkstra 1 Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Transcript of Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra...

Page 1: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Κεφάλαιο 4

Αλγόριθµος του Dijkstra

1

Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Page 2: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

4.4 Συντοµότερες Διαδροµές σε ένα Γράφηµα

shortest path from Princeton CS department to Einstein's house

Page 3: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

το πρόβληµα της συντοµότερης διαδροµής (shortest path problem)

Ένας φοιτητής στην Ξάνθη� θέλει να µετακινηθεί από την πλατεία Αντίκα στην πλατεία

Μητροπόλεως� έχει στη διάθεσή του χάρτη µε τις αποστάσεις γειτονικών κόµβων του

3

� έχει στη διάθεσή του χάρτη µε τις αποστάσεις γειτονικών κόµβων του οδικού δικτύου της παλιάς πόλης

Μπορούµε να τον βοηθήσουµε;

Page 4: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Συντοµότερη (;) διαδροµή από την πλατεία Αντίκα στην πλατεία Μητροπόλεως

4

Page 5: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

συντοµότερες διαδροµές µε κοινή αφετηρία (single-source shortest paths)

Ένας αναποφάσιστος µοτοσικλετιστής � θέλει να βρει επιλέξει σε ποια παραλία ή θέρετρο της Ανατολικής

Μακεδονίας ή της Θράκης θα πάει� έχει στη διάθεσή του χάρτη µε τις αποστάσεις γειτονικών κόµβων του

5

� έχει στη διάθεσή του χάρτη µε τις αποστάσεις γειτονικών κόµβων του οδικού δικτύου

� χρειάζεται την ελάχιστη απόσταση (συντοµότερη διαδροµή) από την Ξάνθη προς κάθε πιθανό προορισµό

Μπορούµε να τον βοηθήσουµε;

Page 6: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

πολυπλοκότητα του προβλήµατος

Συντοµότερη διαδροµή από µία κορυφή s προς µία κορυφή t: Το πρόβληµα επιλύεται σε πολυωνυµικό χρόνο

� Και το πρόβληµα τις εύρεσης συντοµότερων διαδροµών από µία κορυφή s προς κάθε άλλη κορυφή επιλύεται και αυτό πολυωνυµικά (µπορείτε να σκεφτείτε µια απλή απόδειξη ;)

� Και το πρόβληµα τις εύρεσης συντοµότερων διαδροµών για όλα τα ζεύγη κορυφών του γραφήµατος (αφετηρία – τερµατισµός) επιλύεται και αυτό

6

κορυφών του γραφήµατος (αφετηρία – τερµατισµός) επιλύεται και αυτό πολυωνυµικά (µπορείτε να σκεφτείτε µια απλή απόδειξη ;)

ΑΝΤΙΘΕΤΑ το πρόβληµα του περιοδεύοντος πωλητή (traveling salesman problem) αν και φαίνεται να µοιάζει µε το πρόβληµα συντοµότερων διαδροµών είναι NP-Complete πρόβληµα και πιθανότατα δεν επιλύεται σε πολυωνυµικό χρόνο.

Page 7: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

αλγόριθµος του Dijkstra

Ο αλγόριθµος του Dijkstra επιλύει αποδοτικά το πρόβληµα των

συντοµότερων διαδροµών από µία κοινή αφετηρία σε κατευθυνόµενα

γραφήµατα µε µη-αρνητικά βάρη στις ακµές.

Είναι ένας από τους πιο κλασικούς και ευρύτατα χρησιµοποιούµενους

αλγορίθµους

7

Page 8: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Το πρόβληµα των συντοµότερων διαδροµών (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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Επιπλέον Διαφάνειες

Page 14: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Παράδειγµα Αλγορίθµου Dijkstra

15

Page 16: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Αλγόριθµος του 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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

παράδειγµα εκτέλεσης του

Δοµές Δεδοµένων και Αλγόριθµοι

οµοαφετηριακές ελαφρύτατες διαδροµές

36

παράδειγµα εκτέλεσης του αλγορίθµου του Dijkstra

Page 37: Κεφάλαιο 4 - Euclid dijkstra.pdf · Κεφάλαιο 4 Αλγόριθµος του Dijkstra 1 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Συντοµότερα Μονοπάτια (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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

Τα βήµατα σε πίνακα

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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

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 Χρησιοποιήθηκε υλικό από τις αγγλικές διαφάνειες

πηγές/αναφορές

Κεφάλαιο 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