Εισαγωγή στην Επιστήμη των Υπολογιστών 4ο εξάμηνο ΣHMΜY 4η ενόηηηα: Αιγνξηζκηθέο ηερληθέο, αξηζκεηηθνί ππνινγηζκνί Επιμέλεια διαθανειών: Σηάζεο Εάρνο, Άξεο Παγνπξηδήο http://www.corelab.ece.ntua.gr/courses/introcs 1
Αλγόριθμος Webster s 50 ρξόληα πξηλ: αλύπαξθηνο όξνο Oxford s, 1971: «erroneous refashioning of algorism: calculation with Arabic numerals» Abu Jaffar Mohammed Ibn Musa Al-Khowarizmi,, 9 νο αη. κ.φ. Παξαδείγκαηα: Δπθιείδεηνο αιγόξηζκνο (Δπθιείδεο, 3 νο αη. π.φ.) γηα εύξεζε ΜΚΓ Αξηζκνί Fibonacci (Leonardo Pisano Filius Bonacci, 13 νο αη. κ.φ.) Τξίγσλν Pascal (Yang Hui, 13 νο αη. κ.φ.) 2
Αλγόριθμος (συν.) Πξσηαξρηθή έλλνηα. Μέζνδνο επίιπζεο πξνβιήκαηνο δνζκέλε σο πεπεξαζκέλν ζύλνιν θαλόλσλ (ελεξγεηώλ, δηεξγαζηώλ) πνπ επελεξγνύλ ζε δεδνκέλα (data). Πεπεξαζκέλε εθηέιεζε (finiteness). Κάζε θαλόλαο νξίδεηαη επαθξηβώο θαη ε αληίζηνηρε δηεξγαζία είλαη ζπγθεθξηκέλε (definiteness). Γέρεηαη κεδέλ ή πεξηζζόηεξα κεγέζε εηζόδνπ (input). Γίλεη ηνπιάρηζηνλ έλα κέγεζνο σο απνηέιεζκα (output). Μεραληζηηθά απνηειεζκαηηθόο, εθηέιεζε κε κνιύβη θαη ραξηί (effectiveness). 3
Η ιδέα του Ευκλείδη για εύρεση ΜΚΔ δύο φυσικών αριθμών if a>b then GCD(a,b):= GCD(a mod b, b) else GCD(a,b):= GCD(a, b mod a) // a mod b = ην ππόινηπν ηεο δηαίξεζεο a div b Ο Εςκλείδειορ αλγόπιθμορ είναι ο καλύηεπορ γνυζηόρ αλγόπιθμορ για ΜΚΔ! Αλνηρηό εξώηεκα: είλαη βέιηηζηνο; 4
Παράδειγμα εκτέλεσης του Ευκλείδειου αλγόριθμου ΜΚΓ ησλ 172 θαη 54 10 54 10 4 2 4 2 0 ΜΚΓ = 2 5
Αριθμοί Fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, F n = F n-1 + F n-2 Πξόβιεκα: δίλεηαη n, ππνιόγηζε ηνλ F n Αλαδξνκή (recursion), επαλάιεςε (iteration), Πόζν γξήγνξα κπνξεί λα ππνινγηζηεί ν F n ; O(1.618 n ), O(n), O(log n) 6
Τρίγωνο Pascal (Yang Hui) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 Γησλπκηθνί ζπληειεζηέο / ζπλδπαζκνί: (a+b) 4 = a 4 + 4a 3 b + 6a 2 b 2 + 4ab 3 + b 4 7
Αλγοριθμικές τεχνικές Δπαλάιεςε (Iteration) Αλαδξνκή (Recursion) Δπαγσγή (Induction) 8
Πύργοι Ανόι (Hanoi Towers) πεγή: wikipedia 9
Πύργοι Ανόι (Hanoi Towers) πεγή: wikipedia 10
Πύργοι Ανόι (Hanoi Towers): αναδρομή 11
Πύργοι Ανόι (Hanoi Towers): επανάληψη Δπαλάιαβε (κέρξη λα επηηεπρζεί ε κεηαθίλεζε): Μεηαθίλεζε θαηά ηε ζεηηθή θνξά ηνλ κηθξόηεξν δίζθν Κάλε ηελ κνλαδηθή επηηξεπηή θίλεζε πνπ δελ αθνξά ηνλ κηθξόηεξν δίζθν 12
Treesort με χρήση Binary Search Tree 13
Δίκτυα Ταξινόμησης (Sorting Networks) Σπγθξηηήο Γίθηπν ηαμηλόκεζεο 4 εηζόδσλ 14
Four Color Theorem (1852-1977) Πόζα ρξώκαηα απαηηνύληαη γηα ηνλ ρξσκαηηζκό όισλ ησλ ρσξώλ, ώζηε ρώξεο πνπ ζπλνξεύνπλ (κε γξακκή γηα ζύλνξν) λα έρνπλ δηαθνξεηηθό ρξώκα; 15
Four Color Theorem (1852-1977) Πόζα ρξώκαηα απαηηνύληαη γηα ηνλ ρξσκαηηζκό όισλ ησλ ρσξώλ, ώζηε ρώξεο πνπ ζπλνξεύνπλ (κε γξακκή γηα ζύλνξν) λα έρνπλ δηαθνξεηηθό ρξώκα; 16
Four Color Theorem (1852-1977) Πόζα ρξώκαηα απαηηνύληαη γηα ηνλ ρξσκαηηζκό όισλ ησλ ρσξώλ, ώζηε ρώξεο πνπ ζπλνξεύνπλ (κε γξακκή γηα ζύλνξν) λα έρνπλ δηαθνξεηηθό ρξώκα; Appel - Haken (απόδεημε κε πξόγξακκα!) 17
Μαθηματικοί συμβολισμοί (i) 18
Μαθηματικοί συμβολισμοί (ii) 19
Μαθηματικοί συμβολισμοί (iii) 20
Μαθηματικοί συμβολισμοί: ιδιότητες Σπρλά γξάθνπκε (θαηαρξεζηηθά) g(n)=o(f(n)) αληί γηα g(n) Є O(f(n)) Θ(f) = O(f) Ω(f) p(n) = Θ(n k ), γηα θάζε πνιπώλπκν p Ο(poly) = U O(n k ) (γηα όια ηα k Є N) 21
Μαθηματικοί συμβολισμοί: ιδιότητες log*n: πόζεο θνξέο πξέπεη λα ινγαξηζκήζνπκε ην n γηα λα θηάζνπκε θάησ από ην 1 (αληίζηξνθε ππεξεθζεηηθήο) A: Ackermann. α: αληίζηξνθε ηεο Α. 22
Μαθηματικοί συμβολισμοί: ιδιότητες Θεώρημα. log(n!) = Θ(n logn) Απόδειξη: αζςμπηυηικά ηζρύεη (n/2) n/2 < n! < n n => 1/2 n (logn - 1) < log(n!) < n logn => 1/3 n logn < log(n!) < n logn 23
Πολλαπλασιασμός Ακεραίων 24
Πολυπλοκότητα Πολλαπλασιασμού 25
Απόδειξη: Τ(n) + cn T(n/2) T(n/2) T(n/2) T(n/2) + 4 c(n/2) Φξνλ. πνι/ηα Ύςνο δέλδξνπ T(n/4) T(n/4).......................................................... T(2).......... + 16 c(n/4)... + 4 (k-1) c(n/2 (k-1) ) <(4/2) k cn 2 (logn+1) cn = O(n 2 ).............. T(1) T(1).... 4 k θύιια, ρξνληθή πνιππι/ηα α. 4 k = O(n 2 ) Σςνολικά: O(n 2 ) 26
Βελτιωμένος Πολλαπλασιασμός (Gauss-Karatsuba) 27
Πολυπλοκότητα Βελτίωσης 28
Απόδειξη: Τ(n) + cn T(n/2) T(n/2) T(n/2) T(n/2) + 3 c(n/2) Φξνλ. πνι/ηα Ύςνο δέλδξνπ T(n/4) T(n/4).......................................................... T(2)......... + 9 c(n/4) <2. (3/2) k cn.. 6. (3/2) (logn) cn + 3 (k-1) c(n/2 (k-1) ). = O(n log3 ).............. T(1) T(1).... 3 k θύιια, ρξνληθή πνιππι/ηα α. 3 k = O(3 logn ) = O(n log3 ) Σςνολικά: O(n log3 ) 29
Master Theorem (απλή μορφή) Αλ T(n) = at(n/b) + O(n), γηα ζεηηθνύο αθέξαηνπο a, b θαη Τ(1) = O(1) ηόηε: T(n) = O(n), O(n logn), O(n log ba ), αλ a<b αλ a=b αλ a>b 30
Ύςνο δέλδξνπ Απόδειξη: Τ(n) T(n/b) T(n/b) T(n/b) T(n/b 2 ) T(n/b 2 ).......................................................... a... a.......................... T(1) T(1).... + cn + a c(n/b) + a 2 c(n/b 2 ). + a (k-1) c(n/b (k-1) ) =.. Φξνλ. πνι/ηα cn Σ 0 k (a/b) i O(n), αλ a<b O(n logn), αλ a=b O(n log ba ), αλ a>b a k θύιια, ρξνληθή πνιππι/ηα c. a k = O(a log bn ) = O(n log ba ) 31
Master Theorem (γενική μορφή) Αλ T(n) = at(n/b) + O(n d ), γηα ζεηηθνύο αθέξαηνπο a, b, d θαη Τ(1) = O(1) ηόηε: T(n) = O(n d ), O(n d logn), O(n log ba ), αλ a<b d αλ a=b d αλ a>b d 32
Master Theorem: εφαρμογή Αλ T(n) = at(n/b) + O(n d ), γηα ζεηηθνύο αθέξαηνπο a, b, d θαη Τ(1) = O(1) ηόηε: O(n d ), αλ a<b d T(n) = O(n d logn), O(n log ba ), αλ a=b d αλ a>b d Matrix Multiplication 'Standard' divide-and-conquer: T(n) = 8T(n/2) + O(n 2 ) => T(n) = O(n 3 ) Strassen's algorithm: T(n) = 7T(n/2) + O(n 2 ) => T(n) = O(n log7 ) 33
Εύρεση Μέγιστου Κοινού Διαιρέτη (gcd) Γελ είλαη ινγηθό λα αλάγεηαη ζην πξόβιεκα εύξεζεο πξώησλ παξαγόλησλ γηαηί απηό δελ ιύλεηαη απνδνηηθά. Απιόο αιγόξηζκνο: O(min(α,b)) Αιγόξηζκνο κε αθαηξέζεηο: O(max(α,b)) Αιγόξηζκνο ηνπ Δπθιείδε: O(log(α+b)) 34
Εύρεση Μέγιστου Κοινού Διαιρέτη (gcd): υλοποίηση με αναδρομή Αιγόξηζκνο κε αθαηξέζεηο: O(max(α,b)) if a=b then GCD(a,b):=a else if a>b then GCD(a,b):= GCD(a-b, b) else GCD(a,b):= GCD(a, b-a) Αιγόξηζκνο ηνπ Δπθιείδε: O(log(α+b)) if b=0 then GCD(a,b):= a else GCD(a,b):= GCD(b, a mod b) 35
Πολυπλοκότητα Ευκλείδειου Αλγορίθμου O(log max(a,b)): ζε θάζε 2 επαλαιήςεηο ν κεγαιύηεξνο αξηζκόο ππνδηπιαζηάδεηαη (γηαηί;) Ω(log max(a,b)): γηα δεύγε δηαδνρηθώλ αξηζκώλ Fibonacci F k-1, F k, ρξεηάδεηαη k επαλαιήςεηο, θαη k log F k, αθνύ F k θ k / 5, θ = (1+ 5)/2 (θ ε σπςζή ηομή). Άξα ε πνιππινθόηεηα ηνπ Δπθιείδεηνπ είλαη Θ(log max(a,b)) = Θ(log (a+b)) 36
Επεκτεταμένος Ευκλείδειος Αλγόριθμος Δθθξάδεη ηνλ gcd(a,b) ζαλ γξακκηθό ζπλδπαζκό ησλ a θαη b Δπηηξέπεη ηελ εύξεζε πνιιαπιαζηαζηηθνύ αληηζηξόθνπ ζηελ αξηζκεηηθή modulo n: αλ gcd(a,n)=1 ηόηε Ext. Euclid δίλεη κ,λ: κa+λn=1 Άζθεζε: ζσεδιάζηε και ςλοποιήζηε ηον επεκηεηαμένο Εςκλείδειο αλγόπιθμο 37
Ύψωση σε δύναμη power(a, n) result := 1; for i := 1 to n do result := result*a; return result Πνιππινθόηεηα: O(n) εθζεηηθή! (γηαηί;) 38
... με επαναλαμβανόμενο τετραγωνισμό (Gauss) fastpower(a, n) result := 1; while n>0 do if odd(n) then result:=result*a; n := n div 2; a := a*a return result Ηδέα: a 13 = a 1. 2 3 +1. 2 2 +0. 2 1 +1. 2 0 Πνιππινθόηεηα: O(log n) - πνιπσλπκηθή 39
Αριθμοί Fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,... F 0 = 0, F 1 = 1 F n = F n-1 + F n-2, n >=2 Πξόβιεκα: Γίλεηαη n, λα ππνινγηζηεί ην F n Πόζν γξήγνξν κπνξεί λα είλαη ην πξόγξακκά καο; 40
Αριθμοί Fibonacci αναδρομικός αλγόριθμος Fib1 (n) if (n<2) then return n else return Fib1(n-1)+Fib1(n-2) Πνιππινθόηεηα: T(n) = T(n-1) + T(n-2) + c, δει. ε T(n) νξίδεηαη όπσο ε F(n) (ζπλ κηα ζηαζεξά), νπόηε: Τ(n) > F(n) = Ω(1.618 n ) 41
Αριθμοί Fibonacci καλύτερος αλγόριθμος Fib2(n) a:=0; b:=1; for i:=2 to n do c:=b; b:=a+b; a:=c; return b Πνιππινθόηεηα: O(n) 42
Αριθμοί Fibonacci ακόμα καλύτερος αλγόριθμος Μπνξνύκε λα γξάςνπκε ηνλ ππνινγηζκό ζε κνξθή πηλάθσλ: Από απηό ζπκπεξαίλνπκε: Καη ν αξηζκόο ησλ απιθμηηικών ππάξευν κεηώλεηαη ζε O(log n). 43
Χρόνος εκτέλεσης αλγορίθμων Θεσξήζηε 4 πξνγξάκκαηα κε αξηζκό βεκάησλ O(2 n ), O(n 2 ), O(n), θαη O(logn) πνπ ην θαζέλα ρξεηάδεηαη 1 δεπηεξόιεπην γηα λα ππνινγίζεη ην F(100). Πόζα δεπηεξόιεπηα ζα ρξεηαζηνύλ γηα λα ππνινγίζνπλ ην F(n); F(100) F(101) F(110) F(200) c. 2 n c. n 2 c. n c. logn 1 1 1 1 2 1.02 1.01 1.002 1024 1.21 1.1 1.02?????? 4 2 1.15 44
Πρώτοι αριθμοί και κρυπτογραφία Υπνινγηζηηθά πξνβιήκαηα ζεκαληηθά γηα θξππηνγξαθία: Primality testing: Γίλεηαη αθέξαηνο n. Δίλαη πξώηνο; Σρεηηθά εύθνιν. Αλήθεη ζην P όπσο έδεημαλ ζρεηηθά πξόζθαηα (2002) πξνπηπρηαθνί Ηλδνί θνηηεηέο. Factoring (παξαγνληνπνίεζε): Γίλεηαη αθέξαηνο n. Να βξεζνύλ νη πξώηνη παξάγνληεο ηνπ. Γελ μέξνπκε αλ είλαη εύθνιν ή δύζθνιν. Πιζηεύοςμε όηη είλαη ππνινγηζηηθά δύζθνιν (όηη δελ αλήθεη ζην P), αιιά όρη ηόζν δύζθνιν όζν ηα NP-complete πξνβιήκαηα. Γηα θβαληηθνύο ππνινγηζηέο (πος δεν έσοςμε ακόμα καηαθέπει να καηαζκεςάζοςμε) είλαη επεπίιπην. 45
Κρυπτογραφία δημοσίου κλειδιού Σπλαξηήζεηο κνλήο θαηεύζπλζεο (one-way functions): εύκολο να ςπολογιζηούν δύζκολο να ανηιζηπαθούν Κξππηνγξαθία δεκνζίνπ θιεηδηνύ (καηάπγηζε ηην ανάγκη ανηαλλαγήρ κλειδιών!): ζηεξίδεηαη ζηελ ύπαξμε ηέηνησλ ζπλαξηήζεσλ. Κξππηνζύζηεκα RSA [Rivest-Shamir-Adleman, 1977] ζπλάξηεζε θξππηνγξάθεζεο: c = m e mod n Αζθάιεηα RSA: δελ ππάξρεη (ελπίζοςμε, ρξεηαδόκαζηε απόδεημε!) απνδνηηθόο ηξόπνο ππνινγηζκνύ ηνπ m δεδνκέλσλ ησλ c, e, θαη n, αλ n είλαη ζύλζεηνο (...εκηόρ αν γνυπίζοςμε παπαγονηοποίηζη ηος n) Γειαδή η ζςνάπηηζη κπςπηογπάθηζηρ RSA είναι μονήρ καηεύθςνζηρ (είλαη;) 46
Κρυπτοσύστημα RSA (i) Γηα λα ζηείιεη ε A (Alice) ζηνλ B (Bob) έλα κήλπκα m: O B δηαιέγεη 2 κεγάινπο πξώηνπο αξηζκνύο p θαη q, ππνινγίδεη ην γηλόκελν n = pq, θαη δηαιέγεη επίζεο αθέξαην e ζρεηηθά πξώην κε ην θ(n) = (p-1)(q-1). Ο Β ζηέιλεη ζηελ Α ηα n θαη e (δεκόζην θιεηδί ηνπ Β) H Α ζηέιλεη ζηνλ Β ηελ ηηκή c = m e mod n (θξππηνγξάθεκα). Ο Β ππνινγίδεη m = c d mod n όπνπ d = e -1 (mod θ(n)) <=> de = 1 (mod θ(n)) (ν d είλαη ην ηδησηηθό θιεηδί ηνπ Β) 47
Κρυπτοσύστημα RSA (ii) Οξζόηεηα RSA: c d = m ed = m kθ(n)+1 = m (mod n). Παξάδεηγκα ζπζηήκαηνο RSA: p=11, q=17, n=187, e=21, d=61, m=42, c=9 Ζ αζθάιεηα ηνπ RSA ζηεξίδεηαη ζηελ (εκηιμώμενη, δελ ππάξρεη αθόκε απόδεημε!) ππνινγηζηηθή πνιππινθόηεηα ηεο παξαγνληνπνίεζεο (factoring). Ζ ιεηηνπξγία ηνπ RSA ζηεξίδεηαη ζε αποδοηικούρ αλγόπιθμοςρ γηα: primality testing (Miller-Rabin), ύςσζε ζε δύλακε modulo n (επαλαιακβαλόκελνο ηεηξαγσληζκόο) θαη εύξεζε αληηζηξόθνπ modulo θ(n) (επεθηεηακέλνο Δπθιείδεηνο). 48
Ψηφοφορίες (social choice) Δθινγέο (βνπιεπηηθέο, πξπηαληθέο ;-)) Λήςε απνθάζεσλ ζε εηαηξείεο, νξγαληζκνύο,... Φξήζε ζηνλ παγθόζκην ηζηό: ηζηνζειίδεο "ςεθίδνπλ" ηζηνζειίδεο δείρλνληαο ζε απηέο ρξήζηεο "ςεθίδνπλ" ηζηνζειίδεο αλάινγα κε ηνλ ρξόλν πνπ μνδεύνπλ ζε απηέο Κνηλσληθά δίθηπα (social networks) friends, followers 49
Ψηφοφορίες (social choice) Πιεζώξα εθινγηθώλ ζπζηεκάησλ Τν πιεηνςεθηθό δελ είλαη πάληα δίθαην: 20 24 26 30 z x y w y z x w Ο ληθεηήο ππνζηεξίδεηαη κόλν από ην 30% Δίλαη ηειεπηαία πξνηίκεζε γηα ην 70%! x z y w w z x y 50
Ψηφοφορίες: κι άλλα παράδοξα Καη ην "απόιπην" πιεηνςεθηθό παξνπζηάδεη παξάδνμα: νη x, w πεξλνύλ ζηνλ 2 ν γύξν ν x θεξδίδεη κε 70%, παξ όιν πνπ 74% πξνηηκνύλ ηνλ z από ηνλ x (ν z έθπγε από ηνλ 1 ν γύξν!). 20 24 26 30 z x y w y z x w x z y w w z x y 51
Ψηφοφορίες: υπολογιστικές προκλήσεις Γηθαηόηεξα ζπζηήκαηα κπνξεί λα απαηηνύλ πνιύ κεγάιν ρξόλν ππνινγηζκνύ ηνπ ληθεηή (ππνινγηζηηθά απξόζηην) γηα ην ζύζηεκα ηνπ Dodgson (γλσζηόο θαη σο Lewis Caroll, 19 νο αηώλαο) ην πξόβιεκα είλαη πιήξεο γηα κηα θιάζε πνιππινθόηεηαο επξύηεξε ηεο NP Θέινπκε ν ππνινγηζκόο ηνπ ληθεηή λα είλαη ππνινγηζηηθά πξνζηηόο 52
Ψηφοφορίες: υπολογιστικές προκλήσεις Θεώξεκα Gibbard- Satterthwaite (1973): «Πέπα από κάποιερ ηεηπιμμένερ πεπιπηώζειρ, όλα ηα ζςζηήμαηα τηθοθοπίαρ είναι σειπαγυγήζιμα (εκηόρ αν είναι δικηαηοπικά)!» Θέινπκε ε ρεηξαγώγεζε λα είλαη δύζθνιε (ππνινγηζηηθά απξόζηηε) 53
Μη συνεργατικά παίγνια Παίθηεο (agents: ρξήζηεο, νληόηεηεο ινγηζκηθνύ, ζπζηήκαηα) αληαγσλίδνληαη, ζπλήζσο γηα δηεθδίθεζε πόξσλ Κάζε παίθηεο απνθαζίδεη κόλν ηε δηθή ηνπ ζηξαηεγηθή ζηόρνο: ειαρηζηνπνίεζε αηνκηθνύ θόζηνπο Τν αηνκηθό θόζηνο εμαξηάηαη από ηηο ζηξαηεγηθέο όισλ 54
Μη συνεργατικά παίγνια Ηζνξξνπία Nash: θαλείο δελ βειηηώλεη ην αηνκηθό ηνπ θόζηνο αιιάδνληαο κόλν ηε δηθή ηνπ ζηξαηεγηθή. Nash (1952): απέδεημε όηη πάληα ππάξρεη ηέηνηα ηζνξξνπία (αιιά κπνξεί λα είλαη κεηθηή mixed). Ζ ηζνξξνπία Nash απνηειεί «ιύζε» ηνπ ζπζηήκαηνο: αν οι παίκηερ ζςμπεπιθεπθούν ζηπαηηγικά και λογικά και έσοςν ζηη διάθεζή ηοςρ πλήπη γνώζη και επαπκή σπόνο, ηόηε καηαλήγοςν ζε μία ιζοπποπία Nash. 55
Ισορροπία Nash Γίιεκκα θπιαθηζκέλσλ: ζπιιακβάλνληαη δύν δηαξξήθηεο, ζπλεξγάηεο ζε κεγάιε θινπή. Κξαηνύληαη ζε ρσξηζηά θειηά ρσξίο επηθνηλσλία Οκνινγεί Β Γελ νκνινγεί Β Οκνινγεί Α 5, 5 0, 15 Γελ νκνινγεί Α 15, 0 1, 1 Απνηέιεζκα: ακθόηεξνη νκνινγνύλ! Ηζνξξνπία Nash δελ βειηηζηνπνηεί ζπλνιηθό απνηέιεζκα 56
Ισορροπία Nash: ερωτήματα Τίκεκα αλαξρίαο: πόζν "άζρεκα" κπνξεί λα ζπκπεξηθεξζεί ην ζύζηεκα; Λόγνο ζπλνιηθνύ θόζηνπο ρεηξόηεξεο ηζνξξνπίαο πξνο βέιηηζηε ζπλεξγαηηθή ιύζε [Koutsoupias, Papadimitriou, 1999] Μπνξνύκε λα βξνύκε ηελ "ρεηξόηεξε" ηζνξξνπία; Οπνηαδήπνηε ηζνξξνπία; ζύκθσλα κε ηζρπξέο ελδείμεηο δπζεπίιπην πξόβιεκα: πλήπερ γηα ηελ θιάζε PPAD. [Daskalakis, Goldberg, Papadimitriou, 2005] [Chen, Deng, 2005] «If your laptop can't find it, neither can the market!» - Kamal Jain (Microsoft Research) 57
Linear Programming 58
Επιτυχίες-σταθμοί Θεωρίας Αλγορίθμων και Πολυπλοκότητας Linear Programming [Dantzig - von Neumann, 1947, Khachiyan, 1979, Karmakar, 1984] Fast Fourier Transform [Cooley-Tukey, 1965 (αιιά θαη Gauss, 1805)] NP-πιεξόηεηα [Cook-Karp, 1971-72]: αδπλακία απνδνηηθήο επίιπζεο πνιιώλ ζεκαληηθώλ πξνβιεκάησλ Κξππηνγξαθία δεκνζίνπ θιεηδηνύ [Diffie-Hellman, Rivest-Shamir-Adleman, 1976-77] 59
Επιτυχίες-σταθμοί Θεωρίας Αλγορίθμων και Πολυπλοκότητας Pagerank (Google) [Page-Brin-Motwani-Winograd, 1995-99] Κβαληηθνί ππνινγηζκνί [Shor, 1996]: παξαγνληνπνίεζε ζε πνιπσλπκηθό ρξόλν Θεώξεκα PCP, κε-πξνζεγγηζηκόηεηα [Arora-Feige-Goldwasser-Lund-Lovasz-Motwani-Safra- Sudan-Szegedy, 1992-98] Γπζθνιία ππνινγηζκνύ ηζνξξνπηώλ Nash [Goldberg-Daskalakis-Papadimitriou, Chen-Deng, 2005] 60
Συμπεράσματα Πνιιά ζύγρξνλα ζπζηήκαηα ζηεξίδνληαη ζηελ ηαρύηεηα ππνινγηζκώλ πνπ επηηπγράλεηαη κέζσ απνδνηηθώλ αιγνξίζκσλ. Ζ ππνινγηζηηθή δπζθνιία νξηζκέλσλ πξνβιεκάησλ (π.ρ. factoring) κπνξεί λα είλαη επηζπκεηή (θξππηνγξαθία, εθινγέο). Τα καζεκαηηθά είλαη πάληα επίθαηξα! 61