Τίτλος Μαθήματος: Εισαγωγή στη Θεωρία και Ανάλυση Αλγορίθμων Ενότητα: 'Απληστοι αλγόριθμοι, χρονοπρογραμματισμός και συντομότερες διαδρομές (Dijkstra) Διδάσκων: Λέκτορας Xάρης Παπαδόπουλος Τμήμα: Μαθηματικών
41: Γηζαγςγή ζηε Θεςνία θαη Ακάιοζε Αιγμνίζμςκ Υάνεξ Παπαδόπμοιμξ
Τιε ημο μαζήμαημξ Βαζηθά ζημηπεία ζπεδίαζεξ & ακάιοζεξ αιγμνίζμςκ Ακάιοζε αιγμνίζμςκ, απμδμηηθόηεηα, αζομπηςηηθόξ ζομβμιηζμόξ οκεζηζμέκμη πνόκμη εθηέιεζεξ θαη βαζηθέξ δμμέξ δεδμμέκςκ πίκαθεξ, ιίζηεξ, ζημίβεξ, μονέξ Γοζηαζέξ ηαίνηαζμα, μνζόηεηα, ζςνόξ θαη μονά πνμηεναηόηεηαξ Μέζμδμξ «Δηαίνεη θαη Βαζίιεοε» Γθανμμγέξ ζε ηαληκόμεζε ζημηπείςκ Γπίιοζε ακαδνμμηθώκ ζπέζεςκ Γναθήμαηα θαη αιγόνηζμμη γναθεμάηςκ Δηάηνελε γναθεμάηςκ (BFS, DFS) οκεθηηθόηεηα Σμπμιμγηθή δηάηαλε Μέζμδμη «Απιεζηείαξ» θαη «Δοκαμηθμύ Πνμγναμμαηηζμμύ» Γιάπηζηα ζθειεηηθά δέκδνα (αιγόνηζμμξ Prim, αιγόνηζμμξ Kruskal) οκημμόηενεξ δηαδνμμέξ (αιγόνηζμμξ Dijkstra, Ρμή δηθηύμο) Υνμκμπνμγναμμαηηζμόξ Γπηιεγμέκα ζέμαηα Τπμιμγηζηηθή πμιοπιμθόηεηα, NP-πιενόηεηα
Η μέζμδμξ ηεξ απιεζηίαξ Greed is good. Greed is right. Greed works. Greed clarifies, cuts through, and captures the essence of the evolutionary spirit. - Gordon Gecko (Michael Douglas) Απιεζηία: Δόμεζε ηεξ ιύζεξ ζηαδηαθά, βειηηζημπμηώκηαξ θάπμημ ημπηθό θνηηήνημ ζε θάζε βήμα
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ Υνμκμπνμγναμμαηηζμόξ. Η ενγαζία j λεθηκάεη ηε ζηηγμή s j θαη ηειεηώκεη ηε ζηηγμή f j. Δομ ενγαζίεξ είκαη ζομβαηέξ ακ δεκ επηθαιύπημκηαη. ηόπμξ: εύνεζε ημο μεγαιύηενμο οπμζοκόιμο από ζομβαηέξ ενγαζίεξ. a b c d e f g 0 1 3 4 7 8 10 11 h Υνόκμξ
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Άπιεζημη Αιγόνηζμμη Άπιεζημ Πνόηοπμ. Θεςνήζηε ηηξ ενγαζίεξ ςξ πνμξ θάπμηα δηάηαλε. Γπηιέληε θάπμηα ενγαζία με δεδμμέκμ όηη είκαη ζομβαηή με αοηέξ πμο έπμοκ ήδε επηιεγεί. [Μηθνόηενμξ πνόκμξ έκανλεξ] ενγαζίεξ ζε αύλμοζα ηάλε ςξ πνμξ s j. [Μηθνόηενμξ πνόκμξ ιήλεξ] ενγαζίεξ ζε αύλμοζα ηάλε ςξ πνμξ f j. [Μηθνόηενμ πνμκ. δηάζηεμα] ενγαζίεξ ζε αύλμοζα ηάλε ςξ πνμξ f j - s j. [Γιάπηζηεξ δηεκέλεηξ] Γηα θάζε ενγαζία j, μέηνεζε ημ πιήζμξ ηςκ μεζομβαηώκ ενγαζηώκ c j. Υνμκμπνμγναμμάηηζε θαηά αύλμοζα ηάλε ςξ πνμξ c j.
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Άπιεζημη Αιγόνηζμμη Άπιεζημ Πνόηοπμ. Θεςνήζηε ηηξ ενγαζίεξ ςξ πνμξ θάπμηα δηάηαλε. Γπηιέληε θάπμηα ενγαζία με δεδμμέκμ όηη είκαη ζομβαηή με αοηέξ πμο έπμοκ ήδε επηιεγεί. ακηηπανάδεηγμα γηα μηθνόηενμ πνόκμ έκανλεξ ακηηπανάδεηγμα γηα μηθνόηενμ πνμκηθό δηάζηεμα ακηηπανάδεηγμα γηα ειάπηζηεξ δηεκέλεηξ 7
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Άπιεζημξ Αιγόνηζμμξ Άπιεζημξ Αιγόνηζμμξ. Θεςνμύμε ηηξ ενγαζίεξ θαηά αύλμοζα ηάλε ςξ πνμξ ημ πνόκμ ιήλεξ. Γπηιέγμομε θάπμηα ενγαζία εθόζμκ αοηή είκαη ζομβαηή με ηηξ οπόιμηπεξ πμο έπμομε ήδε επηιέλεη. Ταξινόμηζε ηιρ επγαζίερ ωρ ππορ σπόνο λήξηρ έηζι ώζηε f 1 f... f n. ζύκμιμ ενγαζηώκ πμο ζα επηιέγεη A for j = 1 to n { if (η επγαζία j είναι ζςμβαηή με ηο A) A A {j} } return A Τιμπμίεζε. O(n log n). Θομάηαη ηεκ ενγαζία j* πμο ημπμζεηήζεθε ηειεοηαία ζημ A. Η ενγαζία j είκαη ζομβαηή με (θάζε ενγαζία ημο) A ακ s j f j*. 8
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Πανάδεηγμα B C A E D F 0 1 3 4 7 8 10 11 G H Υνόκμξ 0 1 3 4 7 8 10 11
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Πανάδεηγμα B C A E D F 0 1 3 4 7 8 10 11 G H Υνόκμξ B 0 1 3 4 7 8 10 11 10
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Πανάδεηγμα B C A E D F 0 1 3 4 7 8 10 11 G H Υνόκμξ B C 0 1 3 4 7 8 10 11 11
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Πανάδεηγμα B C A E D F 0 1 3 4 7 8 10 11 G H Υνόκμξ A B 0 1 3 4 7 8 10 11 1
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Πανάδεηγμα B C A E D F 0 1 3 4 7 8 10 11 G H Υνόκμξ B E 0 1 3 4 7 8 10 11 13
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Πανάδεηγμα B C A E D F 0 1 3 4 7 8 10 11 G H Υνόκμξ B D E 0 1 3 4 7 8 10 11
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Πανάδεηγμα B C A E D F 0 1 3 4 7 8 10 11 G H Υνόκμξ B E F 0 1 3 4 7 8 10 11 1
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Πανάδεηγμα B C A E D F 0 1 3 4 7 8 10 11 G H Υνόκμξ B E G 0 1 3 4 7 8 10 11 1
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Πανάδεηγμα B C A E D F 0 1 3 4 7 8 10 11 G H Υνόκμξ B E H 0 1 3 4 7 8 10 11 17
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Άπιεζημξ Αιγόνηζμμξ Άπιεζημξ Αιγόνηζμμξ. Θεςνμύμε ηηξ ενγαζίεξ θαηά αύλμοζα ηάλε ςξ πνμξ ημ πνόκμ ιήλεξ. Γπηιέγμομε θάπμηα ενγαζία εθόζμκ αοηή είκαη ζομβαηή με ηηξ οπόιμηπεξ πμο έπμομε ήδε επηιέλεη. Ταξινόμηζε ηιρ επγαζίερ ωρ ππορ σπόνο λήξηρ έηζι ώζηε f 1 f... f n. ζύκμιμ ενγαζηώκ πμο ζα επηιέγεη A for j = 1 to n { if (η επγαζία j είναι ζςμβαηή με ηο A) A A {j} } return A Τιμπμίεζε. O(n log n). Θομάηαη ηεκ ενγαζία j* πμο ημπμζεηήζεθε ηειεοηαία ζημ A. Η ενγαζία j είκαη ζομβαηή με (θάζε ενγαζία ημο) A ακ s j f j*. 18
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Ονζόηεηα Θεώνεμα. Ο άπιεζημξ αιγόνηζμμξ είκαη βέιηηζημξ. Απόδεηλε. (με άημπμ) Έζης όηη μ άπιεζημξ δεκ είκαη βέιηηζημξ. Έζης i 1, i,... i k μη ενγαζίεξ πμο επηιέγεη μ άπιεζημξ. Έζης j 1, j,... j m μη ενγαζίεξ ζε μηα βέιηηζηε ιύζε ηέημηα ώζηε i 1 = j 1, i = j,..., i r = j r γηα ηε μέγηζηε δοκαηή ηημή ημο r. ε ενγαζία i r+1 ηειεηώκεη πνηκ ηεκ j r+1 Άπιεζημξ: i 1 i i r i r+1 Βέιηηζημξ: j 1 j j r j r+1... γηαηί κα μεκ ακηηθαηαζηήζμομε ηεκ ενγαζία j r+1 με ηεκ ενγαζία i r+1? 1
Υνμκμπνμγναμμαηηζμόξ Δηαζηεμάηςκ: Ονζόηεηα Θεώνεμα. Ο άπιεζημξ αιγόνηζμμξ είκαη βέιηηζημξ. Απόδεηλε. (με άημπμ) Έζης όηη μ άπιεζημξ δεκ είκαη βέιηηζημξ. Έζης i 1, i,... i k μη ενγαζίεξ πμο επηιέγεη μ άπιεζημξ. Έζης j 1, j,... j m μη ενγαζίεξ ζε μηα βέιηηζηε ιύζε ηέημηα ώζηε i 1 = j 1, i = j,..., i r = j r γηα ηε μέγηζηε δοκαηή ηημή ημο r. ε ενγαζία i r+1 ηειεηώκεη πνηκ ηεκ j r+1 Άπιεζημξ: i 1 i i r i r+1 Βέιηηζημξ: j 1 j j r i r+1... ε ιύζε είκαη αθόμα εθηθηή θαη βέιηηζηε, ςζηόζμ ακηηθνμύεη ημ μέγηζημ r. 0
Δηαμένηζε Υνμκηθώκ Δηαζηεμάηςκ
Δηαμένηζε Υνμκηθώκ Δηαζηεμάηςκ Δηαμένηζε Υνμκηθώκ Δηαζηεμάηςκ Η δηάιελε j λεθηκάεη ηε ζηηγμή s j θαη ηειεηώκεη ηε ζηηγμή f j. ηόπμξ: εύνεζε ημο ειάπηζημο πιήζμοξ αηζμοζώκ γηα κα πνμκμπνμγναμμαηηζημύκ όιεξ μη δηαιέλεηξ έηζη ώζηε κα μεκ οπάνπμοκ δομ δηαιέλεηξ ζηεκ ίδηα αίζμοζα. Π.π.: Έπμομε 4 αίζμοζεξ γηα ηεκ πνμγναμμαηηζμό 10 δηαιέλεςκ. 4 e j 3 c d g b h 1 a f i :30 10 10:30 11 11:30 1 1:30 1 1:30 :30 3 3:30 4 4:30 Υνόκμξ
Δηαμένηζε Υνμκηθώκ Δηαζηεμάηςκ Δηαμένηζε Υνμκηθώκ Δηαζηεμάηςκ Η δηάιελε j λεθηκάεη ηε ζηηγμή s j θαη ηειεηώκεη ηε ζηηγμή f j. ηόπμξ: εύνεζε ημο ειάπηζημο πιήζμοξ αηζμοζώκ γηα κα πνμκμπνμγναμμαηηζημύκ όιεξ μη δηαιέλεηξ έηζη ώζηε κα μεκ οπάνπμοκ δομ δηαιέλεηξ ζηεκ ίδηα αίζμοζα. Π.π.: Σμ αθόιμοζμ πνεζημμπμηεί μόκμ 3 αίζμοζεξ. 3 c d f j b g i 1 a e h :30 10 10:30 11 11:30 1 1:30 1 1:30 :30 3 3:30 4 4:30 Υνόκμξ 3
Δηαμένηζε Υνμκηθώκ Δηαζηεμάηςκ: Κάης Φνάγμα ζηε Βέιηηζηε Λύζε Ονηζμόξ. Σμ βάζμξ εκόξ ζοκόιμο δηαζηεμάηςκ είκαη ημ μέγηζημ πιήζμξ δηαζηεμάηςκ πμο πενηέπμοκ έκα (θμηκό) πνμκηθό ζεμείμ. εμακηηθή Παναηήνεζε. Πιήζμξ ηςκ ακαγθαίςκ αηζμοζώκ βάζμξ. Π.π.: Βάζμξ ημο πνμγνάμμαημξ= 3 βέιηηζημ πνμκμδηάγναμμα. ηα a, b, c πενηέπμοκ ηε πνμκηθή ζηηγμή :30 Γνώηεζε. Πάκηα οπάνπεη πνόγναμμα ίζμ με ημ βάζμξ ηςκ δηαζηεμάηςκ ; 3 c d f j b g i 1 a e h :30 10 10:30 11 11:30 1 1:30 1 1:30 :30 3 3:30 4 4:30 Υνόκμξ 4
Δηαμένηζε Υνμκηθώκ Δηαζηεμάηςκ: Άπιεζημξ Αιγόνηζμμξ Άπιεζημξ αιγόνηζμμξ. Θεςνήζηε ηηξ δηαιέλεηξ ζε αύλμοζα ζεηνά ςξ πνμξ ηεκ ζηηγμή έκανλεξ: ακαζέζηε ηε δηάιελε ζε θάπμηα ζομβαηή αίζμοζα. Ταξινόμηζε ηιρ διαλέξειρ (ηα διαζηήμαηα) ωρ ππορ ηο σπόνο έναπξηρ έηι ώζηε s 1 s... s n. d 0 πιήζμξ δεζμεομέκςκ αηζμοζώκ for j = 1 to n { if (η διάλεξη j είναι ζςμβαηή με κάποια αίθοςζα k) ππογπαμμάηιζε ηην διάλεξη j για ηην αίθοςζα k else δέζμεςζε μια νέα αίθοςζα d + 1 ππογπαμμάηιζε ηην διάλεξη j για ηην αίθοςζα d + 1 d d + 1 } Τιμπμίεζε. O(n log n). Γηα θάζε αίζμοζα k, δηαηήνεζε ηε ζηηγμή ιήλεξ ηεξ ηειεοηαίαξ δηάιελεξ. Δηαηήνεζε ηηξ αίζμοζεξ ζε μηα μονά πνμηεναηόηεηαξ.
Δηαμένηζε Υνμκηθώκ Δηαζηεμάηςκ: Ακάιοζε Άπιεζημο Αιγμνίζμμο Παναηήνεζε. Ο άπιεζημξ αιγόνηζμμξ δεκ πνμγναμμαηίδεη πμηέ δύμ αζύμβαηεξ δηαιέλεηξ ζηεκ ίδηα αίζμοζα. Θεώνεμα. Ο άπιεζημξ αιγόνηζμμξ είκαη βέιηηζημξ. Απόδεηλε. Έζης d = πιήζμξ αηζμοζώκ πμο δεζμεύεη μ άπιεζημξ αιγόνηζμμξ. Μηα αίζμοζα d δεζμεύεηαη επεηδή πνέπεη κα πνμγναμμαηίζμομε μηα δηάιελε, έζης j, πμο είκαη αζύμβαηε με όιεξ ηηξ οπόιμηπεξ d-1 αίζμοζεξ. Οη d αοηέξ δηαιέλεηξ ηειεηώκμοκ θάπμηα ζηηγμή μεηά ηε s j. Γπεηδή ηαληκμμμύμε θαηά πνόκμ έκανλεξ, όιεξ αοηέξ μη αζομβαηόηεηεξ πνμθαιμύκηαη από δηαιέλεηξ πμο λεθηκμύκ πνηκ ηε ζηηγμή s j. Άνα, έπμομε d δηαιέλεηξ πμο επηθαιύπημκηαη ηε ζηηγμή s j + ε (γηα μηθνό ε). Από εμακηηθή Παναηήνεζε θάζε πνμκμπνμγναμμαηηζμόξ πνεηάδεηαη d αίζμοζεξ.
Υνμκμπνμγναμμαηηζμόξ γηα Γιαπηζημπμίεζε Καζοζηένεζεξ
Υνμκμπνμγναμμαηηζμόξ γηα Γιαπηζημπμίεζε Καζοζηένεζεξ Πνόβιεμα ειαπηζημπμίεζεξ θαζοζηένεζεξ Μηα μεπακή επελενγάδεηαη μηα ενγαζία ηε θμνά. Η ενγαζία j απαηηεί t j μμκάδεξ πνόκμο θαη έπεη πνμζεζμία πνόκμο d j. Ακ ε j λεθηκά ηε ζηηγμή s j, ζα ηειεηώζεη ηε ζηηγμή f j = s j + t j. Καζοζηένεζε: j = max { 0, f j - d j }. (f j - d j >0 «πάκεη» ηε πνμζεζμία) ηόπμξ: πνμκμπνμγναμμαηηζμόξ ηςκ ενγαζηώκ γηα ειαπηζημπμίεζε ηεξ μέγηζηεξ θαζοζηένεζεξ L = max j. 1 3 4 Π.π.: t j 3 1 4 3 d j 8 1 θαζοζηένεζε = θαζοζηένεζε = 0 max θαζοζηένεζε = d 3 = d = 8 d = 1 d 1 = d = d 4 = 0 1 3 4 7 8 10 11 1 13 1 8
Γιαπηζημπμίεζε Καζοζηένεζεξ: Άπιεζημη Αιγόνηζμμη Άπιεζημ πνόηοπμ. Θεςνήζηε ηηξ ενγαζίεξ με θάπμηα ζεηνά. [Πνώηα μ ζοκημμόηενμξ πνόκμξ επελενγαζίαξ] ενγαζίεξ ζε αύλμοζα ηάλε ςξ πνμξ ημ πνόκμ επελενγαζίαξ t j. [Πνώηα ε μηθνόηενε πνμζεζμία] ενγαζίεξ ζε αύλμοζα ηάλε ςξ πνμξ ηεκ πνμζεζμία d j. [Γιάπηζημ πνμκηθό πενηζώνημ] ενγαζίεξ ζε αύλμοζα ηάλε ςξ πνμξ ημ πνμκηθό πενηζώνημ d j - t j.
Γιαπηζημπμίεζε Καζοζηένεζεξ: Άπιεζημη Αιγόνηζμμη Άπιεζημ πνόηοπμ. Θεςνήζηε ηηξ ενγαζίεξ με θάπμηα ζεηνά. [Πνώηα μ ζοκημμόηενμξ πνόκμξ επελενγαζίαξ] ενγαζίεξ ζε αύλμοζα ηάλε ςξ πνμξ ημ πνόκμ επελενγαζίαξ t j. d j 1 t j 1 100 10 10 Ακηηπανάδεηγμα, L=1 αιιά L opt =0 d 1 = 100 d = 10 0 1 3 4 7 8 10 11 [Γιάπηζημ πνμκηθό πενηζώνημ] ενγαζίεξ ζε αύλμοζα ηάλε ςξ πνμξ ημ πνμκηθό πενηζώνημ d j - t j. 1 t j 1 d j 10 10 Ακηηπανάδεηγμα, L= αιιά L opt =1 d = 10 d 1 = 0 1 3 4 7 8 10 11 30
Γιαπηζημπμίεζε Καζοζηένεζεξ: Άπιεζημξ Αιγόνηζμμξ Άπιεζημξ αιγόνηζμμξ. Πνώηα ε μηθνόηενε πνμζεζμία. Ταξινόμηζε n επγαζίερ ωρ ππορ ηιρ πποθεζμίερ έηζι ώζηε: d 1 d d n t 0 for j = 1 to n Ανάθεζε ζηην επγαζία j ηο διάζηημα [t, t + t j ] s j t, f j t + t j t t + t j εκηύπωζε ηα διαζηήμαηα [s j, f j ] 1 3 4 t j 3 1 4 3 d j 8 1 μέγηζηε θαζοζηένεζε = 1 d 1 = d = 8 d 3 = d 4 = d = d = 1 0 1 3 4 7 8 10 11 1 13 1 31
Γιαπηζημπμίεζε Καζοζηένεζεξ: Δεκ οπάνπεη Υνόκμξ Αδνάκεηαξ Παναηήνεζε. Τπάνπεη μηα βέιηηζηε ιύζε πςνίξ πνόκμ αδνάκεηαξ. d = 4 d = 0 1 3 4 d = 1 7 8 10 11 d = 4 d = d = 1 0 1 3 4 7 8 10 11 Παναηήνεζε. Ο άπιεζημξ αιγόνηζμμξ δεκ έπεη πνόκμ αδνάκεηαξ. 3
Γιαπηζημπμίεζε Καζοζηένεζεξ: Ακηηζηνμθέξ Ονηζμόξ. Μηα ακηηζηνμθή ζε έκα πνμκμδηάγναμμα S είκαη έκα δεογάνη ενγαζηώκ i θαη j με d i < d j αιιά ε j πνμκμπνμγναμμαηίδεηαη πνηκ ηεκ i. ακηηζηνμθή f i πνηκ ηεκ ακηημεηάζεζε j i [οπμζέημομε όηη μη ενγαζίεξ ανηζμμύκηαη έηζη ώζηε d 1 d d n ] Παναηήνεζε. Σμ άπιεζημ πνμκμδηάγναμμα δεκ έπεη ακηηζηνμθέξ. Παναηήνεζε. Ακ έκα πνμκμδηάγναμμα (πςνίξ πνόκμ αδνάκεηαξ) έπεη μηα ακηηζηνμθή, ηόηε έπεη έκα δεογάνη ακηεζηναμμέκςκ ενγαζηώκ πμο πνμγναμμαηίδμκηαη ζε δηαδμπηθέξ ζέζεηξ. 33
Γιαπηζημπμίεζε Καζοζηένεζεξ: Ακηηζηνμθέξ Ονηζμόξ. Μηα ακηηζηνμθή ζε έκα πνμκμδηάγναμμα S είκαη έκα δεογάνη ενγαζηώκ i θαη j με d i < d j αιιά ε j πνμκμπνμγναμμαηίδεηαη πνηκ ηεκ i. ακηηζηνμθή f i πνηκ ηεκ ακηημεηάζεζε j i μεηά ηεκ ακηημεηάζεζε i j f' j Ιζπονηζμόξ. Η αιιαγή δομ δηαδμπηθώκ, ακηεζηναμμέκςκ ενγαζηώκ μεηώκεη ημ πιήζμξ ηςκ ακηηζηνμθώκ θαηά 1 θαη δεκ αολάκεη ηεκ μέγηζηε θαζοζηένεζε. Απόδεηλε. : θαζοζηένεζε πνηκ ηεκ αιιαγή, ' : μεηά ηεκ αιιαγή. ' k = k γηα θάζε k i, j ' i i Ακ ε ενγαζία j θαζοζηενήζεη: j = max { 0, f j - d j } j f d f f i i i j d d i j j j f ( i j) i 34
Γιαπηζημπμίεζε Καζοζηένεζεξ: Ακάιοζε Άπιεζημο Αιγμνίζμμο Θεώνεμα. Σμ πνμκμδηάγναμμα S ημο άπιεζημο αιγμνίζμμο είκαη βέιηηζημ. Απόδεηλε. (με άημπμ) S* : βέιηηζημ πνμκμδηάγναμμα με ημ μηθνόηενμ πιήζμξ ακηηζηνμθώκ. Γκςνίδμομε όηη ημ S* δεκ έπεη πνόκμ αδνάκεηαξ. Ακ ημ S* δεκ έπεη ακηηζηνμθέξ, ηόηε S = S*. Ακ ημ S* έπεη μηα ακηηζηνμθή, ηόηε έζης i-j μηα γεηημκηθή ακηηζηνμθή. ακηημεηαζέημκηαξ i με j δεκ αολάκεη ηε μέγηζηε θαζοζηένεζε θαη μεηώκεη αοζηενά ημ πιήζμξ ηςκ ακηηζηνμθώκ αοηό ένπεηαη ζε ακηίζεζε με ημκ μνηζμό ημο S* 3
ηναηεγηθέξ Ακάιοζεξ Άπιεζηςκ Αιγμνίζμςκ Ο άπιεζημξ αιγόνηζμμξ οπενηενεί. Δείπκμομε όηη μεηά από θάζε βήμα ημο άπιεζημο αιγμνίζμμο, ε ιύζε ημο είκαη ημοιάπηζημκ ηόζμ θαιή όζμ μπμημοδήπμηε άιιμο αιγμνίζμμο. Δμμηθή ακάιοζε. Ακαθαιύπημομε έκα απιό «δμμηθό» όνημ πμο κα επηβεβαηώκεη όηη θάζε πηζακή ιύζε πνέπεη κα έπεη μηα ζογθεθνημέκε ηημή. ηε ζοκέπεηα δείπκμομε όηη μ άπιεζημξ αιγόνηζμμξ πάκηα πεηοπαίκεη αοηό ημ όνημ. Γπηπείνεμα ακηαιιαγήξ. Μεηαηνέπμομε ζηαδηαθά μπμηαδήπμηε ιύζε ζε αοηή πμο ακαθαιύπηεη μ άπιεζημξ αιγόνηζμμξ πςνίξ κα επενεάδεηαη ε πμηόηεηα ηεξ ιύζεξ. Άιιμη άπιεζημη αιγόνηζμμη. Kruskal, Prim, Dijkstra, Huffman, 3
Ρέζηα ζε Κένμαηα
Ρέζηα ζε Κένμαηα ηόπμξ. Δεδμμέκμο μηαξ μκμμαζίαξ κμμηζμάηςκ: 1,,, 10, 0, 0, 100, 00 βνεξ μηα μέζμδμ γηα κα πιενώζεηξ ημκ πειάηε πνεζημμπμηώκηαξ ημ ειάπηζημ πιήζμξ θενμάηςκ. Π.π.: 34ιεπηά. Ο αιγόνηζμμξ ημο ηαμία. ε θάζε επακάιερε, πνόζζεζε ημ θένμα με ηεκ μεγαιύηενε αλία πμο δεκ λεπενκά ημ ζοκμιηθό πμζό. Π.π.:.8 38
Ρέζηα ζε Κένμαηα: Άπιεζημξ Αιγόνηζμμξ Ο αιγόνηζμμξ ημο ηαμία. ε θάζε επακάιερε, πνόζζεζε ημ θένμα με ηεκ μεγαιύηενε αλία πμο δεκ λεπενκά ημ ζοκμιηθό πμζό. Ταξινόμηζε ηα κέπμαηα ωρ ππορ ηην αξία: c 1 < c < < c n. επηιεγμέκα θένμαηα S while (x 0) { έζηω k ο μέγιζηορ ακέπαιορ για ηον οποίο c k x if (k = 0) return "δεν ςπάπσει λύζη" x x - c k S S {k} } return S Γνώηεμα. Γίκαη μ αιγόνηζμμξ ημο ηαμία βέιηηζημξ; 3
Ρέζηα ζε Κένμαηα: Ακάιοζε ημο Άπιεζημο Αιγμνίζμμο Θεώνεμα. Ο άπιεζημξ αιγόνηζμμξ είκαη βέιηηζημξ γηα : 1,, 10,, 100. Απόδεηλε. (με επαγςγή ζημ x) Έζης έκαξ βέιηηζημξ ηνόπμξ γηα πμζό c k x < c k+1 : μ άπιεζημξ αιγόνηζμμξ επηιέγεη ημ θένμα k. Ιζπονηδόμαζηε όηη θάζε βέιηηζηε ιύζε πνέπεη κα ζομπενηιάβεη ημ c k. δηαθμνεηηθά, πνεηάδεηαη θένμαηα c 1,, c k-1 πμο αζνμίδμοκ ζημ x μ θάης πίκαθαξ δείπκεη όηη θαμία βέιηηζηε ιύζε μπμνεί κα ημ πεηύπεη Σμ πνόβιεμα ακάγεηαη ζηα θένμαηα γηα ημ πμζό ηςκ x - c k, πμο, από ηεκ επαγςγηθή οπόζεζε είκαη βέιηηζημ από ημκ άπιεζημ αιγόνηζμμ. c k-1 c k c k+1 k c k Οη βέιηηζηεξ ιύζεηξ πνέπεη κα ηθακμπμημύκ Max ηημή κμμηζμάηςκ 1,,, k-1 ζε θάζε OPT x sol(x)= sol(x-c k )+1 1 1 1Λ 4 - Λ 1 4 3 10 10Λ 4 + = 4 Λ 3 0 + 4 = 4 100 πςνίξ όνημ 7 + 4 = 40
Ρέζηα ζε Κένμαηα: Ακάιοζε ημο Άπιεζημο Αιγμνίζμμο Παναηήνεζε. Ο άπιεζημξ αιγόνηζμμξ δεκ δμοιεύεη γηα θάζε είδμοξ κμμηζμάηςκ: Π.π. 1, 10, 1, 34, 70, 100 Ακηηπανάδεηγμα. 0. Άπιεζημξ: 100, 34, 1, 1, 1, 1, 1, 1. Βέιηηζημξ: 70, 70. 41
Άζθεζε ζε Άπιεζημοξ Αιγμνίζμμοξ Γνήγμνμ, λεθμύναζημ θαη ήζοπμ ηαλίδη: Θέιμομε κα ηαληδέρμομε ζηεκ αθόιμοζε εοζεία μήθμοξ L δηακύμκηαξ με ημ θςξ ηεξ εμέναξ ημ πμιύ d πιμ. Όηακ βναδηάδεη ζέιμομε κα λεθμοναδόμαζηε ζηα ζεμεία P πμο βνίζθμκηαη ζε απμζηάζεηξ x 1, x,, x n από ηεκ ανπή. Θέιμομε κα βνμύμε όζμ ημ δοκαηό ιηγόηενα ζεμεία λεθμύναζεξ έηζη ώζηε κα πναγμαημπμηήζμομε όζμ γίκεηαη γνεγμνόηενα ημ ηαλίδη. 4
Άζθεζε ζε Άπιεζημοξ Αιγμνίζμμοξ Άπιεζημξ Αιγόνηζμμξ: Κάζε θμνά πμο θηάκμομε ζε έκα ζεμείμ P, x j απμθαζίδμομε ακ πνμιαβαίκμομε κα πάμε μέπνη ημ επόμεκμ P, x j+1 πνηκ βναδηάζεη. Ακ μπμνμύμε ζοκεπίδμομε, δηαθμνεηηθά ζηαμαηάμε. ακ (x j+1 - x j ) < d Θέιμομε κα βνμύμε όζμ ημ δοκαηό ιηγόηενα ζεμεία λεθμύναζεξ έηζη ώζηε κα πναγμαημπμηήζμομε όζμ γίκεηαη γνεγμνόηενα ημ ηαλίδη. 43
Άζθεζε ζε Άπιεζημοξ Αιγμνίζμμοξ Άπιεζημξ Αιγόνηζμμξ: Κάζε θμνά πμο θηάκμομε ζε έκα ζεμείμ P, x j απμθαζίδμομε ακ πνμιαβαίκμομε κα πάμε μέπνη ημ επόμεκμ P, x j+1 πνηκ βναδηάζεη. Ακ μπμνμύμε ζοκεπίδμομε, δηαθμνεηηθά ζηαμαηάμε. Έζης R = {x 1,, x m,, x k } ηα ζεμεία πμο επηιέγεη μ άπιεζημξ Έζης S = {y 1,, y m } ηα ζεμεία πμο επηιέγεη μ βέιηηζημξ Τπμζέημομε όηη m < k γηα κα θηάζμομε ζε άημπμ. Ιζπονηζμόξ. Γηα θάζε μένα j=1,,m έπμομε x j y j. Απόδεηλε (με επαγςγή ζημ j) Βάζε: j=1 ηζπύεη θαζώξ πνμπςνάμε όζμ γίκεηαη μαθνύηενα Γπαγςγηθή Τπόζεζε: Ιζπύεη γηα όια ηα i < j. Γπαγςγηθό βήμα: ημ S ζα πνέπεη: y j y j-1 d Από Γπαγςγηθή Τπόζεζε ζα πνέπεη: x j-1 y j-1 y j - x j-1 y j - y j-1 d Δειαδή: y j - x j-1 d x j yj (δηόηη ε άπιεζηε επηιμγή x j x j-1 d) 44
Άζθεζε ζε Άπιεζημοξ Αιγμνίζμμοξ Άπιεζημξ Αιγόνηζμμξ: Κάζε θμνά πμο θηάκμομε ζε έκα ζεμείμ P, x j απμθαζίδμομε ακ πνμιαβαίκμομε κα πάμε μέπνη ημ επόμεκμ P, x j+1 πνηκ βναδηάζεη. Ακ μπμνμύμε ζοκεπίδμομε, δηαθμνεηηθά ζηαμαηάμε. Έζης R = {x 1,, x m,, x k } ηα ζεμεία πμο επηιέγεη μ άπιεζημξ Έζης S = {y 1,, y m } ηα ζεμεία πμο επηιέγεη μ βέιηηζημξ Τπμζέημομε όηη m < k γηα κα θηάζμομε ζε άημπμ. Ιζπονηζμόξ. Γηα θάζε μένα j=1,,m έπμομε x j y j. Γπμμέκςξ x m y m ημ x m+1 λεθμοναδόμαζηε, άνα ζα πνέπεη x m L d Δειαδή y m x m L d θαη επεηδή m < k y m < L d. Άημπμ δηόηη ημ S ζα έπνεπε ηόηε κα είπε επηιέλεη θαη άιιμ ζεμείμ γηα κα ηενμαηίζεη. 4
Άδεηεξ Λμγηζμηθώκ (Άζθεζε) Άδεηεξ ιμγηζμηθώκ. Κάζε άδεηα πςιείηαη γηα 100 θαη θάζε μήκα ε εηαηνία ζαξ μπμνεί κα αγμνάζεη ημ πμιύ μηα άδεηα. Σμ θόζημξ μηαξ άδεηαξ αολάκεη θάζε μήκα θαηά έκα ζοκηειεζηή r j > 1, δειαδή ακ μηα άδεηα αγμναζηεί μεηά από k μήκεξ ζα θμζηίδεη 100 (r j ) k. Οη ζοκηειεζηέξ μεηαλύ ημοξ είκαη όιμη δηαθμνεηηθμί: r i,r j r i r j. ηόπμξ: Με πμηα ζεηνά πνέπεη κα αγμνάζεη ε εηαηνεία n άδεηεξ με ζοκηειεζηέξ r 1, r,, r n έηζη ώζηε κα ειαπηζημπμηήζεη ημ ζοκμιηθό θόζημξ; Π.π. r 1 =, r = 3, r 3 = 4: Καηά αύλμοζα ζεηνά: 100 ( + 3 + 4 3 ) = 700 Καηά θζίκμοζα ζεηνά: 100 (4 + 3 + 3 ) = 100 4
Άδεηεξ Λμγηζμηθώκ (Άζθεζε) Ιζπονηζμόξ. Η ηαληκόμεζε θαηά θζίκμοζα ηάλε δίκεη ηεκ βέιηηζηε ιύζε. Απόδεηλε (με άημπμ θαη επηπείνεμα ακηαιιαγήξ) S = ε ιύζε ημο άπιεζημο αιγμνίζμμο θαηά θζίκμοζα ηάλε. Φ = ε βέιηηζηε ιύζε Τπμζέημομε όηη S Φ H Φ πενηέπεη μηα ημοιάπηζημκ ακηηζηνμθή ςξ πνμξ ηεκ S Δειαδή, ζε δομ δηαδμπηθμύξ μήκεξ k θαη k+1 ηεξ Φ ζα πνέπεη: r k < Φ r k+1 Ακ ακηαιιάλμομε ηα r k θαη r k+1 ζα πνέπεη κα θενδίζμομε θάηη: Φ: 100 ( (r k ) k + (r k+1 ) k+1 ) Φ : 100 ( (r k+1 ) k + (r k ) k+1 ) (δειαδή ζέιμομε Φ < Φ) Σα οπόιμηπα θμμμάηηα ηςκ Φ θαη Φ παναμέκμοκ ακαιιμίςηα. Γκςνίδμομε όηη r k < r k+1 θαη επεηδή r i > 1: r k (r k -1) < r k+1 (r k+1-1) (r k ) k (r k -1) < (r k+1 ) k (r k+1-1) (r k ) k+1 - (r k ) k < (r k+1 ) k+1 - (r k+1 ) k (r k ) k+1 + (r k+1 ) k < (r k+1 ) k+1 + (r k ) k Φ < Φ. Άνα Φ δεκ είκαη βέιηηζηε. 47
Άδεηεξ Λμγηζμηθώκ (Άζθεζε) Ιζπονηζμόξ. Η ηαληκόμεζε θαηά θζίκμοζα ηάλε δίκεη ηεκ βέιηηζηε ιύζε. Άπιεζημξ Αιγόνηζμμξ: 1. Σαληκόμεζε ηηξ άδεηεξ θαηά θζίκμοζα ηάλε r 1 > r > > r n. Κάζε μήκα επέιελε ημ r i Υνόκμξ Ο(n log n ): ιόγς ηαληκόμεζεξ Παναπιήζηα εθδμπή: Θέιμομε κα πμοιήζμομε Η/Τ πμο ημ θόζημξ ημοξ μεηώκεηαη θάζε μήκα θαηά έκα ζοκηειεζηή r j < 1 : μεηά από k μήκεξ θμζηίδεη 100 (r j ) k. Πμηα είκαη ε βέιηηζηε ζεηνά πώιεζεξ; Π.π. r 1 = 3/4, r = 1/, r 3 = 1/100 48
οκημμόηενεξ Δηαδνμμέξ ζε Γναθήμαηα
Πνόβιεμα οκημμόηενεξ Δηαδνμμήξ Δίθηομ ζοκημμόηενςκ δηαδνμμώκ Καηεοζοκόμεκμ γνάθεμα G = (V, E). Αθεηενία s, πνμμνηζμόξ t. Κόζημξ e = μήθμξ ηεξ αθμήξ e. Πνόβιεμα ζοκημμόηενεξ δηαδνμμήξ: εύνεζε ηεξ ζοκημμόηενεξ θαηεοζοκόμεκεξ δηαδνμμήξ από ημκ s ζημκ t. Κόζημξ s-t δηαδνμμήξ: δ(s,t) θόζημξ δηαδνμμήξ = άζνμηζμα ηςκ αθμώκ (ηα μήθε ημοξ) ηεξ δηαδνμμήξ s 1 0 30 3 18 11 1 4 3 1 Κόζημξ δηαδνμμήξ (s--3--t) = + 3 + + 1 = 0. 7 44 t 0
Ιδηόηεηα οκημμόηενεξ Δηαδνμμήξ Ιδηόηεηα οπμδηαδνμμήξ Έζης P = (v 1,, v k ) μηα ζοκημμόηενε δηαδνμμή. Σόηε μπμηαδήπμηε οπμδηαδνμμή (v i,, v j ) ηεξ P είκαη βέιηηζηε, 1 i,j k Δειαδή: H οπμδηαδνμμή (v i,, v j ) είκαη ε ζοκημμόηενε v i - v j δηαδνμμή. s 1 0 30 3 18 11 1 4 3 1 Κόζημξ δηαδνμμήξ (s--3--t) = + 3 + + 1 = 0. 7 44 t 1
Αιγόνηζμμξ ημο Dijkstra Ο αιγόνηζμμξ ημο Dijkstra. Δηαηήνεζε ζοκόιμο θόμβςκ S πμο έπμοκ ακαθαιοθζεί: γηα θάζε θόμβμ u ημο S γκςνίδμομε ηε ζοκημμόηενε δηαδνμμή d(u) από ηεκ αθεηενία s. Ανπηθμπμημύμε S = { s }, d(s) = 0, v V-{s}: d(v) =. Γπακαιεπηηθά επηιέγμομε θόμβμ v πμο δεκ έπεη ακαθαιοθζεί πμο ειαπηζημπμηεί ( v) min e ( u, v) : us d( u) πνμζζέημομε v ζημ S, θαη ζέημομε d(v) = (v). e, ζοκημμόηενε δηαδνμμή ζε θάπμημ u πμο έπεη ακαθαιοθζεί, αθμιμοζμύμεκμ από μηα μμκαδηθή αθμή (u, v) S d(u) u e v s foreach edge e = (u,v) do if d(v) > d(u) + e d(v) = d(u) + e
Αιγόνηζμμξ ημο Dijkstra Ο αιγόνηζμμξ ημο Dijkstra. Δηαηήνεζε ζοκόιμο θόμβςκ S πμο έπμοκ ακαθαιοθζεί: γηα θάζε θόμβμ u ημο S γκςνίδμομε ηε ζοκημμόηενε δηαδνμμή d(u) από ηεκ αθεηενία s. Ανπηθμπμημύμε S = { s }, d(s) = 0, v V-{s}: d(v) =. Γπακαιεπηηθά επηιέγμομε θόμβμ v πμο δεκ έπεη ακαθαιοθζεί πμο ειαπηζημπμηεί ( v) min e ( u, v) : us d( u) πνμζζέημομε v ζημ S, θαη ζέημομε d(v) = (v). e, ζοκημμόηενε δηαδνμμή ζε θάπμημ u πμο έπεη ακαθαιοθζεί, αθμιμοζμύμεκμ από μηα μμκαδηθή αθμή (u, v) S d(u) u e v s foreach edge e = (u,v) do if d(v) > d(u) + e d(v) = d(u) + e 3
Αιγόνηζμμξ ημο Dijkstra: Απόδεηλε Ονζόηεηαξ Ιδηόηεηα. Γηα θάζε θόμβμ u S, d(u) είκαη ημ μήθμξ ζοκημμόηενεξ s-u δηαδνμμήξ. Απόδεηλε. (με επαγςγή ζημ S ) Βάζε: Γηα S = 1 ηζπύεη. Γπαγςγηθή Τπόζεζε: Τπμζέημομε όηη ηζπύεη γηα S = k 1. Έζης v μ επόμεκμξ θόμβμξ γηα ημ S, θαη έζης (u,v) ε επηιεγμέκε αθμή. Η ζοκημμόηενε s-u δηαδνμμή + (u, v) : s-v δηαδνμμή μήθμοξ π(v). Έζης ηοπαία s-v δηαδνμμή P. Θα δείλμομε όηη δεκ μπμνεί κα είκαη < π(v). Έζης (x,y) ε πνώηε αθμή ημο P πμο θεύγεη από ημ S, θαη έζης P' ε οπμδηαδνμμή πνμξ ημκ x. Η P είκαη ήδε πμιύ μεγάιε από ηε ζηηγμή πμο θεύγεη από ημ S. s P P' x y S u (P) (P') + (x,y) d(x) + (x, y) (y) (v) v μη-αρνητικά βάρη επαγςγηθή οπόζεζε μνηζμόξ ημο π(y) Ο αιγόνηζμμξ ημο Dijkstra επηιέγεη ημκ v ακηί ημο y 4
Αιγόνηζμμξ ημο Dijkstra: Τιμπμίεζε Γηα θάζε θόμβμ v πμο δεκ έπεη ακαθαιοθζεί δηαηενεί (v) min d(u) e. e (u,v) : u S Γπόμεκμξ θόμβμξ = θόμβμξ με ημ ειάπηζημ π(v). Όηακ ακαθαιύπημομε ημκ v, γηα θάζε πνμζθείμεκε αθμή e = (v, w), εκεμενώκμομε (w) min { (w), (v) e }. foreach edge e = (u,v) do if d(v) > d(u) + e d(v) = d(u) + e Απμδμηηθή οιμπμίεζε. Δηαηήνεζε ημοξ θόμβμοξ πμο δεκ έπμοκ ακαθαιοθζεί ζε μηα μονά πνμηεναηόηεηαξ (PQ) με πνμηεναηόηεηα π(v). Λεηημονγία PQ Insert ExtractMin ChangeKey Dijkstra n n m Πίκαθαξ n n 1 Δοαδ. ςνόξ log n log n log n Priority Queue Οονά Fib 1 log n IsEmpty n 1 1 1 ύκμιμ n m log n m + n log n 1 Οονά Fibonacci: ηα όνηα ηςκ δηαθνηηώκ ιεηημονγηώκ είκαη επημενηζμέκμη πνόκμη
Αιγόνηζμμξ ημο Dijkstra: Τιμπμίεζε Dijkstra(G,s) { foreach v V do { d[v] = } Απσικοποίηζε μια οςπά πποηεπαιόηηηαρ Q με n ζηοισεία: Q = V d[s] = 0 while(q δεν είναι άδεια) { v = ExtractMin(Q) foreach e = (v,w) E do if d(w) > d(v) + e { d(w) = d(v) + e // μείωζη πποηεπαιόηηηαρ ChangeKey(Q,w,d[w]) // μείωζη κλειδιού } } } Δηαηενμύμε ημ V-S ζε μηα μονά πνμηεναηόηεηαξ Q ηεκ μοζία βνίζθμομε ηηξ ζοκημμόηενεξ δηαδνμμέξ (απμζηάζεηξ d[v]) γηα θάζε θόμβμ v από ηεκ αθεηενία s Μπμνμύμε κα επεθηείκμομε ημκ αιγόνηζμμ έηζη ώζηε κα απμζεθεύεη ημκ πνμεγμύμεκμ θόμβμ γηα ηεκ δηαδνμμή από ημ s ζημ t (p[w]=v)
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα Γύνεζε ηεξ ζοκημμόηενεξ δηαδνμμήξ από ημ s ζημ t. 4 3 s 18 1 0 30 11 1 4 1 7 44 t 7
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { } PQ = { s,, 3, 4,,, 7, t } 0 s 1 0 30 18 4 11 1 4 3 1 εθηίμεζε απόζηαζεξ 7 44 t 8
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { } PQ = { s,, 3, 4,,, 7, t } δηαγναθή ειαπίζημο 0 s 1 0 30 18 4 11 1 4 3 1 εθηίμεζε απόζηαζεξ 7 44 t
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s } PQ = {, 3, 4,,, 7, t } μείςζε θιεηδημύ X 0 s 1 X 0 30 18 4 11 1 4 3 1 εθηίμεζε απόζηαζεξ 7 X 1 44 t 0
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s } PQ = {, 3, 4,,, 7, t } X δηαγναθή ειαπίζημο 0 s 1 X 0 30 18 4 11 1 4 3 1 εθηίμεζε απόζηαζεξ 7 X 1 44 t 1
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s, } PQ = { 3, 4,,, 7, t } X 0 s 1 X 0 30 18 4 11 1 4 3 1 7 X 1 44 t
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s, } PQ = { 3, 4,,, 7, t } μείςζε θιεηδημύ X X 33 0 s 1 X 0 30 18 4 11 1 4 3 1 7 X 1 44 t 3
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s, } PQ = { 3, 4,,, 7, t } X X 33 0 s 1 X 0 30 18 4 δηαγναθή ειαπίζημο 11 1 4 3 1 7 X 1 44 t 4
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s,, } PQ = { 3, 4,, 7, t } 3 X X 33 X 0 s 1 X 0 30 44 X 18 4 11 1 4 3 1 7 X 1 44 t
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s,, } PQ = { 3, 4,, 7, t } 3 X X 33 X 0 s 1 X 0 30 44 X 18 4 11 1 4 3 1 7 X 1 44 δηαγναθή ειαπίζημο t
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s,,, 7 } PQ = { 3, 4,, t } 3 X X 33 X 0 s 1 X 0 30 44 X X 3 18 4 11 1 4 3 1 7 X 1 44 t X 7
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s,,, 7 } PQ = { 3, 4,, t } δηαγναθή ειαπίζημο 3 X X 33 X 0 s 1 X 0 30 44 X X 3 18 4 11 1 4 3 1 7 X 1 44 t X 8
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s,, 3,, 7 } PQ = { 4,, t } 3 X X 33 X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 1 4 3 1 7 X 1 44 1 t X X
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s,, 3,, 7 } PQ = { 4,, t } 3 X X 33 X 0 s 1 X 0 30 4 18 44 X 3 X 34 X δηαγναθή ειαπίζημο 11 1 4 3 1 7 X 1 44 1 t X X 70
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s,, 3,,, 7 } PQ = { 4, t } 3 X X 33 X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 1 4 X 4 3 1 7 X 1 44 0 1 X t X X 71
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s,, 3,,, 7 } PQ = { 4, t } 3 X X 33 X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 4 X 4 δηαγναθή ειαπίζημο 1 3 1 7 X 1 44 0 1 X t X X 7
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s,, 3, 4,,, 7 } PQ = { t } 3 X X 33 X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 1 4 X 4 3 1 7 X 1 44 0 1 X t X X 73
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s,, 3, 4,,, 7 } PQ = { t } 3 X X 33 X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 1 4 X 4 3 1 7 X 1 44 δηαγναθή ειαπίζημο 0 1 X t X X 74
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s,, 3, 4,,, 7, t } PQ = { } 3 X X 33 X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 1 4 X 4 3 1 7 X 1 44 0 1 X t X X 7
Αιγόνηζμμξ ημο Dijkstra: Πανάδεηγμα S = { s,, 3, 4,,, 7, t } PQ = { } 3 X X 33 X 0 s 1 X 0 30 44 X X 4 18 3 X 34 11 1 4 X 4 3 1 7 X 1 44 0 1 X t X X 7
Αιγόνηζμμξ ημο Dijkstra: Υνόκμξ Γθηέιεζεξ Q = V while(q δεν είναι άδεια) { v = ExtractMin(Q) foreach e = (v,w) E do if d(w) > d(v) + e { d(w) = d(v) + e // μείωζη πποηεπαιόηηηαρ ChangeKey(Q,w,d[w]) // μείωζη κλειδιού } } Βνόγπμξ while: n-1 επακαιήρεηξ, θάζε θμνά αθαηνείηαη έκαξ θόμβμξ ExtractMin & ChangeKey: Ο(log n) ιόγς μονάξ πνμηεναηόηεηαξ Πόζμ ζοπκά εθηειείηαη ε ChangeKey γηα μηα αθμή (v,w); όηακ επηιέγμομε ημ άθνμ w ζημ S (δειαδή, w = ΓxtractMin(Q)) ηόηε εθηειείηαη μηα θμνά γηα θάζε μηα αθμή. Γπμμέκςξ: Ο(n) ανπηθμπμίεζε + O(n) επακαιήρεηξ + Ο(n) Extactmin + Ο(m) ChangeKey = O(m log n) (δηόηη m > n) 77
Καιή Μειέηε!!
Ανοικτά Ακαδημαϊκά Μαθήματα Πανεπιστήμιο Ιωαννίνων Τέλος Ενότητας
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. Σημειώματα Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Ιωαννίνων, Διδάσκων: Λέκτορας Χάρης Παπαδόπουλος «Εισαγωγή στη Θεωρία και Ανάλυση Αλγορίθμων». Έκδοση: 1.0. Ιωάννινα 0. Διαθέσιμο από τη δικτυακή διεύθυνση: http://ecourse.uoi.gr/course/view.php?id=1111. Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού - Παρόμοια Διανομή, Διεθνής Έκδοση 4.0 [1] ή μεταγενέστερη. [1] https://creativecommons.org/licenses/by-sa/4.0/.