308

ΠΑΝΑΓΙ - repository.kallipos.gr · ’Ena nŁo montŁlo upologismoÔ, € m—a epŁktash se k‹poio €dh up‹rqon, antikato-ptr—zetaisun€jwcsem—anŁaoikogŁneiaglwss‚nprogrammatismoÔkaisenŁa

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • ΠΑΝΑΓΙΩΤΗΣ ΚΑΤΣΑΡΟΣ Επ. Καθηγητής Α.Π.Θ.

    Θεωρία Υπολογισμού

    Και Εφαρμογές

    https://creativecommons.org/licenses/by-nc-nd/3.0/gr/http://www.kallipos.gr/

  • Θεωρία Υπολογισμού και Εφαρμογές

    Συγγραφή

    Παναγιώτης Κατσαρός

    Κριτικός αναγνώστης

    Ιωάννης Σταμέλος

    Συντελεστές έκδοσης

    Γλωσσική Επιμέλεια: Βασίλειος Παππάς

    Γραφιστική Επιμέλεια: Παναγιώτης Κατσαρός

    Τεχνική Επεξεργασία: Εμμανουέλα Στάχτιαρη

    ISBN: 978-960-603-406-0

    Copyright © ΣΕΑΒ, 2015

    Το παρόν έργο αδειοδοτείται υπό τους όρους της άδειας Creative Commons Αναφορά Δημιουργού - Μη Εμπορική Χρήση -

    Όχι Παράγωγα Έργα 3.0. Για να δείτε ένα αντίγραφο της άδειας αυτής επισκεφτείτε τον ιστότοπο

    https://creativecommons.org/licenses/by-nc-nd/3.0/gr/

    ΣΥΝΔΕΣΜΟΣ ΕΛΛΗΝΙΚΩΝ ΑΚΑΔΗΜΑΪΚΩΝ ΒΙΒΛΙΟΘΗΚΩΝ

    Εθνικό Μετσόβιο Πολυτεχνείο

    Ηρώων Πολυτεχνείου 9, 15780 Ζωγράφου

    www.kallipos.gr

  • Περιεχόμενα

    Πρόλογος ix

    1 Γλώσσες και Υπολογισμοί 11.1 Συμβολοσειρές . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Γλώσσες και πράξεις γλωσσών . . . . . . . . . . . . . . . . . . 7

    1.2.1 Ορισμός γλωσσών . . . . . . . . . . . . . . . . . . . . 81.2.2 Πράξεις μεταξύ γλωσσών . . . . . . . . . . . . . . . . . 91.2.3 Παραγωγή και αναγνώριση γλωσσών στη Θεωρία Υπο-

    λογισμού . . . . . . . . . . . . . . . . . . . . . . . . . . 111.3 Κλάσεις γλωσσών . . . . . . . . . . . . . . . . . . . . . . . . . 13

    1.3.1 Κλάσεις γλωσσών ως προς τις μηχανές για την ανα-γνώρισή τους . . . . . . . . . . . . . . . . . . . . . . . 13

    1.3.2 Κλάσεις γλωσσών ως προς το βαθμό αποδοτικότηταςτης διαδικασίας απόφασης . . . . . . . . . . . . . . . . . 25

    1.4 Κατάταξη γλωσσών . . . . . . . . . . . . . . . . . . . . . . . . 261.5 Θέση των Church και Turing . . . . . . . . . . . . . . . . . . 281.6 Ντεντερμινισμός και μη ντεντερμινισμός . . . . . . . . . . . . . 311.7 Επεκτάσεις των κλασικών μοντέλων υπολογισμού και εφαρμογές 33

    1.7.1 Συστήματα μεταβάσεων για επαλήθευση με έλεγχο μον-τέλων (model checking) . . . . . . . . . . . . . . . . . 33

    1.7.2 Χρονισμένα και υβριδικά αυτόματα . . . . . . . . . . . . 391.8 Κριτήρια αξιολόγησης . . . . . . . . . . . . . . . . . . . . . . . 48Βιβλιογραφία - Αναφορές . . . . . . . . . . . . . . . . . . . . . . . . 48

    2 Κανονικές Γλώσσες & Πεπερασμένα Αυτόματα 512.1 Ντεντερμινιστικά Πεπερασμένα Αυτόματα (ΝΠΑ) . . . . . . . . 522.2 Μη ντεντερμινιστικά Πεπερασμένα Αυτόματα (ΜΝΠΑ) . . . . . 582.3 Ισοδυναμία ΜΝΠΑ και ΝΠΑ . . . . . . . . . . . . . . . . . . . 622.4 Ιδιότητες Κλειστότητας Κανονικών Γλωσσών . . . . . . . . . . 68

    iii

  • iv ΠΕΡΙΕΧΟΜΕΝΑ

    2.5 Κανονικές εκφράσεις . . . . . . . . . . . . . . . . . . . . . . . 752.6 Επεκτάσεις Πεπερασμένων Αυτομάτων . . . . . . . . . . . . . . 87

    2.6.1 Μετατροπείς Πεπερασμένων Καταστάσεων . . . . . . . 872.6.2 Αυτόματα Büchi για συμβολοσειρές άπειρου μήκους . . 91

    2.7 Εφαρμογές . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942.7.1 ΠΑ για τη σχεδίαση κυκλωμάτων με λογικές πύλες . . . 942.7.2 Πρωτόκολλα επικοινωνίας: το TCP ως ΝΠΑ . . . . . . 101

    2.8 Κριτήρια αξιολόγησης . . . . . . . . . . . . . . . . . . . . . . . 1052.9 Βιντεοδιαλέξεις . . . . . . . . . . . . . . . . . . . . . . . . . . 1072.10 Διαδραστικό τεστ . . . . . . . . . . . . . . . . . . . . . . . . . 108Βιβλιογραφία - Αναφορές . . . . . . . . . . . . . . . . . . . . . . . . 108

    3 Ελαχιστοποίηση και Μη Κανονικές Γλώσσες 1093.1 Ελάχιστα ΠΑ . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

    3.1.1 Ελάχιστο ΝΠΑ για μια γλώσσα . . . . . . . . . . . . . 1103.1.2 Ελαχιστοποίηση ενός ΝΠΑ . . . . . . . . . . . . . . . . 1173.1.3 Εφαρμογές . . . . . . . . . . . . . . . . . . . . . . . . . 120

    3.2 Λήμμα της ΄Αντλησης και Μη Κανονικές Γλώσσες . . . . . . . 1223.3 Αποφασισιμότητα προβλημάτων & αλγόριθμοι ΠΑ . . . . . . . 1273.4 Βιντεοδιαλέξεις . . . . . . . . . . . . . . . . . . . . . . . . . . 1323.5 Διαδραστικό τεστ . . . . . . . . . . . . . . . . . . . . . . . . . 133Βιβλιογραφία - Αναφορές . . . . . . . . . . . . . . . . . . . . . . . . 133

    4 Γλώσσες & Γραμματικές Χωρίς Συμφραζόμενα 1354.1 Γραμματικές Χωρίς Συμφραζόμενα . . . . . . . . . . . . . . . . 1364.2 Παραγωγές και Συντακτικά Δέντρα . . . . . . . . . . . . . . . 1444.3 Διφορούμενες Γραμματικές . . . . . . . . . . . . . . . . . . . . 1464.4 Κανονική Μορφή Chomsky . . . . . . . . . . . . . . . . . . . . 1544.5 Εφαρμογές . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

    4.5.1 Σύνταξη Γλωσσών Προγραμματισμού . . . . . . . . . . 1624.5.2 Στοχαστικές Γραμματικές Χωρίς Συμφραζόμενα . . . . 163

    4.6 Βιντεοδιαλέξεις . . . . . . . . . . . . . . . . . . . . . . . . . . 1644.7 Διαδραστικό τεστ . . . . . . . . . . . . . . . . . . . . . . . . . 164Βιβλιογραφία - Αναφορές . . . . . . . . . . . . . . . . . . . . . . . . 164

    5 Αυτόματα Στοίβας και Γλώσσες που δεν είναι Χωρίς Συμ-φραζόμενα 1675.1 Αυτόματα Στοίβας (ΑΣ) . . . . . . . . . . . . . . . . . . . . . 1685.2 Ισοδυναμία ΓΧΣ και ΑΣ . . . . . . . . . . . . . . . . . . . . . 1685.3 Ιδιότητες Κλειστότητας Γλωσσών Χωρίς Συμφραζόμενα . . . . 168

  • ΠΕΡΙΕΧΟΜΕΝΑ v

    5.4 Λήμμα ΄Αντλησης για Γλώσσες Χωρίς Συμφραζόμενα . . . . . . 1685.5 Ντετερμινιστικά και Μη Ντετερμινιστικά ΑΣ . . . . . . . . . . 1685.6 Συντακτική Ανάλυση Γλωσσών Χωρίς Συμφραζόμενα . . . . . 1685.7 Αλγόριθμοι για Γλώσσες Χωρίς Συμφραζόμενα . . . . . . . . . 1685.8 Εφαρμογές . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1685.9 Κριτήρια αξιολόγησης . . . . . . . . . . . . . . . . . . . . . . . 1685.10 Βιντεοδιαλέξεις . . . . . . . . . . . . . . . . . . . . . . . . . . 1685.11 Διαδραστικό τεστ . . . . . . . . . . . . . . . . . . . . . . . . . 168Βιβλιογραφία - Αναφορές . . . . . . . . . . . . . . . . . . . . . . . . 169

    6 Μηχανές Turing 1716.1 Ορισμός Μηχανών Turing (ΜΤ) . . . . . . . . . . . . . . . . . 172

    6.1.1 ΄Ενας συνθετικός συμβολισμός για ΜΤ . . . . . . . . . 1796.2 Υπολογισμοί με ΜΤ . . . . . . . . . . . . . . . . . . . . . . . . 184

    6.2.1 ΜΤ ως μηχανές αναγνώρισης γλωσσών . . . . . . . . . 1846.2.2 Υπολογισμός συναρτήσεων με ΜΤ . . . . . . . . . . . . 186

    6.3 Πολλές Ταινίες & Μη Ντετερμινισμός . . . . . . . . . . . . . . 1896.3.1 Πολλές ταινίες . . . . . . . . . . . . . . . . . . . . . . . 1896.3.2 Μη ντετερμινισμός . . . . . . . . . . . . . . . . . . . . 192

    6.4 Προσομοίωση Υπολογιστή με ΜΤ . . . . . . . . . . . . . . . . 1986.5 Εναλλακτικοί ορισμοί ΜΤ . . . . . . . . . . . . . . . . . . . . 200

    6.5.1 ΜΤ με ταινία άπειρου μήκους προς μία κατεύθυνση . . . 2016.5.2 Ο ρόλος της στοίβας και της ταινίας . . . . . . . . . . . 203

    6.6 Γενική ΜΤ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2066.6.1 Κωδικοποίηση ΜΤ ως συμβολοσειρά . . . . . . . . . . . 2066.6.2 Η Γενική ΜΤ . . . . . . . . . . . . . . . . . . . . . . . 208

    6.7 Διαδραστικό τεστ . . . . . . . . . . . . . . . . . . . . . . . . . 211Βιβλιογραφία - Αναφορές . . . . . . . . . . . . . . . . . . . . . . . . 211

    7 Επιλυσιμότητα- Μη επιλυσιμότητα 2137.1 Το Πρόβλημα του Τερματισμού . . . . . . . . . . . . . . . . . . 2147.2 Αποφασίσιμα και Μη αποφασίσιμα Προβλήματα . . . . . . . . . 216

    7.2.1 Απαρίθμηση μιας γλώσσας . . . . . . . . . . . . . . . . 2207.3 Αναγωγές . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2237.4 (Μη) Αποφασίσιμα Προβλήματα για ΜΤ και Γλώσσες . . . . . 226

    7.4.1 (Μη) Αποφασίσιμα Προβλήματα για ΜΤ . . . . . . . . . 2267.4.2 Μη Αποφασισιμότητα γλωσσών που δεν αναφέρονται ρη-

    τά σε ΜΤ . . . . . . . . . . . . . . . . . . . . . . . . . 2287.5 Το Θεώρημα του Rice . . . . . . . . . . . . . . . . . . . . . . 233

  • vi ΠΕΡΙΕΧΟΜΕΝΑ

    7.6 Εφαρμογές . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2357.6.1 Μη Αποφασίσιμα Προβλήματα για Προγράμματα . . . . 2357.6.2 Λογικές θεωρίες . . . . . . . . . . . . . . . . . . . . . . 236

    Βιβλιογραφία - Αναφορές . . . . . . . . . . . . . . . . . . . . . . . . 240

    8 Υπολογίσιμες Συναρτήσεις 2438.1 Ορισμός Υπολογίσιμων Συναρτήσεων . . . . . . . . . . . . . . 2438.2 Θεωρία Αναδρομικών Συναρτήσεων . . . . . . . . . . . . . . . 249

    8.2.1 Στοιχειώδεις αναδρομικές συναρτήσεις . . . . . . . . . . 2508.2.2 µ-αναδρομικές συναρτήσεις . . . . . . . . . . . . . . . . 252

    8.3 Θεώρημα Αναδρομής/Σταθερού Σημείου . . . . . . . . . . . . . 2548.4 Εφαρμογές . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259Βιβλιογραφία - Αναφορές . . . . . . . . . . . . . . . . . . . . . . . . 259

    9 Υπολογιστική Πολυπλοκότητα 2619.1 Υπολογιστική πολυπλοκότητα προβλημάτων . . . . . . . . . . . 2629.2 Η κλάση πολυπλοκότητας P . . . . . . . . . . . . . . . . . . . 2659.3 Η κλάση πολυπλοκότητας NP . . . . . . . . . . . . . . . . . . 2689.4 Κλάσεις Χωρικής Πολυπλοκότητας . . . . . . . . . . . . . . . . 278Βιβλιογραφία - Αναφορές . . . . . . . . . . . . . . . . . . . . . . . . 278

    10 NP -πληρότητα 27910.1 Αναγωγές πολυωνυμικού χρόνου . . . . . . . . . . . . . . . . . 28010.2 NP -πληρότητα . . . . . . . . . . . . . . . . . . . . . . . . . . 283Βιβλιογραφία - Αναφορές . . . . . . . . . . . . . . . . . . . . . . . . 285

    ΠΑΡΑΡΤΗΜΑ 287

    I Μαθηματικό υπόβαθρο 289I.1 Σύνολα . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289I.2 Σχέσεις . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289I.3 Συναρτήσεις . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289I.4 Κλειστότητα . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289I.5 Τεχνικές απόδειξης . . . . . . . . . . . . . . . . . . . . . . . . 289

    II Προσομοίωση με το JFLAP 291II.1 Εγκατάσταση . . . . . . . . . . . . . . . . . . . . . . . . . . . 291II.2 Διεπαφή χρήσης . . . . . . . . . . . . . . . . . . . . . . . . . . 291II.3 Ορισμός γλωσσών και μηχανών . . . . . . . . . . . . . . . . . 291

  • Πρόλογος

    Η Θεωρία Υπολογισμού αναπτύχθηκε για να μελετηθούν θεμελιώδη ζητήματασχετικά με την έννοια του υπολογισμού και τις δυνατότητες των υπολογιστικώνμας μηχανών. Ο υπολογισμός είναι μία διεργασία, που εκτελείται σε ένα κλειστόσύστημα που το ονομάζουμε υπολογιστή. Παραδείγματα τέτοιων συστημάτωνείναι οι ψηφιακοί μας υπολογιστές, καθώς επίσης και μηχανικοί υπολογιστέςόπως ο μηχανισμός των Αντικυθήρων και η μηχανή Babbage, οι κβαντικοίυπολογιστές, οι μοριακοί υπολογιστές κ.ά. Ποιοι υπολογισμοί είναι πραγματο-ποιήσιμοι και ποιοι υπολογισμοί είναι αδύνατοι; Σήμερα γνωρίζουμε ότι κανέναςηλεκτρονικός υπολογιστής δεν μπορεί να αποφασίσει το αν ένα πρόγραμμα τερ-ματίζει σε πεπερασμένο χρόνο για μία είσοδο. Γιατί συμβαίνει αυτό και γιατίπολλά προβλήματα, όπως το συγκεκριμένο, δεν επιλύονται με τους ηλεκτρονι-κούς υπολογιστές; Πώς μπορούμε να ξέρουμε αν ένα δοθέν πρόβλημα μπορείνα επιλυθεί και αν αυτό μπορεί να γίνει επαρκώς γρήγορα; Σ΄ ένα άλλο επίπεδο,μελετώντας τις «πρακτικές πτυχές» της υπολογισιμότητας, ενδιαφερόμαστε νααπαντήσουμε στο ερώτημα: «Πόσος χρόνος και χώρος χρειάζεται για τον υ-πολογισμό μιας υπολογίσιμης συνάρτησης»; Οι υπολογίσιμες συναρτήσεις συμ-περιλαμβάνουν όλες τις συναρτήσεις στο σύνολο των φυσικών αριθμών, πουμπορούν να υπολογιστούν σ΄ έναν ιδεατό κόσμο, όπου ο διαθέσιμος υπολογι-στικός χρόνος και χώρος είναι απεριόριστος (στην πραγματικότητα δεν ισχύεικάτι τέτοιο).

    Για να απαντηθούν τα παραπάνω ερωτήματα, οι επιστήμονες εμπνεύστη-καν αφαιρετικά μοντέλα υπολογισμού, όπως οι αναδρομικές συναρτήσεις, ολογισμός-λ, οι μηχανές Turing και οι μηχανές πεπερασμένων καταστάσεων.Αυτά τα μοντέλα υπολογισμού ορίζονται με μία μαθηματική αυστηρότητα, πουείναι αναγκαία για την απόδειξη αποτελεσμάτων πάνω σε ερωτήματα όπως αυ-τά που αναφέραμε. Η εξέλιξη των παλαιών και των πιο πρόσφατων μοντέλωνυπολογισμού πάντα λαμβάνει υπόψη τις ανάγκες των χρηστών των υπολογιστι-κών συστημάτων και τις νέες δυνατότητες των υπολογιστικών μηχανών. ΄Ενανέο μοντέλο υπολογισμού, ή μία επέκταση σε κάποιο ήδη υπάρχον, αντικατο-πτρίζεται συνήθως σε μία νέα οικογένεια γλωσσών προγραμματισμού και σε νέα

    ix

  • x ΠΡΟΛΟΓΟΣ

    υποδείγματα ανάπτυξης λογισμικού. Γι΄ αυτό το λόγο, η κατανόηση των παραδο-σιακών και των αναδυόμενων μοντέλων υπολογισμού διευκολύνει τη χρήση τωνγλωσσών προγραμματισμού και των εργαλείων ανάπτυξης λογισμικού, μας δίνειπληροφορία για τη χρήση της κατάλληλης γλώσσας για μία συγκεκριμένη εφαρ-μογή και είναι απαραίτητη για τη σχεδίαση νέων γλωσσών προγραμματισμού.Τα διάφορα μοντέλα υπολογισμού είναι επίσης γνωστά και ως τυπικές γλώσ-σες. Μία γλώσσα είναι ένα σύνολο συμβολοσειρών. Θα επικεντρωθούμε σταμοντέλα υπολογισμού, που επεξεργάζονται συμβολοσειρές και είναι σε θέση νααναγνωρίσουν αν αυτές ανήκουν στη γλώσσα που αναπαριστούν. Τα μοντέλααυτά είναι γνωστά στη διεθνή βιβλιογραφία με την ελληνική λέξη «αυτόματα».

    Ο ΄Ηρωνας από την Αλεξάνδρεια (10-70 μ.Χ.) ήταν ο πρώτος που χρησιμο-ποίησε στα έργα του Αυτοματοποιητική και Πνευματικά τον όρο αυτόματα, γιανα περιγράψει μηχανές που εκτελούσαν προκαθορισμένες κινήσεις ως συνέπειαμεταβολών στο περιβάλλον (είσοδος). Υπάρχουν πολλά στοιχεία που μαρτυ-ρούν ότι οι έννοιες της υπολογισιμότητας και των υπολογίσιμων συναρτήσεωνήταν γνωστές από τα αρχαία χρόνια. ΄Οχι μόνο οι ΄Ελληνες, αλλά και οι αρχαίοιΑιγύπτιοι είχαν μία καλή κατανόηση των διαφόρων «μεθόδων» υπολογισμού.Ο Πέρσης μαθηματικός Αλ Χουαρίζμι κατά το 825 μ.Χ. συνέγραψε βιβλίο υπότον τίτλο Υπολογισμός με Ινδικούς Αριθμούς, που περιλάμβανε την περιγραφήδιαφόρων διαδικασιών, που σήμερα θα αποκαλούσαμε αλγορίθμους. Στο όνοματου συγκεκριμένου μαθηματικού φαίνεται ότι αποδίδεται η προέλευση της λέξης«αλγόριθμος». ΄Οταν το βιβλίο του μεταφράστηκε στα Λατινικά, ο τίτλος τουμεταγράφηκε σε Algoritmi de Numero Indorum. Η λέξη «αλγόριθμος» αρ-γότερα χρησιμοποιήθηκε για να περιγράψει την οικογένεια των υπολογιστικώνδιαδικασιών, που περιγράφονται στο βιβλίο. Συνοπτικά, ένας αλγόριθμος είναι:

    • μία πεπερασμένη περιγραφή ενός υπολογισμού με όρους καλώς ορισμένωνστοιχειωδών λειτουργιών (ή εντολών)

    • μία ντεντερμινιστική διαδικασία, τέτοια δηλαδή ώστε το επόμενο βήμααυτής - αν υπάρχει - έχει οριστεί μοναδικά

    • μία μέθοδος υπολογισμού που πάντα παράγει ένα αποτέλεσμα, ανεξάρτητααπό το ποια είναι η είσοδος (δηλαδή ο υπολογισμός που περιγράφεται απόέναν αλγόριθμο τερματίζει σε όλες τις περιπτώσεις)

    Η σύγχρονη Θεωρία Υπολογισμού θεμελιώθηκε πάνω σε ερευνητικές ερ-γασίες από τις αρχές του εικοστού αιώνα, που είχαν στόχο την «τυπική περι-γραφή» της έννοιας του αλγορίθμου χωρίς να γίνεται αναφορά σε συγκεκριμένηγλώσσα προγραμματισμού ή υπολογιστική συσκευή με φυσική υπόσταση. ΄Εναμοντέλο υπολογισμού περιγράφεται αφαιρετικά σε ότι αφορά τις λεπτομέρειες

    http://el.wikipedia.org/wiki/%CE%89%CF%81%CF%89%CE%BDhttp://el.wikipedia.org/wiki/%CE%91%CE%BB_%CE%A7%CE%BF%CF%85%CE%B1%CF%81%CE%AF%CE%B6%CE%BC%CE%B9

  • xi

    των υλικών της συσκευής, που χρησιμοποιείται στους υπολογισμούς, είτε αυτήείναι ένας άβακας, είτε μολύβι και χαρτί, ή ακόμη η γλώσσα προγραμματισμούκαι ο επεξεργαστής της προτίμησής μας.

    Είναι ίσως παράδοξο ότι το πρώτο σύγχρονο μοντέλο υπολογισμού πουπροτάθηκε είναι εκφραστικά πιο ισχυρό από όλα τα άλλα. ΄Ηταν το 1936, ότανο Alan Turing ευρισκόμενος στο Πανεπιστήμιο Princeton εισήγαγε ένα θε-ωρητικό μοντέλο μηχανής, που η πραγματική του σημασία εκτιμήθηκε πολλάχρόνια αργότερα. Πρόκειται για τα αυτόματα που είναι γνωστά ως Μηχανέςτου Turing και έχουν αποδειχθεί ως το μέχρι σήμερα πιο εκφραστικό μοντέλο,που μπορεί να αναπαραστήσει τον οποιοδήποτε υπολογισμό μιας υπολογιστικήςμηχανής. Για τα προβλήματα που αποδεικνύεται ότι δεν επιλύονται από υπολο-γισμό Μηχανής Turing δεν υπάρχει υπολογιστική μηχανή (αλγόριθμος), πουνα μπορεί να τα επιλύσει.

    Η κλάση των συναρτήσεων που υπολογίζονται από τις Μηχανές Turingταυτίζεται με την κλάση των συναρτήσεων, που υπολογίζεται από δύο άλλαεκφραστικά ισοδύναμα μοντέλα υπολογισμού:

    • το λογισμό-λ, που προτάθηκε από τον Alonzo Church με στόχο να πα-ρέχει μία μαθηματική θεμελίωση, που θα στηρίζεται στην έννοια της συ-νάρτησης

    • τη θεωρία των αναδρομικών συναρτήσεων, που αρχικά θεμελιώθηκε απότον Kurt Gödel και στη συνέχεια αναπτύχθηκε από τον Stephen Kleene

    Καθένα από τα προαναφερόμενα μοντέλα υπολογισμού οδήγησε στην ανάπτυ-ξη ενός νέου προγραμματιστικού υποδείγματος, αρχικά του αλγοριθμικού προ-γραμματισμού (imperative programming) και στη συνέχεια του συναρτησιακο-ύ (functional programming) και του αλγεβρικού προγραμματισμού (algebraicprogramming). Η αρχή που είναι ευρέως γνωστή ως «Θέση του Church» μαςλέει ότι η κλάση των υπολογίσιμων συναρτήσεων στο σύνολο των ακεραίων,τελικά δεν διαφέρει και είναι η ίδια, για όλα τα ακολουθιακά μοντέλα υπο-λογισμού, που ικανοποιούν τα βασικά αξιώματα του ντεντερμινισμού και τηςεκτέλεσης των στοιχειωδών υπολογιστικών βημάτων σε πεπερασμένο χρόνο.Αυτή η κλάση είναι το σύνολο των μερικών αναδρομικών συναρτήσεων.

    Σήμερα λέμε ότι μία γλώσσα προγραμματισμού είναι Turing-πλήρης, ανσ΄ αυτή μπορεί να γραφεί η οποιαδήποτε υπολογίσιμη συνάρτηση. Μ΄ αυτήτην έννοια, όλες οι γλώσσες προγραμματισμού γενικού σκοπού σήμερα είναιπλήρεις. Η Turing-πληρότητα συνήθως αποδεικνύεται μέσω μιας κωδικοποίη-σης στη γλώσσα προγραμματισμού ενός τυπικά ορισμένου καθολικού υπολογι-στικού μοντέλου.

    http://el.wikipedia.org/wiki/%CE%86%CE%BB%CE%B1%CE%BD_%CE%A4%CE%BF%CF%8D%CF%81%CE%B9%CE%BD%CE%B3%CE%BAhttp://el.wikipedia.org/wiki/%CE%9C%CE%B7%CF%87%CE%B1%CE%BD%CE%AE_%CE%A4%CE%BF%CF%8D%CF%81%CE%B9%CE%BD%CE%B3%CE%BAhttp://el.wikipedia.org/wiki/%CE%9C%CE%B7%CF%87%CE%B1%CE%BD%CE%AE_%CE%A4%CE%BF%CF%8D%CF%81%CE%B9%CE%BD%CE%B3%CE%BAhttp://el.wikipedia.org/wiki/%CE%9B%CE%BF%CE%B3%CE%B9%CF%83%CE%BC%CF%8C%CF%82_%CE%BB%CE%AC%CE%BC%CE%B4%CE%B1 http://el.wikipedia.org/wiki/%CE%9A%CE%BF%CF%85%CF%81%CF%84_%CE%93%CE%BA%CE%AD%CE%BD%CF%84%CE%B5%CE%BB http://el.wikipedia.org/wiki/%CE%A3%CF%84%CE%AF%CE%B2%CE%B5%CE%BD_%CE%9A%CE%BB%CE%AD%CE%B9%CE%BD%CE%B9

  • xii ΠΡΟΛΟΓΟΣ

    Δύο άλλα πολύ σημαντικά μοντέλα υπολογισμού δημιουργήθηκαν σχεδόνδύο δεκαετίες μετά από την εμφάνιση των Μηχανών Turing, για να καλύψουνυπαρκτές πρακτικές ανάγκες: τα Πεπεραμένα Αυτόματα ή αλλιώς ΜηχανέςΠεπερασμένων Καταστάσεων και αργότερα, τα Αυτόματα Στοίβας. Οι Μη-χανές Πεπερασμένων Καταστάσεων εισήχθησαν από τους νευροφυσιολόγουςMcCulloch και Walter Pitts το 1943, για να αναπαραστήσουν τη διαδικασίατης νευρικής δραστηριότητας. Οι μηχανές αυτές έχουν καθορισμένη δυνατότη-τα αποθήκευσης πληροφορίας (σε αντίθεση με τις Μηχανές Turing, που δενέχουν περιορισμούς αποθήκευσης) και οι υπολογισμοί τους τερματίζουν πάντα(σε αντίθεση επίσης με τις Μηχανές Turing) με την αποδοχή ή την απόρριψημιας εισόδου ως στοιχείο της γλώσσας, που αναπαριστούν. Οι εφαρμογές τουςείναι πολλές και περιλαμβάνουν μεταξύ άλλων τη σχεδίαση και την ανάλυσητης συμπεριφοράς συστημάτων όπως οι φωτεινοί σηματοδότες, τις αυτόματεςμηχανές πώλησης, τα ηλεκτρονικά παιχνίδια, τις μονάδες ελέγχου των CPUs,καθώς επίσης την ανάλυση κειμένου, την ανάλυση πρωτοκόλλων δικτύων καιτην επεξεργασία φυσικής γλώσσας.

    Η Θεωρία Υπολογισμού όμως εξελίσσεται συνεχώς, ως αποτέλεσμα της α-νάγκης να κατανοήσουμε νέες μορφές υπολογισμού, που είναι πλέον διάχυτεςστην καθημερινότητά μας. Αναφέρουμε ενδεικτικά τα μοντέλα υπολογισμού αν-τικειμένων, που είναι αντίστοιχα με το λογισμού-λ, όμως με αντικείμενα αντί γιασυναρτήσεις, τα μοντέλα υπολογισμού με ταυτοχρονισμό, όπως τα ΣυστήματαΜεταβάσεων με Επιγραφές (Labeled Transition Systems), τα μοντέλα υπο-λογισμού για συστήματα, που συνδυάζουν συνεχή και διακριτή συμπεριφορά(υβριδικά συστήματα), καθώς επίσης και τα μοντέλα κβαντικού υπολογισμού,όπως και τα μοντέλα για φυσικούς υπολογισμούς (natural computing), που α-ναφέρονται σε φυσικά συστήματα, συμπεριλαμβανομένων των μηχανισμών πουχαρακτηρίζουν ζώντες οργανισμούς.

    Το ηλεκτρονικό βιβλίο Θεωρία Υπολογισμού και Εφαρμογές είναι μία πρω-τότυπη παρουσίαση των βασικών αποτελεσμάτων της Θεωρίας Υπολογισμούεμπλουτισμένη με πλήθος εφαρμογών από διάφορα πεδία, προσομοιώσεις, κρι-τήρια αξιολόγησης, καθώς και εκτεταμένο πολυμεσικό και διαδραστικό περιε-χόμενο. Το αναγνωστικό κοινό στο οποίο απευθύνεται είναι κατά βάση οιφοιτητές προπτυχιακών προγραμμάτων σπουδών Πληροφορικής και Ηλεκτρο-λόγων Μηχανικών. Σχεδόν στο σύνολό τους αυτά τα προγράμματα σπουδών,καθώς επίσης και τα προγράμματα κάποιων άλλων τμημάτων, περιλαμβάνουντη διδασκαλία της διεθνώς καθιερωμένης ύλης της Θεωρίας Υπολογισμού σεομώνυμο μάθημα ή σε μάθημα με τον πιο γενικό τίτλο «Θεωρητική Πληροφο-ρική» ή τίτλο που συνδυάζει τους όρους «Αυτόματα» και «Γλώσσες».

    Το ηλεκτρονικό βιβλίο Θεωρία Υπολογισμού και Εφαρμογές είναι πλήρεςως προς την καθιερωμένη ύλη του αντικειμένου, ενώ ταυτόχρονα παρουσιάζει ε-

    http://el.wikipedia.org/wiki/%CE%9D%CF%84%CE%B5%CF%84%CE%B5%CF%81%CE%BC%CE%B9%CE%BD%CE%B9%CF%83%CF%84%CE%B9%CE%BA%CF%8C_%CF%80%CE%B5%CF%80%CE%B5%CF%81%CE%B1%CF%83%CE%BC%CE%AD%CE%BD%CE%BF_%CE%B1%CF%85%CF%84%CF%8C%CE%BC%CE%B1%CF%84%CE%BF

  • xiii

    φαρμογές, που δεν περιορίζονται στην περιοχή της επιστήμης των υπολογιστών.Οι προσομοιώσεις, η ποικιλία των κριτηρίων αξιολόγησης, το πολυμεσικό υλι-κό και το διαδραστικό περιεχόμενο αποσκοπούν στην ανάπτυξη της κριτικήςσκέψης, στην κινητροποίηση και στην αυτενέργεια των φοιτητών, για την εμ-βάθυνση στην ύλη και την κατανόησή της. Οι διδακτικοί στόχοι είναι:

    1. Η εξοικείωση των φοιτητών με τις θεμελιώσεις και τις αρχές της επι-στήμης των υπολογιστών.

    2. Η αφομοίωση ύλης πάνω στην οποία στηρίζονται άλλα αντικείμενα, όπωςη Θεωρία Γλωσσών Προγραμματισμού και η Αλγοριθμική, που επίσηςεντάσσονται στα αναφερόμενα προγράμματα σπουδών.

    3. Η καλλιέργεια της ικανότητας των φοιτητών να αναπτύσσουν τυπικά ο-ρισμένους και μαθηματικώς τεκμηριωμένους συλλογισμούς.

    Το απαραίτητο μαθηματικό υπόβαθρο για την ανάπτυξη της ύλης δίνεται στοΠαράρτημα I. Αν ο αναγνώστης είναι ήδη εξοικειωμένος με τη βασική θεωρίασυνόλων, τις σχέσεις, τις συναρτήσεις και τις τεχνικές απόδειξης, τότε μπορείνα προχωρήσει αμέσως στην κυρίως ύλη της Θεωρίας Υπολογισμού. Θα πρέπειόμως πριν απ΄ αυτό να κατανοήσει τη σχέση της κλειστότητας, που απαντάταισε πολλά αποτελέσματα της θεωρίας.

    Σημαντικό ρόλο στην αφομοίωση της ύλης και των λυμένων κριτηρίων α-ξιολόγησης, καθώς και στην επίλυση όσων κριτηρίων προτείνονται για αυτοα-ξιολόγηση, θα παίξει το ανοικτό λογισμικό προσομοίωσης JFLAP. Το JFLAPυλοποιεί όλα τα μοντέλα υπολογισμού του βιβλίου και τους περισσότερους αλ-γορίθμους ανάπτυξης και μετασχηματισμού τους. Δεν είναι απλά και μόνο έναεργαλείο οπτικοποίησης αφαιρετικών εννοιών, αλλά βοηθάει στη γρήγορη δη-μιουργία σύνθετων μηχανών, όπως αυτές που αναφέρονται σε κάποια κριτήριααξιολόγησης. Κάθε τέτοια μηχανή πρέπει να δοκιμαστεί διεξοδικά ως προς τηνορθότητά της. Με το JFLAP, ο χρόνος που απαιτείται για να γίνει αυτό πε-ριορίζεται δραστικά. Στο Παράρτημα II κάνουμε μία εισαγωγή στη χρήση τουJFLAP, αν και αυτή δεν κρύβει δυσκολίες για όποιον είναι εξοικειωμένος μετη διεθνή ορολογία της Θεωρίας Υπολογισμού.

    Το βιβλίο διαρθρώνεται ως εξής. Στο Κεφάλαιο 1 εισάγεται ο τυπικός ορι-σμός των γλωσσών, που χρησιμοποιούνται στην Επιστήμη των Υπολογιστώνκαι των ιδιοτήτων τους. Οι γλώσσες είναι σύνολα συμβολοσειρών και κάθεσυμβολοσειρά εκφράζει έναν υπολογισμό, δηλαδή την εκτέλεση μιας μηχανής,όπως η Μηχανή του Turing. Εξετάζουμε μοντέλα υπολογισμού, που σχετίζον-ται με τη διαδικασία αναγνώρισης συγκεκριμένων γλωσσών και παρουσιάζουμεεπίσης τη Θέση των Church και Turing για τον τυπικό ορισμό αυτού που σήμε-ρα αντιλαμβανόμαστε ως «μηχανιστικό υπολογισμό» ή αλγόριθμο.

    http://www.jflap.org

  • xiv ΠΡΟΛΟΓΟΣ

    Στο Κεφάλαιο 2 εισάγουμε τα Πεπερασμένα Αυτόματα, που είναι το απλο-ύστερο μοντέλο υπολογισμού από αυτά που θα εξετάσουμε. Αναφερόμαστεεπίσης τις Κανονικές Εκφράσεις, μία εναλλακτική αναπαράσταση κανονικώνγλωσσών, η οποία περιγράφει τον τρόπο που παράγονται οι συμβολοσειρές μιαςγλώσσας.

    Στο Κεφάλαιο 3 αναπτύσσουμε αποτελέσματα για την εύρεση της πιο σύν-τομης και οικονομικής περιγραφής των γλωσσών, που αναπαριστούν τα Πεπε-ρασμένα Αυτόματα. Περιγράφουμε επίσης ένα αποτέλεσμα, που χρησιμοποιείταιγια να δίνουμε απάντηση στο ερώτημα αν μία γλώσσα μπορεί να αναπαρασταθείαπό Πεπερασμένο Αυτόματο ή όχι.

    Στο Κεφάλαιο 4 εισάγουμε μία άλλη οικογένεια γλωσσών, που λέγονταιΓλώσσες Χωρίς Συμφραζόμενα. Για τις γλώσσες αυτές ορίζουμε τυπικά μία α-ναπαράσταση, που λέγεται Γραμματική Χωρίς Συμφραζόμενα και όπως οι κανο-νικές εκφράσεις περιγράφει το πώς παράγονται οι συμβολοσειρές της γλώσσας.

    Στο Κεφάλαιο 5 ορίζουμε και μελετάμε τις ιδιότητες μηχανών αναγνώρισηςγλωσσών χωρίς συμφραζόμενα, που είναι γνωστές ως Αυτόματα Στοίβας. ΤαΑυτόματα Στοίβας παρέχουν το θεωρητικό πλαίσιο για την κατασκευή αλγο-ρίθμων επεξεργασίας γλωσσών χωρίς συμφραζόμενα.

    Στο Κεφάλαιο 6 εισάγουμε τους βασικούς ορισμούς για τις διάφορες χρήσειςτων Μηχανών Turing, όπως για παράδειγμα αποδοχή μιας γλώσσας και τον υ-πολογισμό μιας συνάρτησης. Επίσης αναφερόμαστε σε διάφορες παραλλαγέςτων Μηχανών Turing, που όμως έχουν αποδειχθεί ότι δεν αυξάνουν τις δυνα-τότητες περιγραφής υπολογισμών, που διαθέτουν οι βασικές Μηχανές Turing.

    Στο Κεφάλαιο 7 αποδεικνύουμε ότι υπάρχουν προβλήματα, που δεν επιλύον-ται από κανένα υπολογιστικό μοντέλο από αυτά που εξετάσαμε. Δείχνουμεεπίσης το πώς μπορούμε να αναλύουμε τα διάφορα προβλήματα, για να δείξουμετο αν αυτά είναι επιλύσιμα ή όχι.

    Στο Κεφάλαιο 8 αναφερόμαστε στον υπολογισμό συναρτήσεων με οποιο-δήποτε πεδίο τιμών και αναπτύσσουμε μία θεωρία, που μελετά το τι ακριβώςυπολογίζεται και τι όχι, καθώς και τις ιδιότητες συναρτήσεων διαφορετικώνκλάσεων, ως προς την υπολογισιμότητά τους.

    Στο Κεφάλαιο 9 εστιάζουμε στο γεγονός ότι τα προγράμματα, που σχε-διάζουμε, έχουν συγκεκριμένες απαιτήσεις σε πόρους χρόνου και χώρου. Ε-πομένως μπορεί ένα πρόβλημα να είναι θεωρητικά επιλύσιμο, αλλά «πρακτικά»μη επιλύσιμο, καθώς για μεγάλες εισόδους οι απαιτήσεις του σε πόρους μπορείνα αυξάνονται τόσο γρήγορα, που τελικά να γίνονται μη ρεαλιστικές. Για τολόγο αυτό ορίζουμε ιεραρχίες κλάσεων γλωσσών με βάση το χρόνο ή τον χώρο,που απαιτεί ο καλύτερος γνωστός αλγόριθμος για το κάθε πρόβλημα (κλάσειςπολυπλοκότητας).

    Στο Κεφάλαιο 10 δείχνουμε ότι όλα τα προβλήματα σε μία θεωρητικά ση-

  • xv

    μαντική κλάση πολυπλοκότητας μετασχηματίζονται μέσω αναγωγών σε κάποιαθεμελιώδη προβλήματα πολυπλοκότητας.

    Κλείνοντας τον Πρόλογο θα ήθελα να εκφράσω τις ευχαριστίες μου στηνομάδα υποστήριξης αυτής της συγγραφικής προσπάθειας, χωρίς τη συμβολή τηςοποίας δε θα ήταν δυνατή η ολοκλήρωση του έργου. Την τεχνική επεξεργα-σία του ηλεκτρονικού βιβλίου έκανε η Εμμανουέλα Στάχτιαρη και τη γλωσσικήεπιμέλεια ο Βασίλειος Παππάς. Ως κριτικός αναγνώστης ο συνάδελφος Ιωάν-νης Σταμέλος συνεισέφερε στη βελτίωση της παρουσίασης της ύλης με πολλέςεύστοχες παρατηρήσεις στο αρχικό κείμενο.

    Θεσσαλονίκη, Δεκέμβριος 2015

    Παναγιώτης ΚατσαρόςΕπ. Καθηγητής Α.Π.Θ.

  • xvi ΠΡΟΛΟΓΟΣ

  • Κεφάλαιο 1

    Γλώσσες και Υπολογισμοί

    Σύνοψη

    Θεμελιώδη σημασία σε κάθε υπολογισμό έχει η αναπαράσταση της πληροφορίαςπου επεξεργαζόμαστε. Στην καθημερινή μας ζωή, η πληροφορία που επικοινω-νούμε και επεξεργαζόμαστε διατυπώνεται σε μία φυσική γλώσσα, όπως είναι ταΕλληνικά. Κάθε τέτοια φυσική γλώσσα στηρίζεται σ΄ ένα πεπερασμένο σύνολοβασικών φωνολογικών ενοτήτων για το σχηματισμό λέξεων και προτάσεων. Οιλέξεις ορίζονται ως πεπερασμένες ακολουθίες τέτοιων φωνολογικών ενοτήτων(συλλαβές) και οι προτάσεις σχηματίζονται ως πεπερασμένες ακολουθίες λέξε-ων. Στο γραπτό λόγο, κάθε φυσική γλώσσα χρησιμοποιεί ένα πεπερασμένοσύνολο συμβόλων και οι λέξεις γράφονται ως πεπερασμένες ακολουθίες αυτών.

    Αντίστοιχες προσεγγίσεις έχουν αναπτυχθεί για την αναπαράσταση στοι-χείων άλλων συνόλων. Για παράδειγμα, ένας φυσικός αριθμός αναπαριστάταιως πεπερασμένη ακολουθία ψηφίων του δεκαδικού συστήματος αρίθμησης. Οιυπολογισμοί, όπως και οι φυσικές γλώσσες, επεξεργάζονται πληροφορίες, πουμπορεί να περιλαμβάνουν ακέραιους, γραφήματα, προγράμματα ή άλλες οντότη-τες, που σε όλες τις περιπτώσεις θα πρέπει να αναπαριστώνται σε μία γενικήμορφή. Στην πραγματικότητα οι υπολογισμοί τελικά επεξεργάζονται συμβολο-σειρές, που αναπαριστούν τα αντικείμενα που περιλαμβάνει η πληροφορία.

    Στη Θεωρία Υπολογισμού, κάθε συμβολοσειρά εκφράζει έναν υπολογισμό,δηλαδή την εκτέλεση μιας μηχανής, όπως η Μηχανή του Turing. Αυτό ι-σχύει, επειδή κάθε τυπικά ορισμένη μηχανή ή μοντέλο υπολογισμού εκτελείυπολογισμούς, που εξαρτώνται από το πρόγραμμα, που φορτώνεται και από τηνείσοδο που δέχεται μέσω μιας «ταινίας εισόδου». Στα περισσότερα συστήματααρκεί να εξετάσουμε υπολογισμούς με πεπερασμένες συμβολοσειρές. ΄Απειρεςσε μήκος συμβολοσειρές χρησιμοποιούνται στη μελέτη των υπολογισμών αλ-

    1

  • 2 ΚΕΦΑΛΑΙΟ 1. ΓΛΩΣΣΕΣ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ

    ληλεπιδραστικών συστημάτων (reactive systems), όπως είναι τα λειτουργικάσυστήματα, που υποτίθεται ότι εκτελούνται - τουλάχιστο σε αντιληπτικό καιμαθηματικό επίπεδο - για πάντα. Τέτοιου είδους συμπεριφορές τελικά δε μπο-ρούν να μοντελοποιηθούν σ΄ ένα υψηλό επίπεδο χρησιμοποιώντας αποκλειστικάσυμβολοσειρές πεπερασμένου μήκους.

    Η μελέτη των συμβολοσειρών και των γλωσσών είναι σημαντική για τη θε-ωρία της Επιστήμης των Υπολογιστών. Μετρώντας του χρόνους εκτέλεσης ήτις απαιτήσεις αποθήκευσης των προγραμμάτων ως προς τα μήκη των συμβο-λοσειρών εισόδου τους, μπορούμε να χαρακτηρίσουμε την πολυπλοκότητά τουςσε υπολογιστικό χρόνο και χώρο. Μελετώντας πρότυπα που ακολουθούνταιαπό σύνολα συμβολοσειρών, μπορούμε να ταξινομήσουμε το βαθμό στον οποίοεπιλύονται τα διάφορα προβλήματα.

    Στο κεφάλαιο αυτό επικεντρωνόμαστε στον τυπικό ορισμό των γλωσσώνπου χρησιμοποιούμε στην Επιστήμη των Υπολογιστών και των ιδιοτήτων τους.Εξετάζουμε μοντέλα υπολογισμού, που σχετίζονται με τη διαδικασία αναγνώρι-σης συγκεκριμένων γλωσσών και τελικά παρουσιάζουμε μία κατάταξη των τυ-πικά ορισμένων γλωσσών σε κλάσεις, ανάλογα με το μοντέλο υπολογισμούπου τις αναγνωρίζει. Παρουσιάζουμε επίσης τη Θέση των Church και Turingγια τον τυπικό ορισμό αυτού που σήμερα αντιλαμβανόμαστε ως «μηχανιστικόυπολογισμό» ή αλγόριθμο και εισάγουμε την έννοια του μη ντεντερμινισμού.Το κεφάλαιο κλείνει με μία αναφορά σε επεκτάσεις των κλασικών μοντέλωνυπολογισμού και στις εφαρμογές τους.

    1.1 Συμβολοσειρές

    Οι χαρακτήρες ή αλλιώς τα σύμβολα των συμβολοσειρών είναι πάντα στοιχείαενός πεπερασμένου, μη κενού διατεταγμένου συνόλου συμβόλων, που το λέμεαλφάβητο.

    Παράδειγμα 1.1 (Αλφάβητα γλωσσών)Παρακάτω δίνουμε παραδείγματα γνωστών συνόλων, που χρησιμοποιούνται ωςαλφάβητα:

    • το Ελληνικό αλφάβητο {α, β, . . . , ω}

    • το Λατινικό αλφάβητο {a, b, . . . z}

    • το «δυαδικό» αλφάβητο {0, 1}

  • 1.1. ΣΥΜΒΟΛΟΣΕΙΡΕΣ 3

    Συμβολοσειρά είναι μία πεπερασμένη ακολουθία συμβόλων ενός αλφαβήτου.Μία συμβολοσειρά που αποτελείται από τα σύμβολα a1, a2, . . . , an θα τη γράφου-με με απλή παράθεσή τους ως a1a2 . . . an. Η συμβολοσειρά που έχει μηδένσύμβολα λέγεται κενή συμβολοσειρά και συμβολίζεται με �. Το σύνολοόλων των συμβολοσειρών ενός αλφαβήτου Σ το αναπαριστούμε κατά σύμβασημε Σ?.

    Το μήκος της συμβολοσειράς w = a1a2 . . . an συμβολίζεται με |w| καιείναι n, δηλαδή ίσο με τον αριθμό των συμβόλων της συμβολοσειράς. Γιαοποιοδήποτε σύμβολο c και συμβολοσειρά w, η συνάρτηση #c(w) επιστρέφειτο πόσες φορές εμφανίζεται το σύμβολο c στη w.

    Παράδειγμα 1.2 (Συμβολοσειρές και μήκος συμβολοσειρών)Παραδείγματα συμβολοσειρών από διαφορετικά αλφάβητα:

    Αλφάβητο Σύμβολα αλφαβήτου ΣυμβολοσειρέςΤο Ελληνικό αλφάβητο {α, β, . . . , ω} �, ενα, τριαΤο Λατινικό αλφάβητο {a, b, . . . z} �, one, threeΤο «δυαδικό» αλφάβητο {0, 1} �, 0, 01011

    Για κάποιες από τις παραπάνω συμβλοσειρές έχουμε:

    |�| = 0|τρια| = 4|01011| = 5

    #0(01011) = 2

    Παράθεση δύο συμβολοσειρών u και w είναι η συμβολοσειρά που γράφεταιως uw και σχηματίζεται με απλή παράθεση της ακολουθίας συμβόλων της wαμέσως μετά από τα σύμβολα της u. Σ΄ αυτή την περίπτωση θα έχουμε |uw| =|u|+ |w|.

    Η κενή συμβολοσειρά είναι το ουδέτερο στοιχείο για την παράθεση συμβο-λοσειρών ενός αλφαβήτου Σ, δηλαδή ισχύει

    ∀w ∈ Σ?, w� = �w = w

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

    ∀u, v, w ∈ Σ?, ((uv)w) = (u(vw))

  • 4 ΚΕΦΑΛΑΙΟ 1. ΓΛΩΣΣΕΣ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ

    Επανάληψη wi μιας συμβολοσειράς w για έναν οποιοδήποτε φυσικό αριθμόi είναι η συμβολοσειρά, που ορίζεται επαγωγικά ως εξής:

    w0 = �

    wi+1 = wiw

    ΄Εχουμε για παράδειγμα:

    (01)2 = 0101

    Τέλος, ορίζουμε την αντίστροφη wR μιας συμβολοσειράς w πάλι επαγωγικά,ως εξής:

    Αν |w| = 0 τότε wR = w = �Αν |w| ≥ 1 τότε ∃α ∈ Σ, u ∈ Σ? ώστε w = uα και wR = αuR

    Θεώρημα 1.1 (Παράθεση και αντιστροφή συμβολοσειρών)Για δύο οποιεσδήποτε συμβολοσειρές u και w ισχύει (uw)R = wRuR

    Απόδειξη: Η απόδειξη γίνεται με επαγωγή ως προς |w|.

    Μία συμβολοσειρά u είναι υποσυμβολοσειρά της w αν και μόνο αν η uεμφανίζεται σε συνεχόμενες θέσεις ως ένα μέρος της w. Μία συμβολοσει-ρά u είναι κανονική υποσυμβολοσειρά της w αν και μόνο αν η u είναιυποσυμβολοσειρά της w και συγχρόνως u 6= w. Κάθε συμβολοσειρά είναι υπο-συμβολοσειρά (όχι όμως κανονική υποσυμβολοσειρά) του εαυτού της. Η κενήσυμβολοσειρά � είναι υποσυμβολοσειρά κάθε άλλης συμβολοσειράς.

    Μία συμβολοσειρά u είναι κατάληξη της w αν και μόνο αν ∃v ∈ Σ?, w =vu. Μία συμβολοσειρά u είναι κανονική κατάληξη της w, αν και μόνοαν η u είναι κατάληξη της w και συγχρόνως u 6= w. Η κενή συμβολοσειρά �είναι κατάληξη κάθε άλλης συμβολοσειράς. Από την άλλη, μία συμβολοσειράu είναι πρόθεμα της w αν και μόνο αν ∃v ∈ Σ?, w = uv. Η συμβολοσειράu είναι κανονικό πρόθεμα της w, αν και μόνο αν η u είναι πρόθεμα τηςw και συγχρόνως u 6= w. Η κενή συμβολοσειρά � είναι πρόθεμα κάθε άλληςσυμβολοσειράς.

    Η αναζήτηση πληροφορίας είναι μία από τις πιο σημαντικές επεξεργασίεςκαι στις περισσότερες περιπτώσεις στηρίζεται στην ύπαρξη κάποιας σχέσης,που ορίζει μία διάταξη μεταξύ των οντοτήτων του συνόλου αναζήτησης. Μία

  • 1.1. ΣΥΜΒΟΛΟΣΕΙΡΕΣ 5

    ευρέως χρησιμοποιούμενη σχέση μεταξύ συμβολοσειρών είναι η σύγκρισή τουςαλφαβητικά με το ίδιο κριτήριο, που αυτές διατάσσονται σε κάθε ταξινομημένηλίστα όπως ο τηλεφωνικός κατάλογος. Η συγκεκριμένη σχέση και διάταξη τωνσυμβολοσειρών ορίζεται ως εξής:

    Ορισμός 1.1 (Αλφαβητική διάταξη συμβολοσειρών)Για δύο συμβολοσειρές u και w στο αλφάβητο Σ λέμε ότι η u είναι αλφα-βητικά μικρότερη από τη συμβολοσειρά w στο Σ? ή ισοδύναμα ότι η w είναιαλφαβητικά μεγαλύτερη από την u, αν ισχύει κάποια από τις παρακάτω δύοπεριπτώσεις:

    • η u είναι κανονικό πρόθεμα της w, ή

    • για κάποια v ∈ Σ? και κάποια σύμβολα α, β ∈ Σ τέτοια ώστε το α ναπροηγείται του β στο Σ, η συμβολοσειρά vα είναι πρόθεμα της u και ηvβ να είναι πρόθεμα της w.

    ΄Ενα διατεταγμένο υποσύνολο του Σ? λέμε ότι είναι σε αλφαβητική διάταξη,αν για κάθε δύο συμβολοσειρές u,w, με την u να προηγείται της w μέσα στουποσύνολο, δε συμβαίνει η w να είναι αλφαβητικά μικρότερη από την u στο Σ?.

    Παράδειγμα 1.3 (Αλφαβητική διάταξη)Ας θεωρήσουμε το αλφάβητο Σ = {0, 1}. Η συμβολοσειρά 01 είναι αλφαβητι-κά μικρότερη στο Σ? από τη συμβολοσειρά 01100, επειδή η 01 είναι κανονικόπρόθεμα της 01100. Από την άλλη μεριά, η 01100 είναι αλφαβητικά μικρότερηαπό την 0111, επειδή οι δύο συμβολοσειρές συμφωνούν στα τρία πρώτα σύμ-βολά τους και το τέταρτο σύμβολο της 01100 είναι μικρότερο από το τέταρτοσύμβολο της 0111.Στο σύνολο Σ? = {�, 0, 00, 000, 001, 01, 010, 011, 1, 10, 100, 101, 11, 110,111} των συμβολοσειρών με μήκος όχι μεγαλύτερο του 3 τα στοιχεία τουαπαριθμούνται σε αλφαβητική διάταξη.

    Η αλφαβητική διάταξη είναι ένα επαρκές κριτήριο για πεπερασμένα σύνολα,επειδή σ΄ ένα τέτοιο σύνολο μπορεί τελικά να προσεγγιστεί η κάθε συμβολο-σειρά που περιέχεται σ΄ αυτό. ΄Ομως στην περίπτωση άπειρων συνόλων συμβο-λοσειρών η αλφαβητική ταξινόμηση δεν είναι ικανοποιητική, επειδή μπορεί γιακάποιες συμβολοσειρές ο αριθμός όσων προηγούνται να μην είναι φραγμένος.

    Μία τέτοια περίπτωση είναι για παράδειγμα αυτή της συμβολοσειράς 1 στοαλφαβητικά ταξινομημένο σύνολο {0, 1}?, εκεί δηλαδή που οι συμβολοσειρές

  • 6 ΚΕΦΑΛΑΙΟ 1. ΓΛΩΣΣΕΣ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ

    0, 00, 000, . . . προηγούνται της συμβολοσειράς 1. Το συγκεκριμένο πρόβλη-μα καταδεικνύει την αναγκαιότητα του παρακάτω ορισμού της λεξικογραφικήςδιάταξης των συμβολοσειρών. Με τη συγκεκριμένη διάταξη, ο αριθμός τωνσυμβολοσειρών που προηγούνται μιας δοθείσης συμβολοσειράς είναι πάντα πε-περασμένος.

    Ορισμός 1.2 (Κανονική ή λεξικογραφική διάταξη)Για δύο συμβολοσειρές u και w στο αλφάβητο Σ λέμε ότι η u είναι κανονικά ήλεξικογραφικά μικρότερη από τη συμβολοσειρά w στο Σ? ή ισοδύναμα ότι η wείναι λεξικογραφικά μεγαλύτερη από την u, αν ισχύει κάποια από τις παρακάτωδύο περιπτώσεις:

    • η u έχει μικρότερο μήκος από την w, ή

    • οι u και w έχουν το ίδιο μήκος, αλλά η u είναι αλαφαβητικά μικρότερηαπό την w.

    ΄Ενα διατεταγμένο υποσύνολο του Σ? λέμε ότι είναι διατεταγμένο κανονικά ήλεξικογραφικά, αν για κάθε δύο συμβολοσειρές u,w, με την u να προηγείταιτης w μέσα στο υποσύνολο, δε συμβαίνει η w να είναι κανονικά μικρότερη απότην u στο Σ?.

    Παράδειγμα 1.4 (Κανονική ή λεξικογραφική διάταξη)Ας θεωρήσουμε το αλφάβητο Σ = {0, 1}. Η συμβολοσειρά 11 είναι λεξικογρα-φικά μικρότερη στο Σ? από τη συμβολοσειρά 000, επειδή η 11 έχει μικρότερομήκος από την 000. Από την άλλη μεριά, η 00 είναι λεξικογραφικά μικρότε-ρη από την 11, επειδή οι δύο συμβολοσειρές έχουν ίσο μήκος και η 00 είναιαλφαβητικά μικρότερη από την 11.

    Το σύνολο Σ? = {�, 0, 1, 00, 01, 10, 11, 000, 001, . . .} είναι σε λεξικο-γραφική διάταξη.

    Επιστρέφουμε τώρα στο ζήτημα της αναπαραστάσης της πληροφορίας με βάσητης έννοιες των συμβολοσειρών ως προς ένα αλφάβητο, που ορίσαμε παραπάνω.Κάθε τέτοια αναπαράσταση μπορούμε να την ορίσουμε ως μία αντιστοίχιση αν-τικειμένων σε συμβολοσειρές με βάση κάποιους κανόνες. Τυπικά, μία αναπα-ράσταση ή κωδικοποίηση ενός συνόλου D σ΄ ένα αλφάβητο Σ είναι μίασυνάρτηση f από το D στο 2Σ

    ?, που ικανοποιεί την παρακάτω συνθήκη: για

    δύο οποιαδήποτε στοιχεία e1 και e2 του D, τα f(e1) και f(e2) είναι διακριτά μηκενά σύνολα. Σ΄ αυτή την περίπτωση, κάθε στοιχείο του f(e) θα λέμε ότι είναιμία αναπαράσταση ή κωδικοποίηση του e.

  • 1.2. ΓΛ΄ΩΣΣΕΣ ΚΑΙ ΠΡ΄ΑΞΕΙΣ ΓΛΩΣΣ΄ΩΝ 7

    Παράδειγμα 1.5 (Κωδικοποίηση με συμβολοσειρές)Μία αναπαράσταση των φυσικών αριθμών με βάση το αλφάβητο Σ = {0, 1}μπορεί να είναι η συνάρτηση f1 με f1(0) = {0, 00, 0000, . . .}, f1(1) ={1, 01, 001, 0001, . . .}, f1(2) = {10, 010, 0010, 00010, . . .}, f1(3) = {11,011, 0011, 00011, . . .} κλπ. Εναλλακτικά, μία άλλη αναπαράσταση f2 τωνφυσικών αριθμών με το ίδιο αλφάβητο θα μπορούσε να αντιστοιχεί στον i-οστό φυσικό αριθμό το σύνολο, που αποτελείται από την i-οστή λεξικογραφικάμικρότερη συμβολοσειρά στο Σ?. Σ΄ αυτή την περίπτωση θα είχαμε f2(0) ={�}, f2(1) = {0}, f2(2) = {1}, f2(3) = {00}, f2(4) = {01}, f2(5) ={10} κλπ.

    1.2 Γλώσσες και πράξεις γλωσσών

    Οι συμβολοσειρές είναι ένα μέσο αναπαράστασης της πληροφορίας στο βαθμόόμως που υπάρχει μία συνάρτηση, που παρέχει την ερμηνεία των συμβολοσει-ρών ως προς την πληροφορία, που αυτές αναπαριστούν. Μία ερμηνεία είναιτο αντίστροφο της αντιστοίχισης, που προκύπτει από μία αναπαράσταση, δη-λαδή μία ερμηνεία είναι κάποια συνάρτηση g από το Σ? στο σύνολο D τωναντικειμένων της πληροφορίας, για κάποιο αλφάβητο Σ. Για παράδειγμα, ησυμβολοσειρά 111, ερμηνεύεται ως ο αριθμός εκατόν έντεκα σε αναπαράστασηαριθμού στο δεκαδικό σύστημα ή ως ο αριθμός επτά σε αναπαράσταση αριθμούτου δυαδικού συστήματος. Κατά την επικοινωνία δύο μερών η πληροφορία πουμεταβιβάζεται είναι άρρηκτα δεμένη με την αναπαράσταση και την ερμηνεία της.Η αναπαράστασή της παρέχεται από τον αποστολέα και η ερμηνεία της απότον παραλήπτη. Κατά συνέπεια, από τη σκοπιά των δύο μερών της επικοινω-νίας, μία γλώσσα μπορεί απλά να είναι μία συλλογή συμβολοσειρών, καθώς οισυναρτήσεις αναπαράστασης και ερμηνείας είναι γνωστές στα μέρη.

    Παράδειγμα 1.6 (Γλώσσες που χρησιμοποιούμε)Αναφέρουμε παραδείγματα γλωσσών, που χρησιμοποιούμε στην καθημερινήμας ζωή:

    • Το σύνολο των επιτρεπτών ονομάτων στη γλώσσα προγραμματισμού C.

    • Η γλώσσα των επιτρεπτών αλγεβρικών εκφράσεων, που σχηματίζονται μετο όνομα (μεταβλητής) a, τους δυαδικούς τελεστές + και ? και τη χρήσηπαρενθέσεων. Δύο από τις συμβολοσειρές αυτής της γλώσσας είναι οιa + a ? a και (a + a ? (a + a)).

  • 8 ΚΕΦΑΛΑΙΟ 1. ΓΛΩΣΣΕΣ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ

    • Η γλώσσα των συμβολοσειρών με αριστερές και δεξιές παρενθέσεις σεισορροπημένα ζεύγη. Μερικές συμβολοσειρές αυτής της γλώσσας είναιοι �, ()(()) και (((()))).

    • Το σύνολο των επιτρεπτών προγραμμάτων στη C++.

    1.2.1 Ορισμός γλωσσών

    Μία γλώσσα είναι ένα πεπερασμένο ή άπειρο σύνολο συμβολοσειρών ενόςπεπερασμένου αλφάβητου Σ, δηλαδή κάθε γλώσσα είναι υποσύνολο του Σ?.

    Για τον ορισμό γλωσσών χρησιμοποιούμε διάφορες τεχνικές. Καθώς οιγλώσσες είναι σύνολα ένας τρόπος ορισμού τους είναι η χρήση τεχνικών ορι-σμού συνόλων.

    Παράδειγμα 1.7 (Ορισμός γλώσσας)΄Εστω η γλώσσα L = {w ∈ {0, 1}? : τα 0 προηγούνται όλων των 1}. Οισυμβολοσειρές �, 0, 00, 00111 και 11 ανήκουν στην L. Προσέξτε ότι κάποιεςσυμβολοσειρές ικανοποιούν με τετριμμένο τρόπο την απαίτηση για να ανήκουνστην L. Πιο συγκεκριμένα, αν σε μία συμβολοσειρά δεν υπάρχουν καθόλου 0ή καθόλου 1, τότε δεν υπάρχει τρόπος να παραβιαστεί η απαίτηση και γι΄ αυτότο λόγο οι �, 0, 00 και 11 ικανοποιούν την απαίτηση με τετριμμένο τρόπο καιανήκουν στην L.

    Παράδειγμα 1.8 (Ορισμός γλώσσας)Παρακάτω δίνουμε κάποια παραδείγματα γλωσσών με αλφάβητο το {α, b}.

    • Η κενή γλώσσα ∅.

    • Η πεπερασμένη γλώσσα {�, α, αbb}.

    • Η γλώσσα με τις καρκινικές ή παλίνδρομες συμβολοσειρές του {α, b}?,δηλαδή τις συμβολοσειρές όπως η αbbα, που διαβάζονται με τον ίδιοτρόπο από τα αριστερά προς τα δεξιά και αντίστροφα.

    • {w ∈ {α, b}?,#α(w) > #b(w)}

    • {w ∈ {α, b}?, |w| ≥ 2 και η w αρχίζει και τελειώνει με b}

  • 1.2. ΓΛΩΣΣΕΣ ΚΑΙ ΠΡΑΞΕΙΣ ΓΛΩΣΣΩΝ 9

    Η μικρότερη γλώσσα για οποιοδήποτε αλφάβητο είναι η ∅, που έχει πληθικόαριθμό 0. Η μεγαλύτερη γλώσσα για ένα αλφάβητο Σ είναι η Σ?. Ποιος είναιόμως ο πληθικός αριθμός της Σ?; Αν Σ = ∅, τότε Σ? = {�} και |Σ?| = 1. Γιατην περίπτωση που το Σ είναι μη κενό έχουμε:

    Θεώρημα 1.2 (Πληθικός αριθμός του Σ?)Αν Σ 6= ∅ τότε η Σ? είναι αριθμήσιμα άπειρη.

    Απόδειξη: Τα στοιχεία της Σ? μπορούν να απαριθμηθούν λεξικογραφικά.

    Από το παραπάνω θεώρημα και επειδή κάθε γλώσσα μ΄ ένα αλφάβητο Σ είναιυποσύνολο του Σ? συμπεραίνουμε ότι όλες οι γλώσσες είτε είναι πεπερασμένες,είτε είναι αριθμήσιμα άπειρες.

    Το σύνολο των γλωσσών, που μπορούν να οριστούν για ένα αλφάβητο Σείναι το δυναμοσύνολο 2Σ

    ?, δηλαδή το σύνολο με στοιχεία όλα τα υποσύνολα

    του Σ?. Αν Σ = ∅, τότε Σ? = {�} και το δυναμοσύνολο 2Σ? είναι το {∅, {�}}.Για την περίπτωση που το Σ είναι μη κενό έχουμε:

    Θεώρημα 1.3 (Αριθμός των γλωσσών ενός αλφαβήτου)Αν Σ 6= ∅ τότε το σύνολο των γλωσσών με αλφάβητο Σ είναι μη αριθμήσιμαάπειρο.

    Απόδειξη: Το σύνολο των γλωσσών με αλφάβητο Σ είναι το δυναμοσύνολο2Σ

    ?. . . .

    1.2.2 Πράξεις μεταξύ γλωσσών

    Καθώς οι γλώσσες είναι σύνολα, οι γνωστές πράξεις μεταξύ συνόλων είναι καλάορισμένες πράξεις μεταξύ γλωσσών. Οι πιο χρήσιμες απ΄ αυτές είναι η ένωση, ητομή, η διαφορά και το συμπλήρωμα. Ειδικά για το συμπλήρωμα μιας γλώσσας,αυτό ορίζεται ως προς το σύνολο Σ? όλων των πιθανών συμβολοσειρών με τοαλφάβητο της γλώσσας, εκτός και αν ρητά αναφέρεται κάτι διαφορετικό.

    Η ένωση δύο γλωσσών L1 και L2 συμβολίζεται με L1 ∪ L2 και είναι ηγλώσσα με τις συμβολοσειρές, που ανήκουν στην L1 ή στην L2, δηλαδή η{w,w ∈ L1 ή w ∈ L2}. Η τομή της L1 με την L2 συμβολίζεται με L1 ∩ L2

  • 10 ΚΕΦΑΛΑΙΟ 1. ΓΛΩΣΣΕΣ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ

    και είναι η γλώσσα με όλες τις συμβολοσειρές, που ανήκουν τόσο στην L1 όσοκαι στην L2, δηλαδή η {w,w ∈ L1 και w ∈ L2}.

    Το συμπλήρωμα μιας γλώσσας L με αλφάβητο Σ συμβολίζεται με L̄ καιαναφέρεται στη γλώσσα, που αποτελείται από όλες τις συμβολοσειρές του Σ,που δεν ανήκουν στην L, δηλαδή τη {w,w ∈ Σ? και w 6∈ L}. Η διαφοράδύο γλωσσών L1 και L2 συμβολίζεται με L1−L2 και αναφέρεται στη γλώσσα,που αποτελείται από όλες τις συμβολοσειρές, που ανήκουν στην L1, αλλά δενανήκουν στην L2, δηλαδή την {w,w ∈ L1 και w 6∈ L2}.

    Τρεις ιδιαίτερα σημαντικές πράξεις μεταξύ γλωσσών ορίζονται με τη χρήσηπράξεων μεταξύ συμβολοσειρών, που έχουμε ήδη ορίσει. Η παράθεση δύογλωσσών L1 και L2 με αλφάβητο Σ είναι η γλώσσα:

    L1L2 = {w ∈ Σ? : w = uv για u ∈ L1, v ∈ L2}

    Η παράθεση γλωσσών είναι προσεταιριστική πράξη, δηλαδή για όλες τις γλώσ-σες L1, L2 και L3 ισχύει:

    (L1L2)L3 = L1(L2L3)

    ΄Εστω τώρα η γλώσσα L με αλφάβητο Σ. Η κλειστότητα ή αλλιώς Kleenestar της L είναι η γλώσσα:

    L? = {�} ∪ {w ∈ Σ? : ∃k ≥ 1, w = w1w2 . . . wk για w1, w2, . . . wk ∈ L}

    δηλαδή η L? είναι το σύνολο των συμβολοσειρών, που σχηματίζονται με πα-ράθεση μηδέν ή περισσότερων συμβολοσειρών της L. Αν η L δεν είναι κενήκαι δεν είναι η {�}, τότε η L? σίγουρα περιέχει έναν άπειρο αριθμό συμβολοσει-ρών. Αν L = ∅, τότε L? = {�}, καθώς δεν υπάρχουν συμβολοσειρές, που θαμπορούσαν να παρατεθούν στην �. Αν τώρα L = {�}, τότε η L? είναι επίσης η{�}. Η γλώσσα με συμβολοσειρές, που δίνονται ως παράθεση τουλάχιστο ενόςστοιχείου της L γράφεται ως:

    L+ = LL?

    ΄Εστω πάλι η γλώσσα L με αλφάβητο Σ. Η αντίστροφη της L είναι η γλώσσα:

    LR = {w ∈ Σ? : w = vR για κάποια v ∈ L}

    δηλαδή η LR είναι το σύνολο των συμβολοσειρών, που σχηματίζονται από τηναντιστροφή κάποιας συμβολοσειράς της L.

  • 1.2. ΓΛΩΣΣΕΣ ΚΑΙ ΠΡΑΞΕΙΣ ΓΛΩΣΣΩΝ 11

    1.2.3 Παραγωγή και αναγνώριση γλωσσών στη ΘεωρίαΥπολογισμού

    Καθώς οι γλώσσες είναι σύνολα, από υπολογιστικής άποψης ο ορισμός μιαςγλώσσας μπορεί να είναι:

    • ένας παραγωγός συμβολοσειρών, που περιγράφει το πώς παράγον-ται όλα τα στοιχεία της γλώσσας ή

    • ένας αναγνωριστής συμβολοσειρών, που αποφασίζει αν μία συμ-βολοσειρά ανήκει ή δεν ανήκει στη γλώσσα.

    Στη Θεωρία Υπολογισμού, κάθε πρόβλημα που επιθυμούμε να επιλύσουμε τοδιατυπώνουμε πρώτα χρησιμοποιώντας μία αναπαράσταση με συμβολοσειρές.Τα αποτελέσματα που έχουμε δίνουν απάντηση στο ερώτημα «Ανήκει η w στηγλώσσα L;», που είναι ένα πρόβλημα απόφασης. Το ερώτημα που λογικά προ-κύπτει είναι αν μία θεωρία που περιορίζεται σ΄ αυτού του τύπου τα αποτελέσματαείναι πρακτικά χρήσιμη στη μελέτη πραγματικών υπολογιστικών προβλημάτων.Παρατηρούμε λοιπόν ότι με την κατάλληλη αναπαράσταση, πολλά προβλήματατης καθημερινότητας μπορούν να αναδιατυπωθούν ως πρόβλημα απόφασης τουαν μία συμβολοσειρά ανήκει σε μία γλώσσα ή όχι. Θα δούμε παραδείγματαπροβλημάτων, που εντάσσονται σε δύο κατηγορίες:

    • Προβλήματα που είναι ήδη διατυπωμένα ως προβλήματα απόφασης. Γι΄αυτά, χρειάζεται να βρούμε μία αναπαράσταση της εισόδου τους με συμ-βολοσειρές και στη συνέχεια να ορίσουμε μία γλώσσα, που θα περιέχειακριβώς εκείνο το σύνολο των εισόδων, για τις οποίες η απάντηση στοερώτημα της απόφασης είναι ΝΑΙ.

    • Προβλήματα, που δεν έχουν εξαρχής περιγραφεί ως ερωτήματα απόφα-σης. Γι΄ αυτά, μπορεί να απαιτούνται διαφόρων ειδών αποτελέσματα, πουοδηγούν στην αναδιατύπωση του προβλήματος ως πρόβλημα απόφασης,που στη συνέχεια θα πρέπει να αναπαρασταθεί ως διαδικασία αναγνώρισηςγλώσσας.

    Στα παραδείγματα που ακολουθούν συμβολίζουμε με < X > μία αναπαράστα-ση του αντικειμένου X με συμβολοσειρά. Με το συμβολισμό < X,Y > εκ-φράζουμε την αναπαράσταση δύο αντικειμένων, δηλαδή του X και του Y με μίασυμβολοσειρά.

    Παράδειγμα 1.9 (Αναγνώριση πρώτων αριθμών)Πρόβλημα: δοθέντος ενός μη αρνητικού ακεραίου n είναι αυτός πρώτος; Α-ναζητούμε δηλαδή αν υπάρχει τουλάχιστο ένας θετικός ακέραιος παράγονταςδιαφορετικός του αριθμού αυτού ή της μονάδας.

  • 12 ΚΕΦΑΛΑΙΟ 1. ΓΛΩΣΣΕΣ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ

    Κωδικοποίηση του προβλήματος: αναπαριστούμε κάθε μη αρνητικό ακέραιο ωςσυμβολοσειρά από δυαδικά ψηφία.

    Σ΄ αυτή την περίπτωση, η γλώσσα που αποφασίζεται είναι η:

    Lprime = {w : η w είναι η δυαδική αναπαράσταση ενός πρώτου αριθμού}

    Παράδειγμα 1.10 (Αναζήτηση προτύπου στον παγκόσμιο ιστό)Πρόβλημα: δοθείσης μιας συμβολοσειράς αναζήτησης w και ενός πόρου d τουπαγκόσμιου ιστού ταιριάζει το δεύτερο με το πρώτο; Μ΄ άλλα λόγια, θα έπρεπεμία μηχανή αναζήτησης με είσοδο w να επιστρέφει το d;

    Σ΄ αυτή την περίπτωση, η γλώσσα που αποφασίζεται είναι η:

    LWWW = {< w, d >: το d ταιριάζει στο ερώτημα w}

    Παράδειγμα 1.11 (Το πρόβλημα του τερματισμού)Πρόβλημα: δοθέντος ενός προγράμματος p, που έχει γραφεί στη γλώσσα προ-γραμματισμού C είναι σίγουρο ότι το πρόγραμμα p τερματίζει για όλες τιςεισόδους;

    Σ΄ αυτή την περίπτωση, η γλώσσα που αποφασίζεται είναι η:

    Lhalt = {p : το πρόγραμμα p τερματίζει για όλες τις εισόδους}

    Θα θέλαμε πολύ να υπάρχει ένας αλγόριθμος, που θα μπορούσε να αποφασίσειαν μία συμβολοσειρά - πρόγραμμα - ανήκει στη γλώσσα Lhalt, γιατί έτσι θααποδεικνύαμε την ορθότητα των προγραμμάτων που συντάσσουμε. Δυστυχώςένα θεώρημα της Θεωρίας Υπολογισμού έχει δείξει ότι ένας τέτοιος αλγόριθμοςδε μπορεί να υπάρξει.

    Παράδειγμα 1.12 (Ευθυγράμμιση ακολουθίας πρωτεΐνης)Πρόβλημα Υπολογιστικής Βιολογίας [12]: δοθέντος ενός μέρους f μιας πρω-τεΐνης και ενός μορίου πρωτεΐνης pr, μπορεί το f να είναι μέρος του pr;Κωδικοποίηση του προβλήματος: αναπαριστούμε κάθε μόριο πρωτεΐνης ή ενόςμέρους του ως μία ακολουθία στοιχείων αμινοξέων. Ορίζουμε ένα χαρακτήραγια το καθένα από τα είκοσι πιθανά αμινοξέα. ΄Ετσι, θα μπορούσε για παράδειγμαη συμβολοσειρά AGHTYWDNR να αναπαριστά μέρος κάποιας πρωτεΐνης.

    Σ΄ αυτή την περίπτωση, η γλώσσα που αποφασίζεται είναι η:

  • 1.3. ΚΛ΄ΑΣΕΙΣ ΓΛΩΣΣ΄ΩΝ 13

    Lpr = {< f, p >: το f θα μπορούσε να είναι μέρος του pr}

    Πολλά προβλήματα που δεν είναι διατυπωμένα ως προβλήματα απόφασης μπο-ρούν να μετασχηματιστούν σε τέτοια με μία αναδιατύπωσή τους ως προβλήματααναγνώρισης γλώσσας. Η βασική ιδέα είναι η αναπαράσταση σε μία συμβολο-σειρά τόσο των εισόδων, όσο και των εξόδων του αρχικού προβλήματος. ΄Ετσι,για παράδειγμα, αν για το πρόβλημα Π έχουμε δύο εισόδους i1 και i2 και πα-ράγεται ένα αποτέλεσμα r, τότε μπορούμε να σχηματίσουμε συμβολοσειρές τηςμορφής i1; i2; r. Σ΄ αυτή την περίπτωση, η συμβολοσειρά w = u; v; z θα ανήκειστη γλώσσα L για το πρόβλημα Π, αν και μόνο αν z είναι η συμβολοσειρά πουαναπαριστά το αποτέλεσμα για δύο εισόδους στο πρόβλημα Π, που εκφράζονταιαπό τις συμβολοσειρές x και y.

    Παράδειγμα 1.13 (΄Αθροιση ακεραίων ως πρόβλημα απόφασης)Πρόβλημα: υπολογισμός του αθροίσματος δύο μη αρνητικών ακεραίων.Κωδικοποίηση του προβλήματος: αναπαριστούμε τον κάθε αριθμό ως συμβο-λοσειρά δεκαδικών ψηφίων και μετασχηματίζουμε το αρχικό πρόβλημα σ΄ έναπρόβλημα ελέγχου του αν σε μία τριάδα αριθμών ο τρίτος είναι το άθροισματων δύο πρώτων. ΄Ετσι, κάθε περίπτωση του προβλήματος διατυπώνεται με μίασυμβολοσειρά της μορφής:

    < ακέραιος1 > + < ακέραιος2 >=< ακέραιος3 >

    Τότε, η γλώσσα που αποφασίζεται για το συγκεκριμένο πρόβλημα είναι η:

    Lsum = {w : η w είναι της μορφής < ακέραιος1 > + < ακέραιος2 >=< ακέραιος3 > με < ακέραιος1 >,< ακέραιος2 >,< ακέραιος3 >

    στοιχεία της {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}+ και ο ακέραιος3 να είναιτο άθροισμα των ακέραιος1 και ακέραιος2}

    1.3 Κλάσεις γλωσσών

    1.3.1 Κλάσεις γλωσσών ως προς τις μηχανές για τηναναγνώρισή τους

    Στα επόμενα κεφάλαια θα επεξεργαστούμε μία σειρά μοντέλων υπολογισμού,που το καθένα είναι ισχυρότερο εκφραστικά από τα προηγούμενα. Το κάθε

  • 14 ΚΕΦΑΛΑΙΟ 1. ΓΛΩΣΣΕΣ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ

    μοντέλο υπολογισμού έχει τη δυνατότητα εκτέλεσης προγραμμάτων, όπου έναπρόγραμμα εδώ ορίζεται ως μία πεπερασμένη ακολουθία εντολών με έναπεδίο ορισμού, έστω D. Το πεδίο ορισμού D λέμε ότι είναι το πεδίο τιμών τωνμεταβλητών και υποθέτουμε ότι αποτελείται από ένα σύνολο στοιχείων, από ταοποία ένα ξεχωρίζει, επειδή αντιστοιχεί στην αρχική τιμή των μεταβλητών τουπρογράμματος. Καθένα από τα στοιχεία του συνόλου D υποθέτουμε ότι είναιένας συνδυασμός ανάθεσης τιμών στις μεταβλητές.

    Κατά την εκτέλεση ενός τέτοιου προγράμματος διακρίνουμε δύο πιθανά εν-δεχόμενα: (α) αποδοχή, που αντιστοιχεί σε κάποια εντολή τερματισμού μετάαπό επιτυχή ολοκλήρωση της εκτέλεσης και που μπορεί να συμβεί μόνο μετά απότην προσέγγιση του τέλους της εισόδου1 και (β) απόρριψη, που αντιστοιχείσε κάποια εντολή τερματισμού μετά από ανεπιτυχή ολοκλήρωση της εκτέλε-σης. Μία ακολουθία βημάτων εκτέλεσης λέγεται υπολογισμός αποδοχήςαν τερματίζει εξαιτίας κάποιας εντολής αποδοχής. Αντίθετα, μία ακολουθίαβημάτων εκτέλεσης για είσοδο, που δεν έχει υπολογισμούς αποδοχής, λέγεταιυπολογισμός απόρριψης.

    Αν ένα πρόγραμμα έχει έναν υπολογισμό αποδοχής για μία είσοδο, τότελέμε ότι αυτή η είσοδος είναι αποδεκτή ή αλλιώς αναγνωρίζεται. Σεδιαφορετική περίπτωση, λέμε ότι η είσοδος δεν είναι αποδεκτή ή αλλιώςαπορρίπτεται από το πρόγραμμα. ΄Ενα πρόγραμμα λέμε ότι παράγει την έξοδοy για δοθείσα είσοδο x, αν αυτό έχει έναν υπολογισμό αποδοχής για τη x, πουνα παράγει την έξοδο y. Οι έξοδοι των υπολογισμών απόρριψης θεωρούμε ότιείναι απροσδιόριστες.

    Παράδειγμα 1.14 (Προβλήματα της υπολογιστικής συμπεριφο-ράς των προγραμμάτων)Γράφουμε προγράμματα για να επιλύουμε προβλήματα, αλλά μία σειρά από ενδια-φέροντα προβ