Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η a (alice) ον b...

Post on 14-Jul-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

2

Αλγόριθμος

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ος αι. μ.Χ.)

3

Αλγόριθμος (συν.)

Πρωταρχική έννοια. Μέθοδος επίλυσης προβλήματος

δοσμένη ως πεπερασμένο σύνολο κανόνων (ενεργειών,

διεργασιών) που επενεργούν σε δεδομένα (data).

Πεπερασμένη εκτέλεση (finiteness).

Κάθε κανόνας ορίζεται επακριβώς και η αντίστοιχη

διεργασία είναι συγκεκριμένη (definiteness).

Δέχεται μηδέν ή περισσότερα μεγέθη εισόδου (input).

Δίνει τουλάχιστον ένα μέγεθος ως αποτέλεσμα (output).

Μηχανιστικά αποτελεσματικός, εκτέλεση με “μολύβι και

χαρτί” (effectiveness).

4

Αλγόριθμος Ευκλείδη

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 )

ΜΚΔ (172 , 54 ) =

ΜΚΔ (10 , 54 ) =

ΜΚΔ (10 , 4 ) =

ΜΚΔ (2 , 4 ) =

ΜΚΔ (2 , 0 ) =

2

5

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 )

Ο Ευκλείδειος αλγόριθμος είναι ο καλύτερος γνωστός

αλγόριθμος για ΜΚΔ!

Ανοιχτό ερώτημα: είναι βέλτιστος;

Αλγόριθμος Ευκλείδη

6

Τρίγωνο Pascal (Yang Hui)

Διωνυμικοί συντελεστές / συνδυασμοί:

(a+b)4 = a4 + 4a3b + 6a2b2 + 4ab3 + b4

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

7

Αλγοριθμικές τεχνικές

Επανάληψη (Iteration)

Αναδρομή (Recursion)

Επαγωγή (Induction)

8

Πύργοι Ανόι (Hanoi Towers)

πηγή: wikipedia

9

Πύργοι Ανόι (Hanoi Towers)

πηγή: wikipedia

10

Πύργοι Ανόι (Hanoi Towers):

αναδρομή

11

Πύργοι Ανόι (Hanoi Towers):

αναδρομή σε Python

def hanoi(ndisks, startPeg, endPeg, usePeg):

if ndisks:

hanoi(ndisks-1, startPeg, usePeg, endPeg)

print "Move disk %d from peg %d to peg %d" %

(ndisks, startPeg, endPeg)

hanoi(ndisks-1, usePeg, endPeg, startPeg)

12

Πύργοι Ανόι (Hanoi Towers):

επανάληψη

Επανάλαβε (μέχρι να επιτευχθεί η μετακίνηση):

• Μετακίνησε κατά τη θετική φορά τον μικρότερο

δίσκο

• Κάνε την μοναδική επιτρεπτή κίνηση που δεν

αφορά τον μικρότερο δίσκο

13

Αποδοτικότητα αλγορίθμου

Μετράμε το κόστος αλγορίθμου σαν συνάρτηση

των υπολογιστικών πόρων που απαιτούνται σε

σχέση με το μέγεθος της (αναπαράστασης της)

εισόδου στην χειρότερη περίπτωση:

costA(n) = max {κόστος αλγορ. Α για είσοδο x}

για όλες τις εισόδους

x μήκους n

Παράδειγμα: time-costMS(n) <= c nlogn

(MS = MergeSort, c μία σταθερά)

14

Αποδοτικότητα αλγορίθμου

Συνήθως μας ενδιαφέρει το κόστος σε χρόνο, ή

αλλιώς η χρονική πολυπλοκότητα.

Ενδιαφέρον παρουσιάζει και το κόστος σε χώρο, ή

αλλιώς χωρική πολυπλοκότητα.

Παράδειγμα: space-costMS(n) <= c’ n

(MS = MergeSort, c’ κάποια σταθερά)

15

Ασυμπτωτικός συμβολισμός (i)

16

Παραδείγματα συμβολισμού Ο

BubbleSort: ΤBS(n) = Ο(n2)

InsertionSort: ΤIS(n) = Ο(n2)

MergeSort: ΤMS(n) = Ο(n logn)

17

Ασυμπτωτικός συμβολισμός (ii)

18

Παραδείγματα συμβολισμού Ω

BubbleSort: ΤBS(n) = Ω(n2)

InsertionSort: ΤIS(n) = Ω(n2)

MergeSort: ΤMS(n) = Ω(n logn)

Προσοχή: πολυπλοκότητα χειρότερης περίπτωσης

19

Ασυμπτωτικός συμβολισμός (iii)

20

Παραδείγματα συμβολισμού Θ

BubbleSort: ΤBS(n) = Θ(n2)

InsertionSort: ΤIS(n) = Θ(n2)

MergeSort: ΤMS(n) = Θ(n logn)

Προσοχή: πολυπλοκότητα χειρότερης περίπτωσης

21

Ασυμπτωτικός συμβολισμός :

συμβάσεις και ιδιότητες

Γράφουμε: g(n) = O(f(n)) αντί για g(n) Є O(f(n))

Θ(f) = O(f) ∩ Ω(f)

p(n) = Θ(nk), για κάθε πολυώνυμο p

Ο(poly) = U O(nk) (για όλα τα k Є N)

22

Ασυμπτωτικός συμβολισμός :

συμβάσεις και ιδιότητες

log*n: πόσες φορές πρέπει να λογαριθμήσουμε το n για να

φτάσουμε κάτω από το 1 (αντίστροφη υπερεκθετικής)

A: Ackermann.

α: αντίστροφη της Α.

23

Γιατί ασυμπτωτικός συμβολισμός;

http://bigocheatshee

t.com/

Source: bigocheatsheet.com/

24

Ασυμπτωτικός συμβολισμός:

απόδειξη φραγμάτων

Θεώρημα. log(n!) = Θ(n logn)

Απόδειξη: ασυμπτωτικά (για n > n0) ισχύει:

(n/2)n/2 < n! < nn =>

(1/2) n (logn - 1) < log(n!) < n logn =>

(1/3) n logn < log(n!) < n logn

Προσοχή: μπορείτε να χρησιμοποιήσετε κανόνα de l’Hospital,

αλλά συνήθως δεν συμφέρει!

25

Πολυπλοκότητα αλγορίθμων:

απλοποιήσεις Συχνά θεωρούμε ως μέγεθος της εισόδου το πλήθος των

στοιχείων εισόδου μόνο (αγνοώντας το μέγεθός τους σε

bits): ΟΚ αν τυχόν αριθμοί εισόδου είναι «μικροί» σε

σχέση με υπόλοιπη είσοδο.

Αν υπάρχουν «μεγάλοι» αριθμοί στην είσοδο χρειάζεται

προσοχή:

Μπορούμε και πάλι να τους αγνοήσουμε αν η τιμή

τους δεν επηρεάζει το πλήθος των στοιχειωδών

πράξεων. Π.χ. ταξινόμηση με συγκρίσεις.

Όχι όμως όταν το πλήθος των πράξεων εξαρτάται

από την τιμή των αριθμών: π.χ. ύψωση σε δύναμη.

26

Πολυπλοκότητα αλγορίθμων:

απλοποιήσεις Επίσης θεωρούμε ότι κάθε στοιχειώδης αριθμητική

πράξη (πρόσθεση, πολ/σμός, σύγκριση) έχει κόστος 1

βήματος. Αυτό λέγεται αριθμητική πολυπλοκότητα

(arithmetic complexity) και είναι συνήθως ικανοποιητική

μέτρηση.

Δεν δημιουργεί πρόβλημα εφ’όσον οι αριθμοί που

εμπλέκονται δεν μεγαλώνουν πάρα πολύ (π.χ.

εκθετικά) ως προς τις αρχικές τους τιμές.

Η ανάλυση της πολυπλοκότητας ψηφιοπράξεων (bit

complexity) είναι απαραίτητη όταν οι αριθμοί

«μεγαλώνουν» πολύ κατά τη διάρκεια εκτέλεσης: π.χ.

ύψωση σε δύναμη, n-οστός Fibonacci.

27

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

Είναι η πολυπλοκότητα του βέλτιστου αλγορίθμου που

λύνει το πρόβλημα.

costΠ(n) = min {costA(n)}

για όλους τους αλγορίθμους

Α που επιλύουν το Π

Παράδειγμα: time-costSORT(n) = O(n logn)

(SORT = πρόβλημα ταξινόμησης)

Για να δείξουμε βελτιστότητα αλγορίθμου χρειάζεται και

απόδειξη αντίστοιχου κάτω φράγματος: Ω(n logn)

28

Ανάλυση χρονικής

πολυπλοκότητας αλγορίθμων Μέτρηση των βημάτων που θα εκτελεστούν:

είτε με άμεσο τρόπο (π.χ. πλήθος επαναλήψεων

επί κόστος / επανάληψη)

Παράδειγμα: TBS(n) <= c n2 = O(n2)

(BS = BubbleSort, c κάποια σταθερά)

είτε έμμεσα, κυρίως σε αναδρομικούς αλγορίθμους

(επίλυση αναδρομικών σχέσεων)

Παράδειγμα: TMS(n) <= 2TMS(n/2)+cn =…= O(n logn)

(MS = MergeSort, c κάποια σταθερά)

29

Εύρεση Μέγιστου Κοινού Διαιρέτη (gcd)

Δεν είναι λογικό να ανάγεται στο πρόβλημα εύρεσης πρώτων

παραγόντων γιατί αυτό δεν λύνεται αποδοτικά.

Απλός αλγόριθμος: O(min(α,b))

Αλγόριθμος με αφαιρέσεις: O(max(α,b))

Αλγόριθμος του Ευκλείδη: O(log(α+b))

30

Εύρεση Μέγιστου Κοινού Διαιρέτη

(gcd): υλοποίηση με αναδρομή

Αλγόριθμος με αφαιρέσεις: O(max(α,b))

Αλγόριθμος του Ευκλείδη: O(log(α+b))

if b=0 then GCD(a,b):= a

else GCD(a,b):= GCD(b, a mod 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)

31

Πολυπλοκότητα Ευκλείδειου

Αλγορίθμου

O(log max(α,b)): σε κάθε 2 επαναλήψεις ο

μεγαλύτερος αριθμός υποδιπλασιάζεται (γιατί;)

Ω(log max(α,b)): για ζεύγη διαδοχικών αριθμών

Fibonacci Fk-1, Fk, χρειάζεται k επαναλήψεις,

και k = Θ(logFk), αφού Fk ≈ φk/√5, φ = (1+√5)/2

(φ η χρυσή τομή).

Άρα η πολυπλοκότητα του Ευκλείδειου είναι

Θ(log max(α,b)) = Θ(log (α+b))

Bit complexity: O(log3(α+b))

32

Επεκτεταμένος Ευκλείδειος

Αλγόριθμος

Εκφράζει τον gcd(a,b) σαν γραμμικό συνδυασμό

των a και b

Επιτρέπει την εύρεση πολλαπλασιαστικού

αντιστρόφου στην αριθμητική modulo n:

αν gcd(a,n)=1 τότε Ext. Euclid δίνει κ,λ: κa+λn=1

Άσκηση: σχεδιάστε και υλοποιήστε τον επεκτεταμένο

Ευκλείδειο αλγόριθμο

33

Ύψωση σε δύναμη

power(a, n)

result := 1; for i := 1 to n do result := result*a; return result

Πολυπλοκότητα: O(n) – εκθετική! (γιατί;)

34

... με επαναλαμβανόμενο

τετραγωνισμό (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

Ιδέα: a13 = a8+4+1 = a8 a4 a1 = a1.2

3+1.2

2 +0.2

1 +1.2

0

Πολυπλοκότητα: O(log n) - πολυωνυμική

ως προς το μήκος της εισόδου!

35

Σύγκριση bit complexity για an

‘Αφελής’ αλγόριθμος: O(n2 ||a||2) = O(n2 log2a)

i-οστή επανάληψη: O((i-1) ||a||2)

||a|| = μήκος του αριθμού a σε bits

Αλγόριθμος τετραγωνισμού: O(n2 ||a||2) επίσης!

(γιατί;)

Τετραγωνισμός με πολλ/σμό Gauss-Karatsuba:

O(nlog3 ||a||log3) = O(n1.59 log1.59a)

Περαιτέρω βελτιώσεις (Schönhage–Strassen):

O(n||a|| logn loglogn) = O(n loga logn loglogn)

36

Modular exponentiantion an mod p

fastmodpower(a,n,p)

result := 1; while n>0 do if odd(n) then res:=res*a mod p; n := n div 2; a := a*a mod p return res

Arithmetic complexity: O(log n)

Bit complexity: O(log n log p) - πολυωνυμική

ως προς το μήκος της εισόδου!

37

Κρυπτοσύστημα RSA (i)

Για να στείλει η A (Alice) στον B (Bob) ένα μήνυμα m:

O B διαλέγει 2 μεγάλους πρώτους αριθμούς p και q,

υπολογίζει το γινόμενο n = pq, και διαλέγει επίσης

ακέραιο e σχετικά πρώτο με το φ(n) = (p-1)(q-1).

Ο Β στέλνει στην Α τα n και e (δημόσιο κλειδί του Β)

H Α στέλνει στον Β την τιμή c = enc(m) = me mod n

(κρυπτογράφημα).

Ο Β υπολογίζει m = dec(c) = cd mod n

όπου d = e-1 (mod φ(n)) <=> de = 1 (mod φ(n))

(ο d είναι το ιδιωτικό κλειδί του Β)

38

Ορθότητα RSA: cd = med = mkφ(n)+1 = m (mod n).

Παράδειγμα RSA:

p=11, q=17, n=187, e=21, d=61

έστω μήνυμα m = 42

c = enc(m) = 4221 mod 187 = 9

m = dec(c) = 961 mod 187 = 42

Κρυπτοσύστημα RSA (ii)

39

Πρώτοι αριθμοί και κρυπτογραφία

Υπολογιστικά προβλήματα σημαντικά για κρυπτογραφία:

Primality testing: Δίνεται ακέραιος n. Είναι πρώτος;

Σχετικά εύκολο. Ανήκει στο P όπως έδειξαν σχετικά

πρόσφατα (2002) προπτυχιακοί Ινδοί φοιτητές.

Factoring (παραγοντοποίηση): Δίνεται ακέραιος n. Να

βρεθούν οι πρώτοι παράγοντες του.

Δεν ξέρουμε αν είναι εύκολο ή δύσκολο. Πιστεύουμε ότι

είναι υπολογιστικά δύσκολο (ότι δεν ανήκει στο P), αλλά

όχι τόσο δύσκολο όσο τα NP-complete προβλήματα.

Για κβαντικούς υπολογιστές (που δεν έχουμε ακόμα

καταφέρει να κατασκευάσουμε) είναι ευεπίλυτο.

40

Fermat test: για κάθε πρώτο p, για κάθε a (εκτός

πολλαπλασίων του p):

ap-1 = 1 (mod p)

Για όλους σχεδόν τους σύνθετους n, διαψεύδεται με

πιθανότητα >= ½

Εξαιρούνται οι αριθμοί Carmichael (π.χ. 561).

Miller-Rabin test: καλύπτει και τους αριθμούς

Carmichael: δεν περνούν το τεστ με πιθανότητα >= ½

Πώς αυξάνουμε την πιθανότητα επιτυχίας

από ½ σε 1/2k ;

Κρυπτοσύστημα RSA: υλοποίηση

41

Η ασφάλεια του RSA στηρίζεται στην (εκτιμώμενη, δεν

υπάρχει ακόμη απόδειξη!) :

– υπολογιστική δυσκολία της παραγοντοποίησης

Η λειτουργία του RSA στηρίζεται σε αποδοτικούς

αλγόριθμους για:

– primality testing (Miller-Rabin),

– ύψωση σε δύναμη modulo n (modular exponentiation,

Gauss) και

– εύρεση αντιστρόφου modulo φ(n) (επεκτεταμένος

Ευκλείδειος).

RSA και πολυπλοκότητα

42

Αριθμοί Fibonacci

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...

F0 = 0, F1 = 1

Fn = Fn-1 + Fn-2 , n >=2

Πρόβλημα: Δίνεται n, να υπολογιστεί το Fn

Πόσο γρήγορο μπορεί να είναι το πρόγραμμά μας;

43

Αριθμοί 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) > c’.F(n) = Θ(1.618n)

44

Αριθμοί Fibonacci –

καλύτερος αλγόριθμος

Fib2(n)

a:=0; b:=1;

for i:=2 to n do

c:=b; b:=a+b; a:=c;

return b

Πολυπλοκότητα: O(n)

Είναι πολυωνυμική;

45

Αριθμοί Fibonacci –

ακόμα καλύτερος αλγόριθμος

Μπορούμε να γράψουμε τον υπολογισμό σε μορφή πινάκων:

Από αυτό συμπεραίνουμε:

Και το πλήθος των αριθμητικών πράξεων (αριθμητική

πολυπλοκότητα) μειώνεται σε O(log n).

46

Αριθμοί Fibonacci –

ακόμα καλύτερος αλγόριθμος

Άσκηση: βρείτε την πολυπλοκότητα ψηφιοπράξεων (bit

complexity) του παραπάνω αλγορίθμου. Συγκρίνετε με τον

επαναληπτικό αλγόριθμο.

47

Χρόνος εκτέλεσης αλγορίθμων

Έστω 4 προγράμματα με αριθμό βημάτων O(2n),

O(n2), O(n), και O(logn) που το καθένα χρειάζεται 1

δευτερόλεπτο για να υπολογίσει το F(100).

Πόσα δευτερόλεπτα θα χρειαστούν για να

υπολογίσουν τα F(101), F(110), F(200);

1 1 1 F(100)

2 4 ?????? F(200)

1.1 1.21 1024 F(110)

1.01 1.02 2 F(101)

c3.n c2

.n 2 c1.2n

1

1.15

1.02

1.002

c4.logn

48

Πολλαπλασιασμός Ακεραίων

49

Πολυπλοκότητα Πολλαπλασιασμού

50

+ cn

+ 4 cn/2

+ 16 cn/4

... ... ... ... ... ... ... ... ...

…...

4k ‘φύλλα’, χρονική πολυπλ/τα α.4k = O(n2)

+ 4(k-1) cn/2(k-1)

… ... ... ... ... ... ... ...

Τ(n)

T(n/2) T(n/2) T(n/2) T(n/2)

T(n/4) T(n/4) ….. ….... ….... …..

T(1) T(1) ..….. ….. ….... ….... …....

T(2) ….. ….. ….. …. ….. .

<(4/2)k cn .

.

.

≤ 2(logn+1) cn

= O(n2)

Χρον.

πολ/τα

Συνολικά: O(n2)

Ύψος

δένδρου

Απόδειξη:

51

Πολυπλοκότητα Πολλαπλασιασμού

52

Βελτιωμένος Πολλαπλασιασμός

(Gauss-Karatsuba)

53

Πολυπλοκότητα Βελτίωσης

54

+ cn

+ 3 c n/2

+ 9 c n/4

... ... ... ... ... ... ... ... ...

…...

3k ‘φύλλα’, χρονική πολυπλ/τα α.3k = O(3logn) = O(nlog3)

+ 3(k-1) c n/2(k-1)

… ... ... ... ... ... ... ...

Τ(n)

T(n/2) T(n/2) T(n/2) T(n/2)

T(n/4) T(n/4) ….. ….... ….... …..

T(1) T(1) ..….. ….. ….... ….... …....

T(2) ….. ….. ….. …. …..

<2.(3/2)k cn .

.

.

≤ 3.(3/2)(logn) cn

= O(nlog3)

Χρον.

πολ/τα

Συνολικά: O(nlog3)

Ύψος

δένδρου

Απόδειξη:

55

Πολυπλοκότητα Βελτίωσης

56

Master Theorem (απλή μορφή)

Αν T(n) = aT(n/b) + O(n),

για θετικούς ακέραιους a, b

και Τ(1) = O(1)

τότε:

O(n), αν a<b

O(n logn), αν a=b

O(nlogba), αν a>b

T(n) =

57

+ cn

+ a c n/b

+ a2 c n/b2

... ... ... ... ... ... ... ... ...

…...

ak ‘φύλλα’, χρονική πολυπλ/τα c’.ak = O(alogbn) = O(nlogba) ≤

+ a(k-1) c n/b(k-1)

… ... ... ... ... ... ... ...

Τ(n)

T(n/b) T(n/b) T(n/b)

T(n/b2) ….. ….... ….... …..

T(1) T(1) ..….. ….. ….... ….... …....

….. ….. ….. …. …..

.

.

.

≤ cn Σ0k (a/b)i

Χρον.

πολ/τα

Ύψος

δένδρου

Απόδειξη:

T(n/b2)

...

...

a

a

O(n), αν a<b

O(n logn), αν a=b

O(nlogba), αν a>b

=

58

Master Theorem (γενική μορφή)

Αν T(n) = aT(n/b) + O(nd),

για θετικούς ακέραιους a, b, d

και Τ(1) = O(1)

τότε:

O(nd), αν a<bd

O(nd logn), αν a=bd

O(nlogba), αν a>bd

T(n) =

59

Master Theorem: εφαρμογή Αν T(n) = aT(n/b) + O(nd), για θετικούς ακέραιους a, b, d

και Τ(1) = O(1) τότε:

O(nd), αν a<bd

O(nd logn), αν a=bd

O(nlogba), αν a>bd

T(n) =

Matrix Multiplication

•'Standard' divide-and-conquer: T(n) = 8T(n/2) + O(n2)

=> T(n) = O(n3)

•Strassen's algorithm: T(n) = 7T(n/2) + O(n2)

=> T(n) = O(nlog7)

60

Μερικές εφαρμογές

Κρυπτογραφία

Εκλογές

Θεωρία Παιγνίων

Γραμμικός Προγραμματισμός

της Θεωρίας Αλγορίθμων και Πολυπλοκότητας

61

Συναρτήσεις μονής κατεύθυνσης (one-way functions): εύκολο να υπολογιστούν δύσκολο να αντιστραφούν

Κρυπτογραφία δημοσίου κλειδιού (κατάργησε την ανάγκη ανταλλαγής κλειδιών!):

στηρίζεται στην ύπαρξη τέτοιων συναρτήσεων

Κρυπτοσύστημα RSA [Rivest-Shamir-Adleman, 1977]

συνάρτηση κρυπτογράφησης: c = me mod n

Ασφάλεια RSA: δεν υπάρχει (ελπίζουμε, χρειαζόμαστε απόδειξη!) αποδοτικός τρόπος υπολογισμού του m δεδομένων των c, e, και n, αν n είναι σύνθετος (...εκτός αν γνωρίζουμε παραγοντοποίηση του n)

Δηλαδή η συνάρτηση κρυπτογράφησης RSA είναι μονής κατεύθυνσης (απόδειξη;)

Κρυπτογραφία δημοσίου κλειδιού

62

Ψηφοφορίες (social choice)

Εκλογές (βουλευτικές, πρυτανικές ;-))

Λήψη αποφάσεων σε εταιρείες, οργανισμούς,...

Χρήση στον παγκόσμιο ιστό:

ιστοσελίδες "ψηφίζουν" ιστοσελίδες δείχνοντας σε

αυτές

χρήστες "ψηφίζουν" ιστοσελίδες ανάλογα με τον

χρόνο που ξοδεύουν σε αυτές

Κοινωνικά δίκτυα (social networks)

friends, followers

63

Ψηφοφορίες (social choice)

Πληθώρα εκλογικών συστημάτων

Το πλειοψηφικό δεν είναι πάντα δίκαιο:

Ο νικητής υποστηρίζεται μόνο από το 30%

Είναι τελευταία προτίμηση για το 70% !

z

x

y

w

y

z

x

w

x

z

y

w

w

z

x

y

20 24 26 30

64

Και το "απόλυτο" πλειοψηφικό παρουσιάζει

παράδοξα:

οι x, w περνούν στον 2ο γύρο

ο x κερδίζει με 70%, παρ’όλο που 74% προτιμούν

τον z από τον x (ο z έφυγε από τον 1ο γύρο!).

z

x

y

w

y

z

x

w

x

z

y

w

w

z

x

y

20 24 26 30

Ψηφοφορίες: κι άλλα παράδοξα

65

Ψηφοφορίες: υπολογιστικές

προκλήσεις

• Δικαιότερα συστήματα μπορεί να απαιτούν

πολύ μεγάλο χρόνο υπολογισμού του νικητή

(υπολογιστικά απρόσιτο)

• για το σύστημα του Dodgson (γνωστός

και ως Lewis Caroll, 19ος αιώνας) το

πρόβλημα είναι πλήρες για μια κλάση

πολυπλοκότητας ευρύτερη της NP

• Θέλουμε ο υπολογισμός του νικητή

να είναι υπολογιστικά προσιτός

66

Ψηφοφορίες: υπολογιστικές

προκλήσεις

• Θεώρημα Gibbard- Satterthwaite (1973):

«Πέρα από κάποιες τετριμμένες περιπτώσεις, όλα τα

συστήματα ψηφοφορίας είναι χειραγωγήσιμα, εκτός αν

είναι δικτατορικά!»

• Θέλουμε η χειραγώγηση να είναι δύσκολη

(υπολογιστικά απρόσιτη)

67

Μη συνεργατικά παίγνια

•Παίκτες (agents: χρήστες, οντότητες λογισμικού,

συστήματα) ανταγωνίζονται, συνήθως για

διεκδίκηση πόρων

•Κάθε παίκτης αποφασίζει μόνο τη δική του

στρατηγική

στόχος: ελαχιστοποίηση ατομικού κόστους

•Το ατομικό κόστος εξαρτάται από τις στρατηγικές

όλων

68

Μη συνεργατικά παίγνια

•Ισορροπία Nash: κανείς δεν βελτιώνει το ατομικό

του κόστος αλλάζοντας μόνο τη δική του

στρατηγική.

–Nash (1952): απέδειξε ότι πάντα υπάρχει τέτοια

ισορροπία (αλλά μπορεί να είναι μεικτή – mixed).

–Η ισορροπία Nash αποτελεί «λύση» του συστήματος:

αν οι παίκτες συμπεριφερθούν στρατηγικά και λογικά και

έχουν στη διάθεσή τους πλήρη γνώση και επαρκή

χρόνο, τότε καταλήγουν σε μία ισορροπία Nash.

69

Ισορροπία Nash

• Αποτέλεσμα: και οι δύο ομολογούν!

• Ισορροπία Nash δεν βελτιστοποιεί συνολικό αποτέλεσμα

Ομολογεί Β Δεν ομολογεί Β

Ομολογεί Α 5, 5 0, 15

Δεν ομολογεί Α 15, 0 1, 1

•Δίλημμα φυλακισμένων: συλλαμβάνονται δύο διαρρήκτες,

συνεργάτες σε μεγάλη κλοπή. Κρατούνται σε χωριστά κελιά

χωρίς επικοινωνία

70

Ισορροπία 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)

71

Linear Programming

72

Επιτυχίες-σταθμοί Θεωρίας

Αλγορίθμων και Πολυπλοκότητας

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]

73

Επιτυχίες-σταθμοί Θεωρίας

Αλγορίθμων και Πολυπλοκότητας

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]

Bitcoin [Nakamoto, 2009]

74

Συνοψίζοντας

Η σημασία των Αλγορίθμων και της Θεωρίας

αυξάνεται όσο αυξάνονται οι υπολογιστικές

δυνατότητες.

Διαρκώς νέες υπολογιστικές προκλήσεις. Ανάγκη

για νέους αλγορίθμους και τεχνικές.

Η ανάλυση της υπολογιστικής πολυπλοκότητας

και η θεωρητική μελέτη αλγορίθμων και

προβλημάτων γίνεται όλο και πιο απαραίτητη.

top related