Γνωριµία Θεωρία Υπολογισµού: Εισαγωγικά Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς ιδάσκων: Ορέστης Τελέλης e-mail: telelis@unipi.gr Ωρες γραφείου (502, Γρ.Λαµπράκη 126): ευτέρα 13:00 15:00 Τετάρτη 13:30 15:00 Πέµπτη 13:00-15:00 Και κατόπιν συνεννόησης Ωρες µαθήµατος: Τετάρτη 10.15 13:00, Αίθουσα ΓΛ203 Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 1 / 31 Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 2 / 31 Επικοινωνία Αντικείµενο Μαθήµατος Ιστοσελίδα µαθήµατος: https://evdoxos.ds.unipi.gr/courses/ds227/ (ϑα χρειαστεί να κάνετε login στο σύστηµα Evdoxos) Θέµατα και υλικό σχετικά µε το µάθηµα... ΙΑΛΕΞΕΙΣ ΑΝΑΚΟΙΝΩΣΕΙΣ ΕΚΦΩΝΗΣΕΙΣ ΕΡΓΑΣΙΩΝ ΠΑΡΑ ΟΣΗ ΕΡΓΑΣΙΩΝ ΒΟΗΘΗΤΙΚΟ ΥΛΙΚΟ Ποιές είναι οι ϑεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιοριµοί των υπολογιστών; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε; Γιατί; Από τα προβλήµατα που µπορούµε να υπολογίσουµε: Ποιά είναι «υπολογιστικώς» εύκολα; Ποιά είναι «υπολογιστικώς» δύσκολα; Γιατί; Πρέπει πρώτα να συµφωνήσουµε στον ορισµό του υπολογιστή. (και στον ορισµό του «προβλήµατος» ). Ισοδύναµα στους ορισµούς: του Αλγορίθµου. του Προγράµµατος. Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 3 / 31 Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 4 / 31
Μαθηµατικά Εργαλεία Συγγράµµατα Στοιχειώδεις Ορισµοί και Μεθόδοι ιακριτών Μαθηµατικών Σύνολα, Σχέσεις, Συναρτήσεις. Εκτίµηση Πολυπλοκότητας Αλγορίθµων. Αποδεικτικές Μέθοδοι: Επαγωγή, Απαγωγή σε Ατοπο. Συνδυαστικές Μέθοδοι και Επιχειρήµατα. M. Sipser. Εισαγωγή στη Θεωρία Υπολογισµού (Μεταφρασµένο 2η Εκδοση). Πανεπιστηµιακές Εκδόσεις Κρήτης, 2007. Η ϑεµελίωση της Θεωρίας Υπολογισµού δεν απαιτεί εξειδικευµένες µαθηµατικές γνώσεις. Οδηγεί όµως σε ϐαθιά µαθηµατικά αποτελέσµατα. Κατ εξοχήν προαπαιτούµενα: Η πειθαρχία στην τυπική σκέψη και στους ορισµούς. H. R. Lewis, C. H. Papadimitriou. Στοιχεία Θεωρίας Υπολογισµού (Μεταφρασµένο). Εκδόσεις Κριτική, 2005. Η διάθεση για εφευρετικό διανοητικό πειραµατισµό µε τους ορισµούς. Η περιέργεια για τη ϕύση του υπολογισµού. Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 5 / 31 Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 6 / 31 Συγγράµµατα Επιπλέον Πηγές Σηµειώσεις: οι διαφάνειες είναι ϐασισµένες κατ εξοχήν στο ϐιβλίο του M. Sipser και δευτερευόντως στων Lewis και Papadimitriou. Η περισσότερο αποδεκτή ορολογία στα ελληνικά είναι αυτή του ϐιβλίου των Lewis, Papadimitriou. C. H. Papadimitriou. Computational Complexity. Addison-Wesley, 1995. Μια αντιστοίχιση των όρων από τη σελίδα του Καθηγητή Σ. Κολλιόπουλου, για το αντίστοιχο µάθηµα στο ΕΚΠΑ: http://cgi.di.uoa.gr/ sgk/teaching/toc/glwssari-sipser.pdf M. R. Garey, D. S. Johnson. Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman & Co., 1979. Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 7 / 31 Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 8 / 31
ιαδικαστικά Εργαστήρια: Μελέτη και επίλυση ασκήσεων που εµπλέκουν Ασκήσεις Κατασκευές υπολογιστικών µοντέλων. Ανάλυση της λειτουργίας τους. Προσοµοιώσεις µε λογισµικό. Μία Προγραµµατιστική Εργασία ( Π ). ( 20 30% ) 1-2 Σειρές Θεωρητικών Ασκήσεων ( Θ, ). ( 10% έκαστη ) Γραπτή Εξέταση ( Ε ). ( 70% ) Βαθµολογία ( Β ): B 0 = Τελικός Βαθµός: Β = 0.7 Ε + 0.3 Π + 0.1 Θ { min{ 10, B0 }, αν Ε 4 min{ 4, B 0 }, αν Ε < 4 Αντικείµενο Μαθήµατος Μοντέλα Υπολογιστικών Μηχανών. Πεπερασµένα Αυτόµατα (Ντετερµινιστικά, Μη ντετερµινιστικά). Αυτόµατα Στοίβας. Γλώσσες και Γραµµατικές. Μηχανές Turing.. Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε µε τα παραπάνω υπολογιστικά µοντέλα; Πολυπλοκότητα. Πόσο δύσκολα είναι τα προβλήµατα υπολογισµού; Γιατί κάποια προβλήµατα είναι πιο δύσκολα από άλλα; Πώς κατηγοριοποιούµε τα προβλήµατα ως προς τη δυσκολία τους; Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 9 / 31 Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 10 / 31 Αντικείµενο Μαθήµατος 1. Αυτόµατα Πεπερασµένα Αυτόµατα. (Finite Automata) Κανονικές Γλώσσες. (Regular Languages) Μη ντετερµινισµός. Αυτόµατα Στοίβας. (Pushdown Automata) Γλώσσες Ελεύθερες Συµφραζοµένων. (Context-Free Languages) 2. Μηχανές Turing Ορισµός και Παραλλαγές. Αποφασισιµότητα Γλωσσών. 3. Πολυπλοκότητα Οι κλάσεις P και NP NP-πληρότητα, NP-δυσκολία. Πρόβληµα P vs. NP Κάθε µία από τις περιοχές 1, 2, 3 ερµηνεύει το ερώτηµα διαφορετικά. Πρακτικά Οφέλη Τί κερδίζετε από την εµπειρία του µαθήµατος αυτού: Αυξηµένη αντίληψη στον προγραµµατισµό εφαρµογών. Για την ορθότητα του προγραµµατισµού µικρών επί µέρους λειτουργιών. Για την υπολογιστική εφικτότητα του (προγραµµατιστικού) στόχου σας. Για την ενδογενή υπολογιστική ευκολία ή δυσκολία του στόχου µας. Εµπειρία µε τις Κανονικές Εκφράσεις: που απαντώνται σαν εργαλεία σε πολλές σύγχρονες γλώσσες (Python, Ruby, Java, C++). που απαντώνται σε πολλά εργαλεία κελύφους του UNIX, Linux. Αντίληψη του Σχεδιασµού και της Υπολογιστικής Λειτουργίας: των Γλωσσών Προγραµµατισµού. των µεταγλωττιστών. Εµπειρία στον τυπικό σχεδιασµό και τη µελέτη συστηµάτων γενικά. Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 11 / 31 Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 12 / 31
Πολυπλοκότητα Μελέτη των επιλύσιµων υπολογιστικών προβληµάτων. Κάποια από αυτά είναι εύκολα και κάποια είναι δύσκολα. Πολυπλοκότητα Ταξινόµηση n ακεραίων αριθµών (εύκολο): Π.χ., αλγόριθµος BubleSort: O(n 2 ) χρόνος. Π.χ., αλγόριθµος MergeSort: O(n log n) χρόνος. Οι περισσότεροι αλγόριθµοι απαιτούν O(n) χώρο (µνήµη). Μπορεί να γίνει σε λιγότερο από χρόνο ανάλογο του n; Ωρολόγιο Πρόγραµµα Μαθηµάτων Πανεπιστηµίου (δύσκολο): Από όλες τις δυνατές αντιστοιχίσεις µαθηµάτων σε (αίθουσες χρονικά διαστήµατα) µέσα στην εβδοµάδα, επίλεξε µία χωρίς συγκρούσεις εξαµήνων, διδασκόντων, εργαστηρίων, κ.λ.π. Πόσο χρόνο απαιτεί; Ευριστικές «εξυπνάδες» ϐοηθούν, αλλά όχι στη χειρότερη περίπτωση. Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 13 / 31 Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 14 / 31 Πολυπλοκότητα Πολυπλοκότητα Τί είναι αυτό που κάνει κάποια υπολογιστικά προβλήµατα δύσκολα και κάποια άλλα εύκολα; Από την εµπειρία µας: οι πόροι που απαιτούνται για την επίλυσή τους. Ο χρόνος εκτέλεσης του υπολογισµού (ενός αλγορίθµου). Ο χώρος (µνήµη) που απαιτεί η εκτέλεση του υπολογισµού (αλγορίθµου). Η (εµπειρική) δυσκολία µας να ϐρούµε αλγόριθµο µε ϕθηνές απαιτήσεις σε πόρους. Το γεγονός ότι γνωρίζουµε αλγόριθµο µε ϕθηνές απαιτήσεις σε πόρους. Εύρεση Συνδετικού Μονοπατιού µεταξύ δύο κόµβων σε γράφηµα (εύκολο πώς γίνεται;) Σχετικό Πρόβληµα Βελτιστοποίησης: Συντοµότερο Μονοπάτι µεταξύ δύο κόµβων σε γράφηµα. (Shortest Path Problem) Εύρεση Κύκλου Hamilton σε γράφηµα (δύσκολο). Σχετικό Πρόβληµα Βελτιστοποίησης: Το Πρόβληµα του Περιοδεύοντος Πωλητή (Traveling Salesman Problem -- TSP) Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 15 / 31 Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 16 / 31
Το 1900 ο David Hilbert (1862 1943) διατύπωσε 23 διάσηµα µαθηµατικά προβλήµατα, στο διεθνές συνέδριο µαθηµατικών στο Παρίσι. Μεταξύ αυτών : Το 10ο πρόβληµα του Hilbert Να διατυπωθεί µια διαδικασία, σύµφωνα µε την οποία : να µπορεί να διαπιστωθεί, µε πεπερασµένο πλήθος πράξεων, αν ένα δεδοµένο πολυώνυµο (πολλών µεταβλητών) µε ακέραιους συντελεστές έχει ακέραιες ϱίζες. ηλαδή: Να δοθεί αλγόριθµος (πρόγραµµα) που, µε είσοδο ένα πολυώνυµο µε ακέραιους συντελεστές, να δίνει έξοδο «ΝΑΙ», αν αυτό έχει ακέραιες ϱίζες, και «ΟΧΙ», αν δεν έχει ακέραιες ϱίζες. (Τί είναι αλγόριθµος ;) Ο. Τελέλης Θεωρία Υπολογισµού : Εισαγωγικά 17 / 31 Ο. Τελέλης Θεωρία Υπολογισµού : Εισαγωγικά 18 / 31 Το 4ο πρόβληµα του Hilbert Να αποδειχθεί ότι η αριθµητική µε τα αξιώµατα που την απαρτίζουν είναι σύνεπης, δηλαδή ελεύθερη από εσωτερικές αντιφάσεις. Οτι δηλαδή ένας ορισµένος αριθµός από λογικά ϐήµατα (συνεπαγωγές), ϐασισµένος στα αξιώµατα αυτά, δεν οδηγεί σε αντιφατικό αποτέλεσµα. Το 1970 ο Yuri Matiyasevich απέδειξε πως δεν υπάρχει αλγόριθµος για το 10ο πρόβληµα του Hiblert. Μερικά από τα αξιώµατα της αριθµητικής : Το 0 είναι ϕυσικός αριθµός. Για κάθε ϕυσικό αριθµό, x: x = x. Για κάθε δύο ϕυσικούς αριθµούς x και y, αν x = y, τότε y = x. Μεταβατική ιδιότητα της ισότητας. (Τί είναι αλγόριθµος ;)... Ο. Τελέλης Θεωρία Υπολογισµού : Εισαγωγικά 19 / 31 Ο. Τελέλης Θεωρία Υπολογισµού : Εισαγωγικά 20 / 31
Entscheidungsproblem (D. Hilbert, 1928) Ο Kurt Godel (1906 1978) απέδειξε το 1930 ότι αυτό είναι ανέφικτο, µε το περίφηµο Θεώρηµα της µη Πληρότητας. Το ϑεώρηµα διατυπώνει ότι σε ένα συνεπές σύστηµα υπάρχουν αληθείς προτάσεις που δε µπορούν να αποδειχτούν εντός του συστήµατος αυτού, οι ίδιες ή η άρνησή τους. Σε ελέυθερη απόδοση: «Τα αξιωµατικά συστήµατα των µαθηµατικών δεν είναι συνεπή!!!» Να διατυπωθεί µια διαδικασία, που δέχεται σαν είσοδο µία πρόταση P σε Λογική 1ης Τάξης, πιθανώς µαζί µε ένα πεπερασµένο πλήθος αξιωµάτων, πέρα από τα συνήθη αξιώµατα της Λογικής 1ης Τάξης, και να αποφασίζει σε πεπερασµένο πλήθος ϐηµάτων αν η P είναι αληθής (δίνοντας έξοδο «ΝΑΙ») σε κάθε δοµή που ικανοποιεί τα αξιώµατα, ή ψευδής (δίνοντας έξοδο «ΟΧΙ»). Απλοποιηµένη ιατύπωση: Να δοθεί αλγόριθµος (πρόγραµµα) που αποφασίζει την αλήθεια (ή µη) µιας µαθηµατικής πρότασης, σε πεπερασµένο πλήθος ϐηµάτων. ηλαδή: Να αυτοµατοποιηθούν τα µαθηµατικά (!!!) (Τί είναι αλγόριθµος;) Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 21 / 31 Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 22 / 31 Προβλήµατα και Γλώσσες Μελετάµε Προβλήµατα Απόφασης. Ζητείται ο σχεδιασµός αλγορίθµου που αποφασίζει «ΝΑΙ» ή «ΟΧΙ». Η (κυρίως, µη) ύπαρξη αλγορίθµου είναι αντικείµενο της ς. Οι ελάχιστες απαιτήσεις σε πόρους των δυνατών αλγορίθµων είναι αντικείµενο της Πολυπλοκότητας. Ο Alonzo Church (1903 1995) απέδειξε το 1936, ότι το Entscheidungsproblem είναι αδύνατον, µέσω του υπολογιστικού συστήµατος λ-λογισµού που ανέπτυξε. Ο Alan Turing (1912 1954) απέδειξε λίγο αργότερα, εντός του 1936, ότι το Entscheidungsproblem είναι αδύνατον, µέσω της Μηχανής που ανέπτυξε. Η Θέση των Church και Turing: «αλγόριθµος είναι» ο λ-υπολογισµός και η Μηχανή Turing. Παράδειγµα: Κύκλος Hamilton σε γράφηµα. 1 Πρόβληµα Εύρεσης: Να περιγραφεί αλγόριθµος που υπολογίζει έναν κύκλο Hamilton, σε γράφηµα εισόδου, G(V, E), αν αυτός ο κύκλος υπάρχει. 2 Πρόβληµα Απόφασης: Να περιγραφεί αλγόριθµος που, για είσοδο ένα γράφηµα G(V, E), να απαντά «ΝΑΙ» ή «ΟΧΙ», αν το G έχει, ή δεν έχει κύκλο Hamilton, αντιστοίχως. Αν λύσουµε το 1, αυτοµάτως έχουµε λύσει και το 2. Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 23 / 31 Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 24 / 31
Προβλήµατα και Γλώσσες Αλφάβητο και Λέξεις Τα προβλήµατα απόφασης µπορούν να περιγραφούν µε τυπικές γλώσσες. Οι γλώσσες είναι σύνολα λέξεων. Μια λέξη είναι µια ακολουθία συµβόλων από ένα δεδοµένο αλφάβητο. Χρησιµοποιούµε λέξεις για να περιγράψουµε την είσοδο µηχανές των υπολογιστικών µας µοντέλων. εδοµένης µιας λέξης, οι µηχανές ϑα απαντούν: «ΝΑΙ», αν η λέξη ανήκει στη γλώσσα. «ΟΧΙ», διαφορετικά. Εποµένως: Γλώσσα Πρόβληµα (απόφασης) και Λέξη Είσοδος. Αλφάβητο: πεπερασµένο, µη κενό σύνολο από σύµβολα. Π.χ., Σ = { 0, 1 }, Σ = { a, b, c }. Η ακόµα: Σ = { while, void, int, for, if... } Λέξη/Συµβολοσειρά: πεπερασµένη ακολουθία συµβόλων του αλφαβήτου Σ. Π.χ., 0 1 0 1 1, a b b b c a, ή ένα πρόγραµµα σε C (ή Java, ή C++,... ) Μήκος λέξης: πλήθος συµβόλων της λέξης, συµβ. µε w. Κενή Λέξη: Λέξη µηδενικού µήκους, συµβολίζεται µε ɛ. Σ k : σύνολο λέξεων µήκους k που αποτελούνται από σύµβολα του Σ. { 0, 1 } 2 = { 00, 01, 10, 11 }. { a, b, c }2 = { ab, bc, ac, ca, cb, ba }. Σ : σύνολο όλων των λέξεων επί του Σ: Σ = k N Σk Π.χ., { 0, 1 } = { ɛ, 0, 1, 00, 01, 10, 11, 000, 001,... }. Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 25 / 31 Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 26 / 31 Πράξεις µε Λέξεις Τυπικές Γλώσσες Παράθεση των x και y: x y ή απλώς xy. Π.χ., παράθεση των 010 και 10 δίνει 01010. Επανάληψη της λέξης w k ϕορές: w k = k ϕορές {}}{ w w w. Αντίστροφη w R της λέξης w: προκύπτει γράφοντας την w από το τέλος προς την αρχή. Π.χ., (100) R = 001, (abcc) R = ccba. Παλινδροµική λέξη w αν w = w R : π.χ., (010) R = 010. Για κάθε δύο λέξεις x και y είναι (x y) R = y R x R. Η x είναι υπολέξη της w αν w = y x z. Μπορεί να είναι y = ɛ ή z = ɛ (ή και τα δύο). Τυπική Γλώσσα L επί του αλφαβήτου Σ: Ενα συγκεκριµένο υποσύνολο του Σ. Με άπειρο ή πεπερασµένο πλήθος συµβολοσειρών (λέξεων) - αριθµήσιµο. Μερικά παραδείγµατα γλωσσών επί του αλφαβήτου Σ = { 0, 1, 2 }: L 1 = { 012, 120, 201, 210, 102, 021 } = Σ 3 L 2 = { ɛ, 0, 00, 000,... } L 3 = { w Σ : το τελευταίο ψηφίο του w είναι 1 }. L 4 = { } = (η κενή γλώσσα). L 5 = { ɛ } η γλώσσα που περιέχει µόνο την κενή λέξη. L 6 = { w : w συντακτικά ορθό πρόγραµµα σε C } = Γλώσσα C Κάθε συντακτικά ορθό πρόγραµµα είναι µία λέξη της γλώσσας. Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 27 / 31 Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 28 / 31
Πράξεις µε Γλώσσες Πράξεις Συνόλων: ένωση, τοµή, διαφορά, συµπλήρωµα. Παράθεση γλωσσών L 1 και L 2 επί του αλφαβήτου Σ : L 1 L 2 = { w Σ : w = x 1 x 2, για x 1 L 1 και x 2 L 2 } = L 1 L2 Π.χ., αν L 1 = { 0, 00, 11 } και L 2 = { ɛ, 1 }: L 1 L 2 = { 0, 00, 11, 01, 001, 111 } Παράθεση Γλώσσας µε την ίδια: L 2 = { w Σ : w = x 1 x 2, για x 1 L και x 2 L } Παράθεση Γλώσσας k φορές: L k = { w Σ : w = x 1 x 2 x k, για x 1, x 2,..., x k L } Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 29 / 31 Πράξεις µε Γλώσσες Παράθεση οποιουδήποτε (πεπερασµένου) πλήθους λέξεων της L: L = L k (Παρατήρηση: k 0.) k N Παράδειγµα: αν L = { a, bb }, τότε: L = { ɛ, a, bb, abb, bba, aabb, bbaa, abba,... } Αν L = { ɛ }, τότε L = { ɛ }. Αν L =, τότε L = { ɛ }. Παράθεση ϑετικού πεπερασµένου πλήθους λέξεων της L: L + = L k (Παρατήρηση: k 1.) k Z + Πότε είναι L = L + ; Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 30 / 31 Αναπαράσταση Γλωσσών Με απλή απαρίθµηση των λέξεών τους, όταν είναι πεπερασµένες. Μέσω κοινής χαρακτηριστικής ιδιότητας που έχουν οι λέξεις: Π.χ., L 1 = { w {0, 1} : w έχει άρτιο πλήθος από 1 } Π.χ., L 2 = { 0 n 1 n : n 0 }. Μέσω συνολοθεωρητικών πράξεων επί άλλων γλωσσών, π.χ., L 1 L 2. Μέσω γραµµατικών, που αποτελούν µηχανισµούς παραγωγής λέξεων της γλώσσας. Μέσω υπολογιστικών µηχανών (ισοδύναµα: αλγορίθµων) που αποφασίζουν αν µια λέξη ανήκει στη γλώσσα ή όχι. Π.χ., ένας συντακτικός αναλυτής που αποφασίζει αν ένα πρόγραµµα C είναι ορθό ή όχι. Ο. Τελέλης Θεωρία Υπολογισµού: Εισαγωγικά 31 / 31