Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B...

76

Transcript of Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B...

Page 1: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς
Page 2: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς
Page 3: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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

Page 4: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

3

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

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

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

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

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

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

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

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

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

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

χαρτί” (effectiveness).

Page 5: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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

Page 6: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 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 )

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

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

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

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

Page 7: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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

Page 8: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

7

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

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

Αναδρομή (Recursion)

Επαγωγή (Induction)

Page 9: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

8

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

πηγή: wikipedia

Page 10: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

9

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

πηγή: wikipedia

Page 11: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

10

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

αναδρομή

Page 12: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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)

Page 13: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

12

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

επανάληψη

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

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

δίσκο

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

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

Page 14: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

13

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

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

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

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

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

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

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

x μήκους n

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

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

Page 15: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

14

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

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

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

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

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

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

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

Page 16: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

15

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

Page 17: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

16

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

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

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

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

Page 18: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

17

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

Page 19: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

18

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

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

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

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

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

Page 20: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

19

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

Page 21: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

20

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

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

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

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

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

Page 22: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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)

Page 23: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

22

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

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

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

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

A: Ackermann.

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

Page 24: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

23

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

http://bigocheatshee

t.com/

Source: bigocheatsheet.com/

Page 25: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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,

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

Page 26: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

25

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

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

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

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

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

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

προσοχή:

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

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

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

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

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

Page 27: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

26

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

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

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

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

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

μέτρηση.

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

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

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

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

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

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

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

Page 28: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

27

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

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

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

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

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

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

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

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

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

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

Page 29: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

28

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

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

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

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

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

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

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

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

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

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

Page 30: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

29

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

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

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

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

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

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

Page 31: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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)

Page 32: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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))

Page 33: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

32

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

Αλγόριθμος

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

των a και b

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

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

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

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

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

Page 34: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

33

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

power(a, n)

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

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

Page 35: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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) - πολυωνυμική

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

Page 36: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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)

Page 37: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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) - πολυωνυμική

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

Page 38: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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 είναι το ιδιωτικό κλειδί του Β)

Page 39: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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)

Page 40: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

39

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

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

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

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

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

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

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

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

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

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

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

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

Page 41: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

40

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

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

ap-1 = 1 (mod p)

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

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

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

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

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

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

από ½ σε 1/2k ;

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

Page 42: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

41

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

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

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

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

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

– primality testing (Miller-Rabin),

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

Gauss) και

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

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

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

Page 43: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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

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

Page 44: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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)

Page 45: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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)

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

Page 46: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

45

Αριθμοί Fibonacci –

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

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

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

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

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

Page 47: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

46

Αριθμοί Fibonacci –

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

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

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

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

Page 48: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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

Page 49: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

48

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

Page 50: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

49

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

Page 51: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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)

Ύψος

δένδρου

Απόδειξη:

Page 52: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

51

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

Page 53: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

52

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

(Gauss-Karatsuba)

Page 54: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

53

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

Page 55: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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)

Ύψος

δένδρου

Απόδειξη:

Page 56: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

55

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

Page 57: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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) =

Page 58: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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

=

Page 59: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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) =

Page 60: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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)

Page 61: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

60

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

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

Εκλογές

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

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

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

Page 62: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

61

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

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

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

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

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

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

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

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

Page 63: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

62

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

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

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

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

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

αυτές

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

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

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

friends, followers

Page 64: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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

Page 65: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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

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

Page 66: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

65

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

προκλήσεις

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

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

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

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

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

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

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

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

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

Page 67: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

66

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

προκλήσεις

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

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

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

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

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

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

Page 68: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

67

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

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

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

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

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

στρατηγική

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

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

όλων

Page 69: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

68

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

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

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

στρατηγική.

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

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

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

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

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

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

Page 70: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

69

Ισορροπία Nash

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

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

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

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

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

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

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

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

Page 71: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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)

Page 72: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

71

Linear Programming

Page 73: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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]

Page 74: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

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]

Page 75: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς

74

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

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

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

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

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

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

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

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

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

Page 76: Αλγόριθμοι και Πολυπλοκότητα · Για να ίλι η A (Alice) ον B (Bob) ένα μήνυμα m: O B ιαλέγι 2 μγάλους πρώους αριθμούς