Δηδηθά Θέκαηα Αιγνξίζκσλ θαη Γνκώλ Γεδνκέλσλ Λνπθάο Γεσξγηάδεο loukas@cs.uoi.gr www.cs.uoi.gr/~loukas
Βαζικέρ έννοιερ και εθαπμογέρ Αιγόξηζκνο: Μέζνδνο γηα ηελ επίιπζε ελόο πξνβιήκαηνο Γνκή Γεδνκέλσλ: Μέζνδνο απνζήθεπζεο δεδνκέλσλ Μεξηθέο εθαξκνγέο Βηνινγία: ραξηνγξάθεζε αλζξώπηλνπ γνληδηώκαηνο, δίπισκα πξσηετλώλ, Γηαδίθηπν: αλαδήηεζε, δξνκνιόγεζε παθέησλ, Τπνινγηζηέο: ζρεδηαζκόο VLSI, κεηαγισηηηζηέο, Αζθάιεηα: ειεθηξνληθό εκπόξην, αζθαιήο κεηάδνζε δεδνκέλσλ, Βηνκεραλία: θαηαλνκή πόξσλ, βειηηζηνπνίεζε παξαγσγήο, Σειεπηθνηλσλίεο: θσδηθνπνίεζε, επεμεξγαζία ζεκάησλ,
Παπάδειγμα: Γπομολόγηζη
Παπάδειγμα: Υπολογιζηική όπαζη Εικόνα από http://www.esiee.fr/~coupriec/
Παπάδειγμα: Κπςπηογπάθηζη θξππηνγξάθεζε απνθξππηνγξάθεζε Bob Eavesdropper Alice
Παπάδειγμα: Κπςπηογπάθηζη Κξππηνζύζηεκα Γεκόζηνπ Κιεηδηνύ θξππηνγξάθεζε απνθξππηνγξάθεζε Bob Eavesdropper Alice Κάζε ζπκκεηέρσλ έρεη έλα δεκόζην θιεηδί θαη έλα θξπθό θιεηδί
Πεπιεσόμενα Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ θαη δνκώλ δεδνκέλσλ Πξνβιήκαηα βειηηζηνπνίεζεο ζε δίθηπα Σπραηνπνηεκέλνη αιγόξηζκνη Γνκέο δεδνκέλσλ θαη κνληέια κλήκεο Αξηζκνζεσξεηηθνί αιγόξηζκνη Άκεζνη αιγόξηζκνη NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Πνιιέο θνξέο έλαο αιγόξηζκνο πξαγκαηνπνηεί κία αθνινπζία πξάμεσλ. Κάζε πξάμε κπνξεί λα έρεη δηαθνξεηηθό θόζηνο αλάινγα κε ηελ ζηηγκή πνπ εθηειείηαη. Σν θόζηνο κίαο πξάμεο ζηε ρεηξόηεξε πεξίπησζε κπνξεί λα είλαη πνιύ κεγάιν. Σν θόζηνο αλά πξάμε ζε κία αθνινπζία πξάμεσλ κπνξεί λα είλαη θαηά κέζν όξν αξθεηά κηθξόηεξν.
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Πνιιέο θνξέο έλαο αιγόξηζκνο πξαγκαηνπνηεί κία αθνινπζία πξάμεσλ. Κάζε πξάμε κπνξεί λα έρεη δηαθνξεηηθό θόζηνο αλάινγα κε ηελ ζηηγκή πνπ εθηειείηαη. Σν θόζηνο κίαο πξάμεο ζηε ρεηξόηεξε πεξίπησζε κπνξεί λα είλαη πνιύ κεγάιν. Σν θόζηνο αλά πξάμε ζε κία αθνινπζία πξάμεσλ κπνξεί λα είλαη θαηά κέζν όξν αξθεηά κηθξόηεξν. Αληηζηαζκηζηηθή αλάιπζε: ιακβάλνπκε ην κέζν θόζηνο εθηέιεζεο κίαο πξάμεο όηαλ εθηεινύκε κία αθνινπζία πξάμεσλ ρεηξόηεξεο πεξίπησζεο
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Παξάδεηγκα : Γνκέο έλσζεο-εύξεζεο (union-find) Τπνζηεξίδνπλ ηηο παξαθάησ ιεηηνπξγίεο επί ελόο ζπλόινπ αληηθεηκέλσλ : ένωση(α,β) : Αληηθαζηζηά ηα ζύλνια πνπ πεξηέρνπλ ηα α θαη β κε ηελ έλσζε ηνπο εύρεση(α) : Δπηζηξέθεη ην όλνκα ηνπ ζπλόινπ πνπ πεξηέρεη ην αληηθείκελν α ένωση(α,β)
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Παξάδεηγκα : Γνκέο έλσζεο-εύξεζεο (union-find) Τπνζηεξίδνπλ ηηο παξαθάησ ιεηηνπξγίεο επί ελόο ζπλόινπ αληηθεηκέλσλ : ένωση(α,β) : Αληηθαζηζηά ηα ζύλνια πνπ πεξηέρνπλ ηα α θαη β κε ηελ έλσζε ηνπο εύρεση(α) : Δπηζηξέθεη ην όλνκα ηνπ ζπλόινπ πνπ πεξηέρεη ην αληηθείκελν α Γνκή «ζηαζκηζκέλεο έλσζεο κε ζπκπίεζε δηαδξνκήο» 1 4 4 2 3 6 5 7 ένωςη(3,6) 1 6 5 7 4 8 2 3 4 8 1 6 5 7 εύρεςη(2) 2 1 6 5 7 2 3 8 3 8
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» Τπνζέηνπκε όηη ηα αληηθείκελα καο είλαη αθέξαηνη αξηζκνί Υξεζηκνπνηνύκε πίλαθεο θαη κεγέζνπο Αξρηθνπνίεζε : γηα Αξρηθά θάζε αληηθείκελν απνηειεί έλα μερσξηζηό ζύλνιν κεγέζνπο 1 1 2 3 4 5 6 7 8 Κάζε ζύλνιν έρεη έλα αληηπξόζσπν. Αλ ην αληηθείκελν k είλαη αληηπξόζσπνο ηόηε ηζρύεη όηη θαη ην ζύλνιν έρεη αληηθείκελα
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» Τπνζέηνπκε όηη ηα αληηθείκελα καο είλαη αθέξαηνη αξηζκνί Υξεζηκνπνηνύκε πίλαθεο θαη κεγέζνπο δείθηεο ζε αληηθείκελν ηνπ ζπλόινπ πνπ πεξηέρεη ην k αξηζκόο αληηθεηκέλσλ ηνπ ζπλόινπ κε αληηπξόζσπν k εύρεση(i) : Ξεθηλώληαο από ην i αθνινπζνύκε ηνπο δείθηεο κέρξη λα βξνύκε αληηθείκελν j ηέηνην ώζηε. Δπηζηξέθνπκε ηo j. ένωση(i,j) : Δθηεινύκε p=εύρεση(i) θαη q=εύρεση(j). Αλ ην ζύλνιν ηνπ q έρεη πεξηζζόηεξα αληηθείκελα από ην ζύλνιν ηνπ p ζέηνπκε. Γηαθνξεηηθά ζέηνπκε.
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» void find(int i) { int j = i; while (j!= parent[j]) j = parent[j]; return j; } void union(int i, int j) { int p = find(i); int q = find(j); if (p == q) return; if (size[q] > size[p]) { parent[p] = q; size[q] += size[p]; } else { parent[q] = p; size[p] += size[q]; } }
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» αθνινπζία ελώζεσλ (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάζνο έλσζεο-εύξεζεο 1 2 3 4 5 6 7 8
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» αθνινπζία ελώζεσλ (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάζνο έλσζεο-εύξεζεο 1 3 4 5 6 7 8 2
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» αθνινπζία ελώζεσλ (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάζνο έλσζεο-εύξεζεο 1 4 5 6 7 8 2 3
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» αθνινπζία ελώζεσλ (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάζνο έλσζεο-εύξεζεο 1 4 5 6 7 8 2 3
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» αθνινπζία ελώζεσλ (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάζνο έλσζεο-εύξεζεο 1 4 5 6 7 2 3 8
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» αθνινπζία ελώζεσλ (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάζνο έλσζεο-εύξεζεο 1 4 5 7 2 3 6 8
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» αθνινπζία ελώζεσλ (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάζνο έλσζεο-εύξεζεο 1 4 7 2 3 6 5 8
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» αθνινπζία ελώζεσλ (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάζνο έλσζεο-εύξεζεο 1 4 2 3 6 5 7 8
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» αθνινπζία ελώζεσλ (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάζνο έλσζεο-εύξεζεο 4 1 2 3 6 5 7 8
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» αθνινπζία ελώζεσλ (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάζνο έλσζεο-εύξεζεο 4 1 2 3 6 5 7 8
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» αθνινπζία ελώζεσλ (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάζνο έλσζεο-εύξεζεο 4 1 2 3 6 5 7 8
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» Αο ζεσξήζνπκε ηελ αθνινπζία ένωςη(1,2), ένωςη(3,4), ένωςη(5,6), ένωςη(7,8) 1 3 5 7 2 4 6 8
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» Αο ζεσξήζνπκε ηελ αθνινπζία ένωςη(1,2), ένωςη(3,4), ένωςη(5,6), ένωςη(7,8) ένωςη(1,3), ένωςη(5,7) 1 2 3 4 5 6 7 8
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» Αο ζεσξήζνπκε ηελ αθνινπζία ένωςη(1,2), ένωςη(3,4), ένωςη(5,6), ένωςη(7,8) ένωςη(1,3), ένωςη(5,7) ένωςη(1,5) 1 2 3 4 5 6 7 8
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» Οκνίσο, γηα ένωςη(9,10), ένωςη(11,12), ένωςη(13,14), ένωςη(15,16) ένωςη(9,11), ένωςη(13,15) ένωςη(9,13) 1 9 2 3 5 10 11 13 4 6 7 12 14 15 8 16
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» ένωςη(1,9) 1 2 3 5 9 4 6 7 10 11 13 8 12 14 15 16
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» 1 ν κέγηζηνο αξηζκόο ησλ δεηθηώλ κέρξη ηε ξίδα είλαη 2 3 5 9 4 6 7 10 11 13 8 12 14 15 16
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» Ιδηόηεηα: Γηα αληηθείκελα, ν αιγόξηζκνο ζηαζκηζκέλεο έλσζεο δεκηνπξγεί δέληξα κε ύςνο ην πνιύ
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο» Ιδηόηεηα: Γηα αληηθείκελα, ν αιγόξηζκνο ζηαζκηζκέλεο έλσζεο δεκηνπξγεί δέληξα κε ύςνο ην πνιύ Απόδεημε: Με επαγσγή. Γηα ηζρύεη αθνύ. Έζησ όηη κηα πξάμε έλσζεο ζπλδπάδεη ζύλνια Α θαη Β κε κέγεζνο A B Ο αξηζκόο ησλ δεηθηώλ έσο ηε ξίδα ηνπ δέληξνπ γηα ηα ζηνηρεία ηνπ A είλαη
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο κε ζπκπίεζε δηαδξνκήο» 1 2 3 5 9 εύρεςη(16) 2 3 1 5 9 13 15 16 4 6 7 10 11 13 4 6 7 10 11 14 8 12 14 15 8 12 16
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο κε ζπκπίεζε δηαδξνκήο» Τπνζέηνπκε όηη ηα αληηθείκελα καο είλαη αθέξαηνη αξηζκνί Υξεζηκνπνηνύκε πίλαθεο θαη κεγέζνπο δείθηεο ζε αληηθείκελν ηνπ ζπλόινπ πνπ πεξηέρεη ην k αξηζκόο αληηθεηκέλσλ ηνπ ζπλόινπ κε αληηπξόζσπν k εύρεση(i) : Ξεθηλώληαο από ην i αθνινπζνύκε ηνπο δείθηεο κέρξη λα βξνύκε αληηθείκελν j ηέηνην ώζηε. Θέηνπκε γηα θάζε αληηθείκελν k πνπ ζπλαληήζακε ζηε δηαδξνκή κέρξη ην j. Δπηζηξέθνπκε ηo j. ένωση(i,j) : Δθηεινύκε p=εύρεση(i) θαη q=εύρεση(j). Αλ ην ζύλνιν ηνπ q έρεη πεξηζζόηεξα αληηθείκελα από ην ζύλνιν ηνπ p ζέηνπκε. Γηαθνξεηηθά ζέηνπκε.
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο κε ζπκπίεζε δηαδξνκήο» Υξόλνο ρεηξόηεξεο πεξίπησζεο γηα κία πξάμε εύξεζεο ή έλσζεο = 1 2 3 5 9 4 6 7 10 11 13 ύςνο 8 12 14 15 16
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο κε ζπκπίεζε δηαδξνκήο» Υξόλνο ρεηξόηεξεο πεξίπησζεο γηα κία πξάμε εύξεζεο ή έλσζεο = Αιιά : πλνιηθόο ρξόλνο εθηέιεζεο m πξάμεσλ εύξεζεο-έλσζεο = Μέζνο ρξόλνο εθηέιεζεο γηα κία πξάμε εύξεζεο ή έλσζεο = ζρεδόλ ζηαζεξόο ρξόλνο αλά πξάμε
Αληηζηαζκηζηηθή αλάιπζε αιγνξίζκσλ Γνκή «ζηαζκηζκέλεο έλσζεο κε ζπκπίεζε δηαδξνκήο» Η ζπλάξηεζε Ackerman νξίδεηαη σο εμήο Η ζπλάξηεζε είλαη αληίζηξνθε ηεο απμάλεη κε πάξα πνιύ αξγό ξπζκό! Π.ρ. γηα
Πξνβιήκαηα βειηηζηνπνίεζεο ζε δίθηπα Πνιιά ζεκαληηθά πξνβιήκαηα κπνξνύλ λα κνληεινπνηεζνύλ σο πξνβιήκαηα ζε δίθηπα (γξαθήκαηα). Παξάδεηγκα: Ρνή δηθηύνπ 10/11 10/19 0/2 8/10 0/5 0/7 4/8 2/3 6/6 6/10
Πξνβιήκαηα βειηηζηνπνίεζεο ζε δίθηπα Πνιιά ζεκαληηθά πξνβιήκαηα κπνξνύλ λα κνληεινπνηεζνύλ σο πξνβιήκαηα ζε δίθηπα (γξαθήκαηα). Δπηινγή θνληηλόηεξσλ ή ζπληνκόηεξσλ δηαδξνκώλ Μεηαθνξά πιηθώλ ζε νδηθό δίθηπν ή δεδνκέλσλ ζε ηειεπηθνηλσληαθό δίθηπν Υξνλνπξνγξακκαηηζκόο Καηαλνκή πόξσλ Έιεγρνο ξνήο πξνγξακκάησλ θαη βειηηζηνπνηήζεηο
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Υξεζηκνπνηνύλ ηπραίεο επηινγέο κε ζθνπό λα πεηύρνπλ θαιή απόδνζε ζηε κέζε πεξίπησζε. Παξάδεηγκα : Σαμηλόκεζε quicksort Υξεζηκνπνηεί ηελ ηερληθή ηνπ «δηαίξεη θαη βαζίιεπε». Σα ζηνηρεία ηνπ πίλαθα αλαδηαηάζζνληαη ώζηε γηα θάπνην i λα ηζρύνπλ ην a[i] είλαη ζηελ ηειηθή ηνπ ζέζε a[j] a[i] γηα j=l,l+1,,i-1 a[j] a[i] γηα j=i+1,i+1,,r ρξόλνο ρεηξόηεξεο πεξίπησζεο αλακελόκελνο ρξόλνο Η ίδηα δηαδηθαζία ρξεζηκνπνηείηαη γηα ηελ αξηζηεξή θαη ηε δεμηά ππναθνινπζία. l r l i r
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort 12 2 43 15 50 20 88 75 7 15 6 91 32 29 4 11
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort 12 2 43 15 50 20 88 75 7 15 6 91 32 29 4 11 4 2 6 7 11 20 88 75 15 15 43 91 32 29 12 50
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort 12 2 43 15 50 20 88 75 7 15 6 91 32 29 4 11 4 2 6 7 11 20 88 75 15 15 43 91 32 29 12 50
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort 12 2 43 15 50 20 88 75 7 15 6 91 32 29 4 11 4 2 6 7 11 20 88 75 15 15 43 91 32 29 12 50
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort 12 2 43 15 50 20 88 75 7 15 6 91 32 29 4 11 4 2 6 7 11 20 88 75 15 15 43 91 32 29 12 50 4 2 6 7 20 12 29 15 15 43 32 50 75 88 91
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort 12 2 43 15 50 20 88 75 7 15 6 91 32 29 4 11 4 2 6 7 11 20 88 75 15 15 43 91 32 29 12 50 4 2 6 7 20 12 29 15 15 43 32 50 75 88 91
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort 12 2 43 15 50 20 88 75 7 15 6 91 32 29 4 11 4 2 6 7 11 20 88 75 15 15 43 91 32 29 12 50 4 2 6 7 20 12 29 15 15 43 32 50 75 88 91 4 2 6 20 12 29 15 15 32 43 75 88 91
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort 12 2 43 15 50 20 88 75 7 15 6 91 32 29 4 11 4 2 6 7 11 20 88 75 15 15 43 91 32 29 12 50 4 2 6 7 20 12 29 15 15 43 32 50 75 88 91 4 2 6 20 12 29 15 15 32 43 75 88 91
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort 12 2 43 15 50 20 88 75 7 15 6 91 32 29 4 11 4 2 6 7 11 20 88 75 15 15 43 91 32 29 12 50 4 2 6 7 20 12 29 15 15 43 32 50 75 88 91 4 2 6 20 12 29 15 15 32 43 75 88 91 2 4 15 12 15 20 29 75 88
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort 12 2 43 15 50 20 88 75 7 15 6 91 32 29 4 11 4 2 6 7 11 20 88 75 15 15 43 91 32 29 12 50 4 2 6 7 20 12 29 15 15 43 32 50 75 88 91 4 2 6 20 12 29 15 15 32 43 75 88 91 2 4 15 12 15 20 29 75 88
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort 12 2 43 15 50 20 88 75 7 15 6 91 32 29 4 11 4 2 6 7 11 20 88 75 15 15 43 91 32 29 12 50 4 2 6 7 20 12 29 15 15 43 32 50 75 88 91 4 2 6 20 12 29 15 15 32 43 75 88 91 2 4 15 12 15 20 29 75 88
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort 12 2 43 15 50 20 88 75 7 15 6 91 32 29 4 11 4 2 6 7 11 20 88 75 15 15 43 91 32 29 12 50 4 2 6 7 20 12 29 15 15 43 32 50 75 88 91 4 2 6 20 12 29 15 15 32 43 75 88 91 2 4 15 12 15 20 29 75 88 12 15 20 29
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort 12 2 43 15 50 20 88 75 7 15 6 91 32 29 4 11 11 7 50 6 32 43 91 2 4 75 88 12 15 20 29
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort Υεηξόηεξε πεξίπησζε: Κάζε θιήζε αθαηξεί κόλν έλα ζηνηρείν. Υξόλνο εθηέιεζεο:
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort Καιύηεξε πεξίπησζε: Η αθνινπζία ρσξίδεηαη ζηε κέζε. Υξόλνο εθηέιεζεο:
Τπραηνπνηεκέλνη αιγόξηζκνη (randomized algorithms) Σαμηλόκεζε quicksort ρξόλνο επηηπγράλεηαη θαηά κέζν όξν όηαλ επηιέγνπκε έλα ηπραίν ζηνηρείν ηνπ πίλαθα σο ζηνηρείν δηακέξηζεο.
Άκεζνη αιγόξηζκνη (online algorithms) Δίλαη αιγόξηζκνη πνπ πξαγκαηνπνηνύλ ππνινγηζκνύο ρσξίο λα μέξνπλ νιόθιεξε ηελ αθνινπζία εηζόδνπ εθ ησλ πξόηεξσλ.
Άκεζνη αιγόξηζκνη (online algorithms) Δίλαη αιγόξηζκνη πνπ πξαγκαηνπνηνύλ ππνινγηζκνύο ρσξίο λα μέξνπλ νιόθιεξε ηελ αθνινπζία εηζόδνπ εθ ησλ πξόηεξσλ. Π.ρ., αιγόξηζκνη δηαρείξηζεο θύξηαο κλήκεο Έρνπκε Μ ζειίδεο απνζεθεπκέλεο ζην δίζθν θαη ε θύξηα κλήκε καο έρεη ρσξεηηθόηεηα Ν ζειίδσλ, όπνπ Μ>Ν. Πσο απνθαζίδνπκε πνίεο ζειίδεο απνζεθεύνληαη ζηελ θύξηα κλήκε; Πσο νξίδνπκε ηελ απόδνζε ελόο αιγόξηζκνπ;
Άκεζνη αιγόξηζκνη (online algorithms) Δίλαη αιγόξηζκνη πνπ πξαγκαηνπνηνύλ ππνινγηζκνύο ρσξίο λα μέξνπλ νιόθιεξε ηελ αθνινπζία εηζόδνπ εθ ησλ πξόηεξσλ. Λόγνο Αληαγσληζηηθόηεηαο πγθξίλνπκε ηελ απόδνζε ηνπ online αιγόξηζκνπ κε ηελ απόδνζε ηνπ βέιηηζηνπ offline αιγόξηζκνπ. Ο βέιηηζηνο offline αιγόξηζκνο γλσξίδεη νιόθιεξε ηελ αθνινπζία εηζόδνπ θαη επηηπγράλεη ηελ θαιύηεξε δπλαηή απόδνζε.
Αξηζκνζεσξεηηθνί αιγόξηζκνη (number theoretic algorithms) Αιγόξηζκνο ηνπ Δπθιείδε γηα ππνινγηζκό ηνπ κέγηζηνπ θνηλνύ δηαηξέηε Βαζίδεηαη ζηνλ θαλόλα όπνπ είλαη ζεηηθνί αθέξαηνη int Euclid(int x, int y) { if y==0 return x; return Euclid(y, x%y); } Δπθιείδεο (300 πυ)
Αξηζκνζεσξεηηθνί αιγόξηζκνη (number theoretic algorithms) Αιγόξηζκνο ηνπ Δπθιείδε γηα ππνινγηζκό ηνπ κέγηζηνπ θνηλνύ δηαηξέηε Βαζίδεηαη ζηνλ θαλόλα όπνπ είλαη ζεηηθνί αθέξαηνη int Euclid(int x, int y) { if y==0 return x; return Euclid(y, x%y); } Παξάδεηγκα Euclid (128,40)= Euclid (40,8)= Euclid (8,0)= 8 Δπθιείδεο (300 πυ)
Αξηζκνζεσξεηηθνί αιγόξηζκνη (number theoretic algorithms) Αιγόξηζκνο ηνπ Δπθιείδε γηα ππνινγηζκό ηνπ κέγηζηνπ θνηλνύ δηαηξέηε Βαζίδεηαη ζηνλ θαλόλα όπνπ είλαη ζεηηθνί αθέξαηνη int Euclid(int x, int y) { if y==0 return x; return Euclid(y, x%y); } Ιδηόηεηα: Αλ ηόηε
Αξηζκνζεσξεηηθνί αιγόξηζκνη (number theoretic algorithms) Αιγόξηζκνο ηνπ Δπθιείδε γηα ππνινγηζκό ηνπ κέγηζηνπ θνηλνύ δηαηξέηε Βαζίδεηαη ζηνλ θαλόλα όπνπ είλαη ζεηηθνί αθέξαηνη int Euclid(int x, int y) { if y==0 return x; return Euclid(y, x%y); } Ιδηόηεηα: Αλ 0 x mod y 0 y ηόηε x/2 x/2 y x x x mod y
Αξηζκνζεσξεηηθνί αιγόξηζκνη (number theoretic algorithms) Αιγόξηζκνο ηνπ Δπθιείδε γηα ππνινγηζκό ηνπ κέγηζηνπ θνηλνύ δηαηξέηε Βαζίδεηαη ζηνλ θαλόλα όπνπ είλαη ζεηηθνί αθέξαηνη int Euclid(int x, int y) { if y==0 return x; return Euclid(y, x%y); } Ιδηόηεηα: Αλ Απόδεημε: ηόηε
Αξηζκνζεσξεηηθνί αιγόξηζκνη (number theoretic algorithms) Αιγόξηζκνο ηνπ Δπθιείδε γηα ππνινγηζκό ηνπ κέγηζηνπ θνηλνύ δηαηξέηε Βαζίδεηαη ζηνλ θαλόλα όπνπ είλαη ζεηηθνί αθέξαηνη int Euclid(int x, int y) { if y==0 return x; return Euclid(y, x%y); } Ιδηόηεηα: Αλ ρξεηάδνληαη γηα αξηζκνύο ησλ ηόηε αλαδξνκηθέο θιήζεηο bits
Αξηζκνζεσξεηηθνί αιγόξηζκνη (number theoretic algorithms) Αξηζκεηηθή modulo
Αξηζκνζεσξεηηθνί αιγόξηζκνη (number theoretic algorithms) Έιεγρνο Πξώηεπζεο Πσο κπνξνύκε λα ειέγμνπκε απνδνηηθά εάλ έλαο αθέξαηνο είλαη πξώηνο; Σπλάξηεζε θαηαλνκήο πξώησλ αξηζκώλ πιήζνο πξώησλ αξηζκώλ Θεώξεκα ησλ πξώησλ αξηζκώλ Έλαο ηπραία επηιεγκέλνο αξηζκόο έρεη πηζαλόηεηα λα είλαη πξώηνο Απιντθόο έιεγρνο πξώηεπζεο : Δπηρεηξνύκε λα δηαηξέζνπκε ην αθέξαην κε θάζε
Αξηζκνζεσξεηηθνί αιγόξηζκνη (number theoretic algorithms) Έιεγρνο Ψεπδνπξώηεπζεο Δάλ ν είλαη ζύλζεηνο αιιά ηθαλνπνηεί ηελ ζρέζε ηόηε νλνκάδεηαη ςεπδνπξώηνο σο πξνο βάζε Δάλ γηα θάζε είλαη πξώηνο Γξήγνξνο έιεγρνο : Δπηιέγνπκε θαη ειέγρνπκε αλ ππάξρεη (κηθξή) πηζαλόηεηα ζθάικαηνο Αλ δελ ηζρύεη δειώλνπκε όηη Γηαθνξεηηθά δειώλνπκε όηη ζύλζεηνο πξώηνο
Γνκέο δεδνκέλσλ θαη κνληέια κλήκεο Πνιιέο εθαξκνγέο θαινύληαη λα δηαρεηξηζηνύλ έλα κεγάιν όγθν δεδνκέλσλ πνπ δε ρσξά ζηελ θύξηα κλήκε ελόο ππνινγηζηή. ε εθαξκνγέο απηνύ ηνπ ηύπνπ ρξεηαδόκαζηε δνκέο δεδνκέλσλ πνπ λα δηαρεηξίδνληαη απνηειεζκαηηθά ηελ επηθνηλσλία κεηαμύ ηεο (γξήγνξεο) εζσηεξηθήο κλήκεο θαη ηεο (αξγήο) εμσηεξηθήο κλήκεο.
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη Πνιπσλπκηθόο ρξόλνο όπνπ ζηαζεξά Κιάζε πνιππινθόηεηαο : πεξηιακβάλεη ηα πξνβιήκαηα πνπ επηδέρνληαη ιύζε ζε πνιπσλπκηθό ρξόλν
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη Τπάξρνπλ πξνβιήκαηα πνπ δελ επηδέρνληαη ιύζε ζε πνιπσλπκηθό ρξόλν θαη επνκέλσο δελ αλήθνπλ ζηελ θιάζε Τπάξρεη κία θαηεγνξία ζεκαληηθώλ πξνβιεκάησλ γηα ηα νπνία δελ γλσξίδνπκε αλ επηδέρνληαη ιύζε ζε πνιπσλπκηθό ρξόλν Τπάξρνπλ πξνβιήκαηα πνπ είλαη άιπηα (δελ επηιύνληαη κε θαλέλα αιγόξηζκν π.ρ. ην HALTING πξόβιεκα)
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη Τπάξρνπλ πξνβιήκαηα πνπ δελ επηδέρνληαη ιύζε ζε πνιπσλπκηθό ρξόλν θαη επνκέλσο δελ αλήθνπλ ζηελ θιάζε Τπάξρεη κία θαηεγνξία ζεκαληηθώλ πξνβιεκάησλ γηα ηα νπνία δελ γλσξίδνπκε αλ επηδέρνληαη ιύζε ζε πνιπσλπκηθό ρξόλν Τπάξρνπλ πξνβιήκαηα πνπ είλαη άιπηα (δελ επηιύνληαη κε θαλέλα αιγόξηζκν π.ρ. ην HALTING πξόβιεκα)
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη Μνλνπάηη Hamilton Μαο δίλεηαη γξάθεκα θάζε θόκβν αθξηβώο κία θνξά; : ππάξρεη κνλνπάηη πνπ επηζθέπηεηαη
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη Μνλνπάηη Hamilton Μαο δίλεηαη γξάθεκα θάζε θόκβν αθξηβώο κία θνξά; : ππάξρεη κνλνπάηη πνπ επηζθέπηεηαη
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη Μνλνπάηη Hamilton Μαο δίλεηαη γξάθεκα θάζε θόκβν αθξηβώο κία θνξά; : ππάξρεη κνλνπάηη πνπ επηζθέπηεηαη knight s tour http://en.wikipedia.org/wiki/knight's_tour
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη Βαξύηαην κνλνπάηη Μαο δίλεηαη γξάθεκα κε ζπλάξηεζε βάξνπο, αθεηεξηαθόο θόκβνο, ηεξκαηηθόο θόκβνο θαη παξάκεηξνο : ππάξρεη άθπθιν κνλνπάηη από ην ζην κε βάξνο ; 6 3 4 1 1 2 7 2 5 3 6 4
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη Βαξύηαην κνλνπάηη Μαο δίλεηαη γξάθεκα κε ζπλάξηεζε βάξνπο, αθεηεξηαθόο θόκβνο, ηεξκαηηθόο θόκβνο θαη παξάκεηξνο : ππάξρεη άθπθιν κνλνπάηη από ην ζην κε βάξνο ; 6 3 4 1 1 2 7 2 5 3 6 4
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη Τν πξόβιεκα ηνπ ζαθηδίνπ (knapsack) Μαο δίλνληαη αληηθείκελα, όπνπ ην αληηθείκελν έρεη βάξνο θαη αμία, θαζώο θαη δύν παξάκεηξνη θαη : κπνξνύκε λα επηιέμνπκε αληηθείκελα κε ζπλνιηθό βάξνο ζπλνιηθή αμία ; θαη
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη Σα πξνβιήκαηα απηά έρνπλ κία ραξαθηεξηζηηθή ηδηόηεηα: Τπάξρεη δξαζηηθόο ηξόπνο λα επαιεζεύζνπκε κία ιύζε ηνπο
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη Σα πξνβιήκαηα απηά έρνπλ κία ραξαθηεξηζηηθή ηδηόηεηα: Τπάξρεη δξαζηηθόο ηξόπνο λα επαιεζεύζνπκε κία ιύζε ηνπο Αιγόξηζκνο επαιήζεπζεο γηα έλα πξόβιεκα : δέρεηαη ζηελ είζνδν ζηηγκηόηππν θαη ππνςήθηα ιύζε θαη απνθαζίδεη εάλ ε ιύλεη ζσζηά ην
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη Σα πξνβιήκαηα απηά έρνπλ κία ραξαθηεξηζηηθή ηδηόηεηα: Τπάξρεη δξαζηηθόο ηξόπνο λα επαιεζεύζνπκε κία ιύζε ηνπο Αιγόξηζκνο επαιήζεπζεο γηα έλα πξόβιεκα : δέρεηαη ζηελ είζνδν ζηηγκηόηππν θαη ππνςήθηα ιύζε θαη απνθαζίδεη εάλ ε ιύλεη ζσζηά ην Ο αιγόξηζκνο επαιήζεπζεο ρξόλν σο πξνο ην κέγεζνο ηνπ είλαη δξαζηηθόο όηαλ ηξέρεη ζε πνιπσλπκηθό
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη Κιάζε πνιππινθόηεηαο : πεξηιακβάλεη ηα πξνβιήκαηα πνπ έρνπλ πνιπσλπκηθό αιγόξηζκν επίιπζεο Κιάζε πνιππινθόηεηαο : πεξηιακβάλεη ηα πξνβιήκαηα πνπ έρνπλ πνιπσλπκηθό αιγόξηζκν επαιήζεπζεο
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη Κιάζε πνιππινθόηεηαο : πεξηιακβάλεη ηα πξνβιήκαηα πνπ έρνπλ πνιπσλπκηθό αιγόξηζκν επίιπζεο Πξνθαλώο. Δίλαη όκσο Κιάζε πνιππινθόηεηαο : πεξηιακβάλεη ηα πξνβιήκαηα πνπ έρνπλ πνιπσλπκηθό αιγόξηζκν επαιήζεπζεο
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη ε πνιιέο πεξηπηώζεηο καο ηθαλνπνηεί κηα πξνζεγγηζηηθή ιύζε Έλαο πξνζεγγηζηηθόο αιγόξηζκνο ππνινγίδεη ζε πνιπσλπκηθό ρξόλν κία ιύζε ε νπνία είλαη εγγπεκέλα «θνληά» ζηε βέιηηζηε ιύζε
NP-δπζρεξή πξνβιήκαηα θαη πξνζεγγηζηηθνί αιγόξηζκνη ε πνιιέο πεξηπηώζεηο καο ηθαλνπνηεί κηα πξνζεγγηζηηθή ιύζε Έλαο πξνζεγγηζηηθόο αιγόξηζκνο ππνινγίδεη ζε πνιπσλπκηθό ρξόλν κία ιύζε ε νπνία είλαη εγγπεκέλα «θνληά» ζηε βέιηηζηε ιύζε Έλα από ηα βαζηθά εξγαιεία Γξακκηθόο πξνγξακκαηηζκόο Μνληεινπνίεζε πξνβιεκάησλ βειηηζηνπνίεζεο κε γξακκηθέο αληζόηεηεο θαη κεγηζηνπνίεζε γξακκηθήο ζπλάξηεζεο
Αξιολόγηζη εη αζθήζεσλ - εξγαζίεο. Γίλνπλ ην 40% ηνπ ηειηθνύ βαζκνύ. Σειηθή γξαπηή εμέηαζε. Γίλεη ην ππόινηπν 60% ηνπ ηειηθνύ βαζκνύ. Πξέπεη λα έρεηε 5 θαη ζηα δύν. Πιεξνθνξίεο θαη αλαθνηλώζεηο κέζσ ηεο ηζηνζειίδαο ηνπ καζήκαηνο
Βιβλία