ΚΕΦΑΛΑΙΟ : Θεωρία υπολογισµών. Συναρτήσεις και ο υπολογισµός τους. Μηχανές Turig.3 Καθολικές γλώσσες προγραµµατισµού.4 Μια µη υπολογίσιµη συνάρτηση.5 Πολυπλοκότητα προβληµάτων.6 Κρυπτογραφία δηµόσιου κλειδιού. Συναρτήσεις Μία συνάρτηση είναι µία αντιστοιχία µεταξύ ενός συνόλου πιθανών τιµών εισόδου και ενός συνόλου τιµών εξόδου, έτσι ώστε κάθε πιθανή είσοδος να αντιστοιχεί σε µία και µοναδική έξοδο. Υπολογίσιµη συνάρτηση είναι αυτή της οποίας η τιµή εξόδου µπορεί να προσδιοριστεί αλγοριθµικά από την τιµή εισόδου. Μη υπολογίσιµη είναι η συνάρτηση που δεν µπορεί να προσδιοριστεί από κανένα αλγόριθµο. Μια προσπάθεια για την παρουσίαση της συνάρτησης µετατροπής γυαρδών σε µέτρα (Σχήµα.) Υπολογισιµότητα 3 Υπάρχουν προβλήµατα που δεν µπορούν να λυθούν από ένα υπολογιστή; ΝΑΙ! Αρχική υπόθεση (Hilbert): κάθε καλώς ορισµένο πρόβληµα έχει µια απάντηση που µπορούµε να βρούµε! δηµιουργία τυπικού µαθηµατικού συστήµατος που να µπορεί να περιγράφει κάθε πρόβληµα κατασκευή αλγορίθµου που να αποφασίζει (σωστό ή.. λάθος) Godel: Icompleteess theorem Με βάση τα αξιώµατα της αριθµητικής για τους ακεραίους, υπάρχουν θεωρήµατα που δεν µπορούν να αποδειχθούν! 4
Άλυτα προβλήµατα (µέχρι σήµερα). Τα στοιχεία µιας µηχανής Turig (Σχήµα.) Η εικασία του Goldbach: κάθε άρτιος αριθµός µπορεί να γραφεί σαν το άθροισµα δύο πρώτων αριθµών Τελευταίο θεώρηµα του Fermat: (λύθηκε πριν 8 χρόνια!) δεν υπάρχουν θετικοί ακέραιοι a, b, c τέτοιοι ώστε a + b = c για > P = NP, Riema hypothesis,... 5 6 Λειτουργίες µίας µηχανής Turig Μια µηχανή Turig για την αύξηση µιας τιµής κατά µία µονάδα (Σχήµα.3) Είσοδοι σε κάθε βήµα. Κατάσταση. Τιµή στην τρέχουσα κυψελίδα της ταινίας. Οι ενέργειες σε κάθε βήµα Γράφει µία τιµή στην τρέχουσα κυψελίδα της ταινίας. Κινεί την κεφαλή εγγραφή/ανάγνωσης. Αλλάζει κατάσταση. 7 8
.3 Church-Turig thesis Καθολική γλώσσα προγραµµατισµού Πρόβληµα: το ότι δεν υπάρχει αλγόριθµος που να λύνει µία κλάση προβληµάτων οφείλεται στο ότι το µοντέλο του υπολογιστή είναι αδύναµο; Church-Turig: όλα τα µοντέλα υπολογιστών και αλγορίθµων που υπάρχουν ή µπορεί να προταθούν στο µέλλον είναι υπολογιστικά ισοδύναµα! Μηχανή Turig λ-calculus Άρα η µη-υπολογισιµότητα είναι ιδιότητα του προβλήµατος, και δεν εξαρτάται από το υπολογιστικό σύστηµα Μία µηχανή Turig µπορεί να υπολογίσει κάθε υπολογίσιµη συνάρτηση. Επαναπροσδιορισµός: κάθε υπολογίσιµη συνάρτηση είναι υπολογίσιµη κατά Turig. εν αποδεικνύεται αλλά είναι γενικά αποδεκτό. Καθολική γλώσσα προγραµµατισµού είναι µία γλώσσα που µπορεί να εκφράσει ένα πρόγραµµα υπολογισµού για κάθε υπολογίσιµη συνάρτηση. Παραδείγµατα:Η στοιχειώδης γλώσσα (Bare Boes) και οι πιο δηµοφιλείς γλώσσες προγραµµατισµού. 9 0 Η Στοιχειώδης Γλώσσα Ένα πρόγραµµα της Στοιχειώδους Γλώσσας για τον υπολογισµό τουχx Y (Σχήµα.4) Η Στοιχειώδης Γλώσσα είναι µία απλή καθώς και καθολική γλώσσα. Προσδιορισµοί καταστάσεων: clear όνοµα; icr όνοµα; decr όνοµα; while όνοµα ot 0 do; ed;
Ένα πρόγραµµα της Στοιχειώδους Γλώσσας για την υλοποίηση της εντολής copy Today to Tomorrow (Σχήµα.5).4 To πρόβληµα του τερµατισµού οθέντος της κωδικοποιηµένης έκδοσης οποιουδήποτε προγράµµατος, επιστρέφει την τιµή όταν το πρόγραµµα τελικά τερµατίζεται ή την τιµή 0 εάν ο βρόχος εκτελείται ατέρµονα. 3 4 Έλεγχος ενός προγράµµατος για το αν είναι αυτοτερµατιζόµενο (Σχήµα.6) Απόδειξη της αδυναµίας επίλυσης του προβλήµατος τερµατισµού Απόδειξη πώς δεν µπορεί να υπάρχει αλγόριθµος απόφασης: Μ P x P( x)? H y Έστω πώς υπάρχει! P Μ P( P)? y stop if H( P) if if H( H) if P( P) P( P) H( H) H( H) αντίφαση!!!! 5 6
.5 Πολυπλοκότητα προβληµάτων Παράδειγµα: πολλαπλασιασµός Πολυπλοκότητα: ποσότητα πόρων (χρόνος, µνήµη) που χρησιµοποιεί ο αλγόριθµος ασυµπτωτική πολυπλοκότητα: ο όρος που υπερισχύει 3 3 + 0 + 3 3 εκθετικοί και πολυωνυµικοί αλγόριθµοι πολυπλοκότητα χειρότερης, µέσης περίπτωσης άνω φράγµα, κάτω φράγµα για την πολυπλοκότητα Παράδειγµα: πολλαπλασιασµός log log log κάτω φράγµα? log3 + + 5 µικρότερο γνωστό άνω φράγµα 7 Αλγόριθµος Αλγόριθµος 984 * 673 595 984 3888 + 904 33859 Χρόνος: τάξη µεγέθους Α Β Γ 9 84 67 3 / Α*Γ = 73 (Α+Β)(Γ+ )-Α*Γ-Β = 5875 Β* = 09 ------------ 33859 Χρόνος: Τεχνική «διαίρει και βασίλευε» log3.59 = 8 Χρονική πολυπλοκότητα προβληµάτων Χρόνος εκτέλεσης αλγορίθµων H χρονική πολυπλοκότητα αναφέρεται στο πλήθος των εκτελέσεων εντολών που απαιτούνται να εκτελεστούν. Ένα πρόβληµα είναι της τάξης Ο(f()) εάν µπορεί να λυθεί µε έναν αλγόριθµο της τάξης Θ(f()). Ένα πρόβληµα είναι της τάξης Θ(f()) εάν µπορεί να λυθεί µε έναν αλγόριθµο της τάξης Ο(f()). µέγεθος εισόδου 0 00 000 0000 00000 log 0.000003 0.000007 0.0000 0.00003 0.00007 0.0000 0.000 0.00 0.0 0. 0.00 0.0.7λ.8ω πολυπλοκότητα αλγορίθµου 0 0.0 4 αιώνες * * * sec βήµα = µs 9 0
ιαίρει και βασίλευε Ο αλγόριθµος ταξινόµησης συγχώνευσης, υλοποιηµένος ως διαδικασία ΤαξινόµησηΣυγχώνευσης (Σχήµα.9) Κοινός τρόπος επίλυσης προβληµάτων: ανάγουµε το πρόβληµα στην λύση µικρότερων προβληµάτων! Παράδειγµα: ταξινόµηση λίστας αριθµών: module sort(list) T ( ) = T ( /) + c if > the {L = firsthalf(list); L = secodhalf(list); T ( ) = c log + L:= sort(l); L:= sort(l); retur L := merge(l,l)} k διαδικασία ΤαξινόµησηΣυγχώνευση(Λίστα) αν (η Λίστα έχει περισσότερες από µία καταχωρίσεις) τότε (Εφάρµοσε τη διαδικασία ΤαξινόµησηςΣυγχώνευσης για την ταξινόµηση του πρώτου µισού της Λίστας Εφάρµοσε τη διαδικασία ΤαξινόµησηςΣυγχώνευσης για την ταξινόµηση του δεύτερου µισού της Λίστας Εφάρµοσε τη διαδικασία ΤαξινόµησηςΣυγχώνευσης για την ταξινόµηση του πρώτου µισού και του δεύτερου µισού της λίστας ώστε να δηµιουργηθεί µία ταξινοµηµένη έκδοση της Λίστας Η ιεραρχία των προβληµάτων που δηµιουργείται από τον αλγόριθµο της ταξινόµησης συγχώνευσης (Σχήµα.0) Γραφήµατα των µαθηµατικών παραστάσεων ν, lg v, v lg v και v (Σχήµα.) 3 4
Τάξη P Τάξης P είναι όλα τα προβλήµατα σε κάθε τάξη Θ(f()), όπου το f() είναι πολυώνυµο. ισεπίλυτα (ή µη-εφικτά) είναι όλα τα προβλήµατα που είναι πολύ πολύπλοκα για να επιλυθούν πρακτικά. Οι περισσότεροι επιστήµονες υπολογιστών θεωρούν την τάξη Ρ όριο µεταξύ δισεπίλυτων και αυτών που έχουν πρακτική λύση. Μη εφικτά προβλήµατα Προβλήµατα µη υπολογίσιµα σε πολυωνυµικό χρόνο Το πρόβληµα της συσκευασίας w,, w, K w N Ν κιβώτια βάρους µπορούν να µεταφερθούν από Κ φορτηγά που το καθένα µπορεί να σηκώσει το πολύ W; 5 8 5 3 W = 4 4 3 W =4 5 6 Μη εφικτά προβλήµατα () Το πρόβληµα του πλανόδιου πωλητή Με δεδοµένο ένα χάρτη δρόµων µε Ν πόλεις και τις αντίστοιχες χιλιοµετρικές αποστάσεις, είναι δυνατόν ένας πωλητής να ολοκληρώσει κάποιο ταξίδι όπου περνάει από κάθε πόλη ακριβώς µία φορά η συνολική διαδροµή έχει µήκος < Κ κύκλος Hamilto Τάξη ΝΡ (Nodetermiistic Polyomial) Τάξης ΝΡ είναι όλα τα προβλήµατα που µπορούν να επιλυθούν από έναν µη αιτιοκρατικό αλγόριθµο της τάξης ΝΡ. Μη αιτιοκρατικός είναι ο αλγόριθµος του οποίου τα βήµατα µπορεί να µην είναι µοναδικά ή αιτιοκρατικά στην κατάσταση επεξεργασίας. Ίσως απαιτούν «δηµιουργικότητα» και εφευρετικότητα. Χαρακτηριστικό των προβληµήτων NP είναι ότι η λύση είναι υπολογιστικά εφικτό να επαληθευτεί! ή µια µηχανή µπορεί να διαλέξει στην τύχη µια λύση και να την επαληθεύσει σε πολυωνυµικό χρόνο Είναι ακόµα άγνωστο αν η τάξη ΝΡ είναι µεγαλύτερη της τάξης Ρ. 7 8
Μια γραφική σύνοψη της κατηγοριοποίησης προβληµάτων (Σχήµα.) Προβλήµατα NP-complete NP-complete: υποσύνολο των πιο δύσκολων προβληµάτων στο NP Κάθε πρόβληµα στο NP µετασχηµατίζεται µε πολυωνυµικό κόστος σε κάποιο πρόβληµα στο NPcomplete Εάν λυθεί σε πολυωνυµικό χρόνο ένα πρόβληµα στο NP-complete τότε λύνονται πολυωνυµικά όλα τα προβλήµατα στο NP ΠΑ P P P3 NP-complete P4 P7 } NP P9 Πολυωνυµική αναγωγή (ΠΑ): Το πρόβληµα P το κωδικοποιώ σαν µια µερική περίπτωση του P. Λύνω το P, και από την λύση του κατασκευάζω µε πολυωνυµικό κόστος την λύση του P 9 30 Παράδειγµα (3-SAT) Κ-Graph Idepedet Set SAT (Satisfiability): δεδοµένης µίας boolea φόρµουλας, υπάρχουν τιµές για τις µεταβλητές που να την κάνουν TRUE; ( x x ) ( x x3) x ) x =, x = 0, x3 = 0 3-SAT: η φόρµουλα είναι το λογικό ΚΑΙ (AND) σχέσεων (clauses) οι οποίες είναι το λογικό Η (OR) το πολύ 3 µεταβλητών. Π.χ. (µε 4 clauses) ( x x x x x x x x Θεώρηµα του Cook: To 3-SAT είναι NP-complete Σε ένα γράφο G, υπάρχει σύνολο Κ κόµβων οι οποίοι να µην είναι γειτονικοί (να µην υπάρχει ακµή που να τους συνδέει) ; Είναι NP-complete; 3 3
Αναγωγή του 3-SAT στο Κ-idepedet set ( x x x x x x x x K = 4 x x x 3 x x x3 x x x3 x x x 3.6 Κρυπτογραφία δηµόσιου κλειδιού Κλειδί είναι ένα ειδικού τύπου σύνολο αριθµών που χρησιµοποιείται για την κρυπτογράφηση. ηµόσιο κλειδί είναι το κλειδί της κρυπτογράφησης. Ιδιωτικό κλειδί είναι το κλειδί της αποκρυπτογράφησης. RSA είναι ένας δηµοφιλής αλγόριθµος κρυπτογραφίας δηµόσιου κλειδιού. Βασίζεται στην αποτυχία εύρεσης ενός αποδοτικού τρόπου προσδιορισµού µεγάλων ακεραίων. 33 34 Κρυπτογράφηση του µηνύµατος 0 Αποκρυπτογράφηση του µηνύµατος 00 Κλειδιά κρυπτογράφησης : =9 και e=50 two = 3 te 3 e = 3 5 = 6,436,343 6,436,343 9 έχει ένα υπόλοιπο 4 4 te = 00 two Έτσι η κρυπτογραφηµένη έκδοση του 0 είναι 00. Κλειδιά αποκρυπτογράφησης: d = 9, = 9 00 two = 4 te 4 d = 4 9 = 88,30,376,5,7,744 88,30,376,5,7,744 9 έχει ένα υπόλοιπο 3 3 te = 0 two Έτσι η αποκρυπτογραφηµένη έκδοση του 00 είναι 0 35 36
Κρυπτογραφία δηµόσιου κλειδιού (Σχήµα.3) ηµιουργία ενός συστήµατος κρυπτογράφησης δηµόσιου κλειδιού RSA (Σχήµα.4) 37 38