Τυπικές Γραμματικές και Άλλα Αυτόματα

Σχετικά έγγραφα
Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6

Εισαγωγή στην Επιστήμη των Υπολογιστών

Περιεχόμενα. 1 Υπολογισιμότητα. Ιστορία - Εισαγωγή. Μαθηματικό Υπόβαθρο. LOOP: Μια απλή γλώσσα προγραμματισμού

Πεπερασμένα Αυτόματα και Κανονικές Παραστάσεις

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών. Προδιαγραφές

Εισαγωγή στην Επιστήμη των Υπολογιστών

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

Αυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation

Εισαγωγή στην Επιστήμη των Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

Εισαγωγή στην Επιστήμη των Υπολογιστών

Σειρά Προβλημάτων 4 Λύσεις

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 7: Ασυμφραστικές Γλώσσες (Γλώσσες Ελεύθερες Συμφραζομένων)

Σειρά Προβλημάτων 4 Λύσεις

Σειρά Προβλημάτων 4 Λύσεις

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

Σειρά Προβλημάτων 4 Λύσεις

Γλώσσες Χωρίς Συμφραζόμενα

Θεωρία Υπολογισμού και Πολυπλοκότητα

Θέματα Μεταγλωττιστών

Σειρά Προβλημάτων 4 Λύσεις

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Επανάληψη Μαθήματος

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί);

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές

Γενικές Παρατηρήσεις. Μη Κανονικές Γλώσσες - Χωρίς Συµφραζόµενα (1) Το Λήµµα της Αντλησης. Χρήση του Λήµµατος Αντλησης.

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (2)

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 11 : Γραμματικές χωρίς συμφραζόμενα. Αλέξανδρος Τζάλλας

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 5: Κανονικές Εκφράσεις

Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Θέματα Μεταγλωττιστών

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (1)

Σειρά Προβλημάτων 4 Λύσεις

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1)

Σειρά Προβλημάτων 4 Λύσεις

Θεωρία Υπολογισμού και Πολυπλοκότητα

Ασκήσεις από παλιές εξετάσεις

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 9: Αυτόματα Στοίβας (Pushdown Automata - PDA)

Σειρά Προβλημάτων 4 Λύσεις

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Φροντιστήριο 9 Λύσεις

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 8 : Αυτόματα NFA - DFA. Αλέξανδρος Τζάλλας

Η δυαδική σχέση M ( «παράγει σε ένα βήμα» ) ορίζεται ως εξής: (q, w) M (q, w ), αν και μόνο αν w = σw, για κάποιο σ Σ

Σειρά Προβλημάτων 4 Λύσεις

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Κανονικές Γλώσσες. ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

CSC 314: Switching Theory

Κεφάλαιο 2: Τυπικές γλώσσες. Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος / 216

Φροντιστήριο 10 Λύσεις

Σειρά Προβλημάτων 5 Λύσεις

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2): Αυτόµατα Στοίβας. Παραδείγµατα Σχεδιασµού CFG. Παράδειγµα 1.

Η NTM αποδέχεται αν µονοπάτι στο δέντρο που οδηγεί σε αποδοχή.

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 10: Αυτόματα Στοίβας II

Σειρά Προβλημάτων 5 Λύσεις

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Αλγόριθμοι για αυτόματα

HEAD INPUT. q0 q1 CONTROL UNIT

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

Σειρά Προβλημάτων 5 Λύσεις

Αυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation

Αυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation

Μοντελοποίηση Υπολογισμού. Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις

Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι. Εαρινό Εξάμηνο Lec 05 & & 26 /02/2019 Διδάσκων: Γεώργιος Χρ.

Υπολογίσιμες Συναρτήσεις

Θεωρία Υπολογισμού Αλφάβητα, Γλώσσες, Κανονικές Εκφράσεις

Θεωρία Υπολογισμού και Πολυπλοκότητα Διαγνωσιμότητα

Κανονικές Γλώσσες. Κανονικές Γλώσσες. Κανονικές Γλώσσες και Αυτόματα. Κανονικές Γλώσσες και Αυτόματα

Μηχανές Turing (T.M) I

Θεωρία Υπολογισμού και Πολυπλοκότητα To Δόγμα Church-Turing

Θεωρία Υπολογισμού και Πολυπλοκότητα

Περιεχόμενα Τι περιγράφει ένα ΣΔ ΣΔ και παραγωγές Θεωρία Υπολογισμού Ενότητα 15: Συντακτικά Δέντρα Επ. Καθ. Π. Κατσαρός Τμήμα Πληροφορικής Επ. Καθ. Π.

Τεχνητή Νοημοσύνη. 21η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 12: Μηχανές Turing

771 Η - Θεωρία Υπολογισµών και Αλγορίθµων

aab aabb aaabb aaaabb aaaabb aaaabb

Σειρά Προβλημάτων 3 Λύσεις

Πεπερασμένα Αυτόματα. ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Σειρά Προβλημάτων 3 Λύσεις

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (1) Προβλήµατα και Γλώσσες. Σε αυτό το µάθηµα. ιαδικαστικά του Μαθήµατος.

771 Η - Θεωρία Υπολογισμών και Αλγορίθμων

Αυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση Ι. Εαρινό Εξάμηνο Lec /03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

Σειρά Προβλημάτων 3 Λύσεις

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Τα Θεμέλια της Πληροφορικής

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 4: Μη Ντετερμινιστικά (Αντιαιτιοκρατικά) Πεπερασμένα Αυτόματα (ΝFA)

Σειρά Προβλημάτων 3 Λύσεις

Κεφάλαιο 2: Τυπικές γλώσσες

Γλώσσες Χωρίς Συμφραζόμενα

Θεωρία Υπολογισμού. Ενότητα 5 : Λογικά Επιχειρήματα, Αλφάβητα & Γλώσσες (2/2) Αλέξανδρος Τζάλλας

Θεωρία Υπολογισμού και Πολυπλοκότητα

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 14: Διαγνωσιμότητα (Επιλυσιμότητα)

Απάντηση: (func endfunc)-([a-za-z])+

Context free γραμματικές και γλώσσες

Transcript:

Κεφάλαιο 8 Τυπικές Γραμματικές και Άλλα Αυτόματα 8.1 Εισαγωγή Στο κεφάλαιο αυτό θα ασχοληθούμε με μη κανονικές γλώσσες και γραμματικές, καθώς και τα αντίστοιχα αυτόματα που τις αναγνωρίζουν. Πιο συγκεκριμένα για: γλώσσες και γραμματικές χωρίς συμφραζόμενα (context free), γλώσσες και γραμματικές με συμφραζόμενα (context sensitive), και αναδρομικά αριθμήσιμες (recursively enumerble) γλώσσες και γενικές γραμματικές. 8.2 Κανονικές Γραμματικές Στις κανονικές γραμματικές όλοι οι κανόνες παραγωγής είναι της μορφής: 1. δεξιογραμμικοί (rightliner): A wb, A w, όπου w T, ή 2. αριστερογραμμικοί (leftliner): A Bw, A w, όπου w T. Θεώρημα 8.1. Τα κανονικά σύνολα παράγονται από κανονικές (δεξιο- ή αριστερογραμμικές γραμματικές) Ιδέα απόδειξης. Περιοριζόμαστε σε δεξιογραμμικές γραμματικές: Έστω G 1 δεξιογραμμική. Κατασκευάζουμε ισοδύναμη γραμματική G 2 σε μεταβατική μορφή, δηλαδή σε μορφή κανόνων A B ή A (ή ε). Ιδέα για μετατροπή: A 1... n B αντικαθίσταται από τους κανόνες: A 1 A 1, A 1 2 A 2,..., A n 1 n B, όπου 1,..., A n 1 νέα μη τερματικά σύμβολα. 119

120 Κεφάλαιο 8. Τυπικές Γραμματικές και Άλλα Αυτόματα Μετά κατασκευάζουμε ένα NFA ε με Q = V {ε }, Σ =, q 0 =, F = {ε } και: B δ(a, ) ανν (A B) P ε δ(a, ) ανν (A ) P ε δ(a, ε) ανν (A ε) P Έστω DFA. Κατασκευάζουμε γραμματική με V = Q, T = Σ, = q 0 και παραγωγές: (q i q j ) P ανν δ(q i, ) = q j, (q i ) P ανν δ(q i, ) F Παράδειγμα 8.2. (b) δεξιογραμμικά b αριστερογραμμικά R, R Rb ε Για να κατασκευάσουμε F.A. που αποδέχεται την κανονική γλώσσα που παράγεται από τη δεξιογραμμική γραμματική ( b ) πρώτα την απλοποιούμε σε μεταβατική μορφή ( ba, A ) και μετά: b A ε Για να κατασκεύασουμε F.A. που αποδέχεται την κανονική γλώσσα που παράγεται από την αριστερογραμμική γραμματική ( R, R Rb ε) πρώτα απλοποιείται σε μεταβατική μορφή ( R, R N ε, N Rb) και μετά: ε ε R b N

8.3 Γραμματικές χωρίς συμφραζόμενα και αυτόματα στοίβας 121 Κατασκευή δεξιογραμμικής γραμματικής από αυτόματο. Έστω M: q 0 q f, b q j b b, b q 1 q 0 bq 1 q f q 1 q 0 bq j q f q j bq j q j q j bq j Απαλοιφή σύμβολων που δεν παράγουν τίποτα (non yielding) q j, q f και παραγωγών που σχετίζονται με αυτά. Τότε έχουμε: { q0 bq 1 q 1 q 0 Κατασκευή αριστερογραμμικής γραμματικής από αυτόματο. ( := q f ) q f q 0 q 0 q 1 ε q 1 q 0 b q j q j b q j q f b q f q 1 b Απαλοιφή συμβόλων στα οποία δεν φθάνουμε ποτέ (unrechble) q j καθώς και παραγωγών που σχετίζονται με αυτά. Τότε έχουμε: q f q 0 q 0 q 1 ε q 1 q 0 b 8.3 Γραμματικές χωρίς συμφραζόμενα και αυτόματα στοίβας Όπως είδαμε στην ενότητα περί ιεραρχίας Chomsky, μια γραμματική G = (V, T, P, ) λέγεται χωρίς συμφραζόμενα (context free - c.f.) αν οι κανόνες παραγωγής στο P έχουν τη μορφή A β όπου β (V T ) και A V. Παρακάτω δίνουμε μερικά παραδείγματα γραμματικών χωρίς συμφραζόμενα:

122 Κεφάλαιο 8. Τυπικές Γραμματικές και Άλλα Αυτόματα Παράδειγμα 8.3. Έστω η γραμματική G 1 : V = {}, T = {, b}, P = { ε, b} Μια πιθανή ακολουθία παραγωγών είναι η: b bb bbb bbb H γλώσσα που παράγεται από την G 1 είναι η L(G 1 ) = { n b n n N }. Παράδειγμα 8.4. G 2 = (V, T, P, ) με T = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, }, V = {} και το P περιέχει τους κανόνες: +,, 0 1 2 3 4 5 6 7 8 9 Tόσο στο πιο πάνω παράδειγμα, όσο και στο παράδειγμα 8.3, είναι εύκολο να καταλάβουμε ποιες είναι οι γλώσσες που παράγονται από τις γραμματικές G 1, G 2. Εν γένει, το να βρούμε την L(G) δεν είναι πάντοτε τόσο προφανές, όπως φαίνεται από το επόμενο παράδειγμα. Παράδειγμα 8.5. G 3 = (V, T, P, ), V = {, A, B}, T = {, b} και το P περιέχει τους κανόνες: B ba, A baa, B b b BB Μια πιθανή ακολουθία παραγωγών της πιο πάνω γραμματική είναι: B b bba bb Αν και δεν είναι προφανές, L(G 3 ) = {w T + w έχει ίσο αριθμό και b} 8.3.1 Συντακτικά δένδρα Ένας άλλος τρόπος να να περιγράψουμε πως με μια γραμματική προκύπτει μια συμβολοακολουθία, εκτός από τις ακολουθίες παραγωγών μέσω των, είναι τα συντακτικά δένδρα (prse trees). Ορισμός 8.6. Έστω G = {V, T, P, } μια c.f. γραμματική. Ένα δένδρο είναι συντακτικό δένδρο της G αν 1. Κάθε κόμβος του δένδρου έχει μια επιγραφή, η οποία είναι ένα σύμβολο στο V T {ε}. 2. Η επιγραφή της ρίζας είναι το. 3. Αν ένας κόμβος είναι εσωτερικός και έχει επιγραφή A, τότε το πρέπει να είναι στοιχείο του V. 4. Αν ο κόμβος n έχει επιγραφή A και οι κόμβοι n 1, n 2,..., n k είναι παιδιά του n, σε διάταξη από αριστερά προς τα δεξιά, με επιγραφές X 1, X 2,..., X k αντίστοιχα, τότε ο A X 1 X 2... X k πρέπει να είναι κανόνας παραγωγής στο P.

8.3 Γραμματικές χωρίς συμφραζόμενα και αυτόματα στοίβας 123 b B b b b b A ε i ii Σχήμα 8.1: Παραδείγματα συντακτικών δένδρων 5. Αν ένας κόμβος έχει επιγραφή ε, τότε είναι φύλλο και είναι το μοναδικό παιδί του γονέα του. Για παράδειγμα, τα συντακτικά δένδρα των ακολουθιών παραγωγών των παραδειγμάτων 8.3 και 8.5 φαίνονται στο σχήμα 8.1. Ονομάζουμε φύλλωμα (lef string) τη συμβολοακολουθία που προκύπτει από τα φύλλα ενός δένδρου, αν τα διατρέξουμε από το αριστερότερο προς το δεξιότερο. Ορίζουμε ως A-δένδρο ενός συντακτικού δέντρου ένα υποδέντρο το οποίο περιλαμβάνει ως ρίζα έναν κόμβο με επιγραφή A καθώς και όλους τους απογόνους αυτού του κόμβου και τις μεταξύ τους ακμές. Θεώρημα 8.7. Έστω G(V, T, P, ) μια c.f. γραμματική. Τότε α ανν υπάρχει συντακτικό δένδρο με φύλλωμα το α. Η απόδειξη της κατεύθυνσης γίνεται με επαγωγή ως προς τον αριθμό των εσωτερικών κόμβων, ενώ της με επαγωγή ως προς των αριθμό των βημάτων της ακολουθίας παραγωγών (άσκηση). Διφορούμενες γραμματικές (mbiguous grmmrs) Ορισμός 8.8. Μια γραμματική G ονομάζεται διφορούμενη (mbiguous) αν υπάρχουν δύο συντακτικά δένδρα που να έχουν ως φύλλωμα ένα w L(G). Για παράδειγμα, η συμβολοακολουθία 3 + 2 4 ανήκει στην L(G 2 ), του παραδείγματος 8.4, σελίδα 122 και υπάρχουν δύο συντακτικά δένδρα που αντιστοιχούν σε αυτήν, όπως φαίνεται στο σχήμα 8.2. Παρ όλα αυτά, μπορούμε να κατασκευάσουμε μια γραμματική που είναι ισοδύναμη με την G 2 και η οποία δεν είναι διφορούμενη (άσκηση). Υπάρχουν όμως και γλώσσες χωρίς συμφραζόμενα, για τις οποίες όλες οι γραμματικές που τις παράγουν είναι αναγκαστικά διφορούμενες:

124 Κεφάλαιο 8. Τυπικές Γραμματικές και Άλλα Αυτόματα + 3 + 4 2 4 3 2 Σχήμα 8.2: Συντακτικά δένδρα διφορούμενης γραμματικής Ορισμός 8.9. Μια γλώσσα χωρίς συμφραζόμενα ονομάζεται εγγενώς διφορούμενη (inherently mbiguous) αν όλες οι γραμματικές που την παράγουν είναι διφορούμενες. Παράδειγμα 8.10. Η γλώσσα χωρίς συμφραζόμενα { i b j c k i = j j = k} είναι εγγενώς διφορούμενη.

8.3 Γραμματικές χωρίς συμφραζόμενα και αυτόματα στοίβας 125 8.3.2 Απλοποίηση και κανονικές μορφές Είναι δυνατόν να απλοποιήσουμε μία γραμματική χωρίς συμφραζόμενα ως εξής: Κρατάμε μόνον τα σύμβολα που χρειάζονται (για παράδειγμα εξαλείφουμε όλα τα μη τερματικά που δεν παράγουν συμβολοακολουθίες με τερματικά και όλα τα σύμβολα που δεν μπορούν να εμφανισθούν σε καμία παραγωγή που ξεκινάει από το αρχικό σύμβολο). Επίσης, μπορούμε να εξαλείψουμε κανόνες του τύπου A B (unit productions). Επιπλέον, αν το ε δεν ανήκει στην L, δεν χρειάζονται κανόνες παραγωγής της μορφής A ε (ε-productions). Μάλιστα, αν το ε δεν ανήκει στην L, μπορούμε να κατασκευάσουμε την G με τέτοιο τρόπο ούτως ώστε κάθε κανόνας παραγωγής να έχει είτε τη μορφή A BC είτε την A, όπου οι A, B και C είναι μεταβλητές και το είναι τερματικό σύμβολο. Εναλλακτικά, μπορούμε να μετατρέψουμε κάθε κανόνα παραγωγής του G στη μορφή A, όπου το α είναι μια συμβολοακολουθία από μεταβλητές (μπορεί και κενή). Αυτές οι δύο ειδικές μορφές ονομάζονται κανονική μορφή Chomsky και κανονική μορφή Greibch, οπότε έχουμε τα παρακάτω δύο θεωρήματα κανονικών μορφών: Θεώρημα 8.11 (Κανονικής μορφής Chomsky, CNF). Κάθε c.f. γλώσσα χωρίς το ε παράγεται από μια γραμματική στην οποία όλες οι παραγωγές είναι της μορφής A BC ή A. όπου,, C μεταβλητές και τερματικό. Θεώρημα 8.12 (Κανονικής μορφής Greibch, GNF). Κάθε c.f. γλώσσα χωρίς το ε παράγεται από μια γραμματική στην οποία όλες οι παραγωγές είναι της μορφής A, όπου α V, T. Από γραμματικές στις παραπάνω κανονικές μορφές, προκύπτουν σχετικά απλούστερα συντακτικά δένδρα: για την CNF τα συντακτικά δένδρα έχουν πάντοτε διακλάδωση βαθμού δύο αν προκύπτουν μεταβλητές, αλλιώς από μία μεταβλητή προκύπτει ένα μόνον φύλλο (τερματικό σύμβολο), ενώ για την GNF, τα αριστερά παιδιά κάθε κόμβου είναι πάντοτε τερματικά σύμβολα. Μπορούμε να εκμεταλλευτούμε αυτές τις ιδιότητες των συντακτικών δένδρων για να επιλύσουμε ταχύτερα ορισμένα προβλήματα όπως αν κάποια συμβολοσειρά x ανήκει στην γλώσσα που παράγει μία γραμματική: Δεδομένης γραμματικής χωρίς συμφραζόμενα G, όχι απαραίτητα σε κανονική μορφή, υπάρχει μηχανιστικός αλγόριθμος ο οποίος για οποιαδήποτε συμβολοσειρά x αποκρίνεται αν x L(G) ή όχι. Π.χ. αν συστηματικά κατασκευάσουμε όλες τις παραγόμενες συμβολοσειρές κατά αύξουσα σειρά μήκους, τότε μπορούμε να αποφασίσουμε εάν x L(G). Ο αλγόριθμος όμως είναι εκθετικού χρόνου ως προς το μήκος της συμβολοσειράς εισόδου. Αν όμως η γραμματική δίνεται σε κανονική μορφή Chomsky, τότε υπάρχει ταχύτερος αλγόριθμος, πολυπλοκότητας O( x 3 ), ο λεγόμενος αλγόριθμος CYK (από τους Cocke, Younger, Ksmi). function CYK(x: string): boolen (* ssumes Chomsky n.f. *) begin n := x for i := 1 to n do Vi 1 := {A (A ) P (x) i = }; for j := 2 to n do for i := 1 to n j + 1 do

126 Κεφάλαιο 8. Τυπικές Γραμματικές και Άλλα Αυτόματα begin V j i := ; for k := 1 to j 1 do V j i := V j i {A (A BC) P B Vi k end ; CYK := V1 n end C V j k i+k } Ο αλγόριθμος ουσιαστικά ελέγχει όλα τα δυνατά συντακτικά δένδρα, αρχίζοντας από τα τερματικά σύμβολα στα φύλλα και αποδίδοντας σε αυτά πιθανά μη τερματικά σύμβολα που τα παραγάγουν. Ο αλγόριθμος συνεχίζει αποδίδοντας πιθανά μη τερματικά σύμβολα σε κάθε υποσυμβολοσειρά της συμβολοσειράς εισόδου και τέλος ελέγχει αν στην συμβολοσειρά εισόδου έχει αποδοθεί το αξίωμα. Παράδειγμα 8.13. Έστω γραμματική σε κανονική μορφή Chomsky: AB BC, A BA, B CC b, C AB Στο σχήμα 8.3 δίνουμε την εκτέλεση του αλγορίθμου και το αντίστοιχο συντακτικό δένδρο για είσοδο x = bb. Με τα βέλη, δείχνουμε την ακολουθία υπολογισμού για j = 4 (μήκος substring) και για τo substring (x) 2..5 (αρχίζει, δηλαδή, από την θέση i = 2): Μέσα σε κύκλο και με τον ίδιο αριθμό συμβολίζουμε τα δύο substrings (συνολικού μήκους 4) που συνδυάζονται για να δώσουν το (x) 2..5. x = b b j = 1 B A, C 1 A, C B A, C 3 j = 2, A B 2, C, A 2 j = 3 B 3 B 1 j = 4, A, C j = 5, A, C B b A A A Σχήμα 8.3: Εκτέλεση αλγορίθμου CYK C B b B C 8.3.3 Αυτόματα στοίβας Ένα αυτόματο στοίβας (push down utomton ή για συντομία PDA) αποτελείται από μία ταινία εισόδου, αλλά επιπλέον, σε σχέση με τα FA, έχει και μία στοίβα (μη φραγμένη σε μέγεθος μνήμη,

8.3 Γραμματικές χωρίς συμφραζόμενα και αυτόματα στοίβας 127 αλλά με περιορισμένες δυνατότητες πρόσβασης σε αυτήν). Η πρόσβαση στην στοίβα γίνεται μόνον στην κορυφή αυτής με τις εξής δύο λειτουργίες: 1. push: Τοποθετεί ένα στοιχείο που δίνεται στην κορυφή της στοίβας. 2. pop: Αφαιρεί ένα στοιχείο για χρήση από την κορυφή της στοίβας. Είναι προφανές ότι αν κάποιο στοιχείο βρίσκεται βαθιά μέσα στην στοίβα, δηλαδή αφού έχει μπει στην στοίβα με push, έχουν επίσης μπει με push άλλα στοιχεία πάνω από αυτό, προκειμένου να έχουμε πρόσβαση σε αυτό θα πρέπει να κάνουμε pop σε όλα τα στοιχεία που είναι από πάνω του. Θεωρήστε την γλώσσα L = {wcw R w (0 + 1) }. Για παράδειγμα 110c011 L. Να πώς μπορούμε να αναγνωρίσουμε την παραπάνω γλώσσα με ένα PDA: 1. push() στην στοίβα για κάθε 0 που συναντάς στην είσοδο, push(b) στην στοίβα για κάθε 1 που συναντάς στην είσοδο, μέχρι να συναντήσεις το c 2. διάβασε το c, κάνε pop τα στοιχεία της στοίβας και διάβαζε παράλληλα την είσοδο, αποδέξου αν υπάρχει συμφωνία των στοιχείων εισόδου με τα στοιχεία της στοίβας ( με 0, b με 1). Δίνουμε παρακάτω τον τυπικό ορισμό: Ορισμός 8.14. Ένα αυτόματο στοίβας (push down utomton ή για συντομία PDA) είναι μία πλειάδα M = (Q, Σ, Γ, δ, q 0, Z 0, F ), όπου: Q: πεπερασμένο σύνολο καταστάσεων, Σ: αλφάβητο εισόδου, Γ: αλφάβητο στοίβας, δ: Q (Σ {ε}) Γ P ow(q Γ ) (πεπερασμένα υποσύνολα), η συνάρτηση μετάβασης (επιτρέπονται ε-κινήσεις και μη ντετερμινισμός), q 0 Q: αρχική κατάσταση, Z 0 Γ: αρχικό σύμβολο στην στοίβα, F Q: τελικές καταστάσεις. Υπάρχουν δύο είδη PDA ως προς το αποδέχεσθαι: 1. αποδέξου όταν βρίσκεσαι σε τελική κατάσταση αφού έχεις διαβάσει όλη την ταινία εισόδου, ανεξάρτητα από το τι υπάρχει στην στοίβα, ή,

128 Κεφάλαιο 8. Τυπικές Γραμματικές και Άλλα Αυτόματα 2. αποδέξου όταν η στοίβα είναι άδεια αφού έχεις διαβάσει όλη την ταινία εισόδου, ανεξάρτητα από την κατάσταση στην οποία ευρίσκεσαι (σύμβαση: F = ). Αντίστοιχα ορίζουμε και την γλώσσα που αποδέχεται ένα PDA: 1. Γλώσσα που αποδέχεται σε τελική κατάσταση L f (M) 2. Γλώσσα που αποδέχεται με κενή στοίβα L e (M) Προκειμένου να γίνει αποδεκτή η L 1 = {ww R w (0+1) } χωρίς το σημάδι c στην μέση της συμβολοσειράς χρειαζόμαστε απαραιτήτως ένα μη ντετερμινιστικό PDA. Τα μη ντετερμινιστικά PDA είναι γνησίως πιο ισχυρά από τα ντετερμινιστικά. Τελικά ισχύει το παρακάτω θεώρημα: Θεώρημα 8.15. Τα παρακάτω είναι ισοδύναμα για μία γλώσσα L: 1. L = L f (M 2 ), M 2 είναι PDA. 2. L = L e (M 1 ), M 1 είναι PDA. 3. Η L είναι γλώσσα χωρίς συμφραζόμενα (context free). Παραλείπεται η λεπτομερής απόδειξη. 8.4 Γενικές γραμματικές Τύπου 0: γενικές γραμματικές (generl or unrestricted grmmrs), semi-thue, phrse structure Παραγωγές: α β, με α ε Παράδειγμα 8.16. L = { 2n n N} ACB CB E DB E E AE ε D D AD AC C C

8.5 Γραμματικές με συμφραζόμενα 129 Θεώρημα 8.17. Τα ακόλουθα είναι ισοδύναμα: 1. η L γίνεται αποδεκτή από μία Turing μηχανή (βλέπε κεφάλαιο??, ενότητα??) 2. L = L(G), όπου G είναι γενική γραμματική Χωρίς απόδειξη. Μία τέτοια γλώσσα λέγεται και αναδρομικά αριθμήσιμη (recursively enumerble) βλέπε ορισμό 11.3 στην σελίδα 163. 8.5 Γραμματικές με συμφραζόμενα Τύπου 1: γραμματικές με συμφραζόμενα (context sensitive grmmrs, c.s.) Παραγωγές: α β, με α ε, α β (noncontrcting grmmr, non-decresing, not ε string) Η ονομασία context sensitive οφείλεται στην παρακάτω εναλλακτική περιγραφή αυτών των γραμματικών: Κάθε c.s. γραμματική μπορεί να τεθεί σε κανονική μορφή στην οποία όλοι κανόνες παραγωγής είναι της μορφής: α 1 Aα 2 context α 1 βα 2, Παράδειγμα 8.18. 1 n 0 n 1 n. C.s. γραμματική: 1Z1 Z 0 1Z0A A0 0A A1 11 όπου A: μη τερματικό και β ε Αλλα παραδείγματα τέτοιων γλωσσών: { n b n c n }, { i b j c k 0 i j k}, {ww w Σ }, 0 n 1 n 0 n 1 n. Γραμμικά φραγμένο αυτόματο (Linerly bounded utomton (LBA)): Είναι μία μη-ντετερμινιστική μηχανή Turing (T.M.) της οποίας η κεφαλή είναι περιορισμένη να κινείται μόνον στο τμήμα της ταινίας που περιέχει την είσοδο. Θεώρημα 8.19. Τα ακόλουθα είναι ισοδύναμα (L χωρίς ε): 1. η L γίνεται αποδεκτή από LBA 2. η L είναι c.s. Χωρίς απόδειξη. Ένα ανοιχτό ερώτημα είναι το εξής: Είναι ισοδύναμη η ντετερμινιστική και η μη ντετερμινιστική εκδοχή του LBA;

130 Κεφάλαιο 8. Τυπικές Γραμματικές και Άλλα Αυτόματα 8.6 Διαδραστικό υλικό - Σύνδεσμοι Το JFLAP, που μπορείτε να βρείτε εδώ: http://www.jflp.org/ είναι ένα πλήρες πακέτο για την προσομοίωση και υπολογισμό αυτομάτων και γραμματικών. Μπορεί να εκτελέσει όλους τους αλγόριθμους που αναφέρθηκαν στα Κεφάλαια 8 και 9, όπως μετατροπή NFA σε DFA, ελαχιστοποίηση DFA, μετατροπή DFA σε κανονική έκφραση/γραμματική κλπ. 8.7 Ασκήσεις 1. Έστω η γραμματική χωρίς συμφραζόμενα G = ({, A, B}, {, b}, P, ), με κανόνες παραγωγής P : ABA A bb B b ε Ποια γλώσσα αναγνωρίζει η γραμματική G; 2. Αποδείξτε ή ανταποδείξτε τις ιδιότητες κλειστότητας της κλάσης των γλωσσών με συμφραζόμενα (context-sensitive) ως προς ένωση, παράθεση, τομή και άστρο του Kleene. Τι συμπέρασμα προκύπτει για την πράξη του συμπληρώματος; 3. Βρείτε γραμματική χωρίς συμφραζόμενα που να υπολογίζει την γλώσσα L = {x {, b} x = x R } 4. Κατατάξτε τις παρακάτω γλώσσες στην Ιεραρχία Chomsky με όσο μεγαλύτερη ακρίβεια μπορείτε (με απόδειξη ή εξήγηση, όσο καλύτερα μπορείτε): (i) {0 k 1 k+1 0 k k N} (i) {0 3k+1 k N} (ii) { k b m c n k, m, n N, k < m n} (i) {w {, b} wπεριέχει 1101 } 5. Δείξτε ότι κάθε συμβολοσειρά στην γλώσσα L έχει περισσότερα από b, όπου L η γλώσσα που παράγεται από την γραμματική: b b b 6. Δώστε περιγραφή υψηλού επιπέδου (όσο καλύτερα μπορείτε) ενός LBA για τις παρακάτω γλώσσες: (i) L = { p : p είναι δύναμη του 2 }.

8.7 Ασκήσεις 131 (ii) L = { p : p είναι πρώτος αριθμός}. 7. Δείξτε ότι η γραμματική χωρίς συμφραζόμενα G που παράγεται από τους κανόνες: A A BA B b c είναι μη-διφορούμενη. 8. Κατατάξτε τις παρακάτω γλώσσες σε κλάσεις της Ιεραρχίας Chomsky (στην μικρότερη κλάση που ανήκουν) και αποδείξτε τον ισχυρισμό σας δίνοντας κατάλληλα αυτόματα και γραμματικές (όσο καλύτερα μπορείτε). Για όσες θεωρείτε ότι δεν είναι κανονικές, αποδείξτε το γεγονός αυτό με χρήση του Pumping Lemm. u {0, 1} }, όπου u R η ανάστροφη συμβολο- L 1 = {w {0, 1} w = u100u R, σειρά της u. L 2 = {w {0, 1} w παριστάνει δυαδικό αριθμό που είναι πολλαπλάσιο του 2 αλλά όχι του 4 } L 3 = {w {, b, c} w = k b m c l, k, m, l N, k < m < l} 9. Κατασκευάστε αυτόματο στοίβας (PDA) που να αποδέχεται την γλώσσα: L = { i b j 2i 3j} 10. Κατασκευάστε αυτόματο στοίβας (PDA) που να αποδέχεται την γλώσσα που παράγεται από την γραμματική G με κανόνες παραγωγής: ε b

.

Βιβλιογραφία [1] Mrtin D. Dvis, Ron igl, Eline J. Wyuker, Computbility, Complexity, nd Lnguges, 2nd edition, Acdemic Press Professionl, Inc. n Diego, CA, UA, 1994. [2] M. Hrrison. Introduction to witching nd Automt Theory, McGrw-Hill Book Compny, New York, 1965. [3] J.E. Hopcroft nd J.D. Ullmn. Introduction to Automt Theory, Lnguges nd Computtion, Addison Wesley Longmn, 2007. [4] D. C. Kozen. Automt nd Computbility (Undergrdute Texts in Computer cience), pringer-verlg New York, Inc. ecucus, NJ, UA, 1997. [5] Μ. ipser. Introduction to the Theory of Computtion, Interntionl Thomson Publishing, 1996. 133

.