Σύνοψη Προηγούµενου Γλώσσες χωρίς Συµφραζόµενα (2) Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Αυτόµατα Στοίβας Pushdown utomata Ισοδυναµία µε τις Γλώσσες χωρίς Συµφραζόµενα: CFL PD. Κλειστότητα (και µη) Γλωσσών χωρίς Συµφραζόµενα. Κλειστότητα ως προς τις κανονικές πράξεις. Τοµή γλώσσας χωρίς συµφραζόµενα µε κανονική γλώσσα είναι CFL. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 1 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 2 / 36 Σε αυτό το µάθηµα Ισοδυναµία CFG και PD Αυτόµατα Στοίβας (PD): Ισοδυναµία µε τις Γλώσσες χωρίς Συµφραζόµενα: PD CFL. Αλγόριθµοι για Γραµµατικές χωρίς Συµφραζόµενα Μετατροπή CFG σε Κανονική Μορφή Chomsky Λήµµα: Κάθε PD µετατρέπεται σε ισοδύναµη CFG. ηλαδή σε CFG που παράγει τη γλώσσα που αποδέχεται το PD. Εχουµε ήδη δείξει ότι: Αλγόριθµος υναµικού Προγραµµατισµού Λήµµα: Κάθε CFG µετατρέπεται σε ισοδύναµο PD. Γλώσσες που είναι και δεν είναι χωρίς Συµφραζόµενα Μαζί µας δίνουν την ισοδυναµία PDs και CFGs. Εισαγωγή στις Μηχανές Turing Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 3 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 4 / 36
Μετατροπή PD CFG Μετατροπή PD CFG: Απλοποίηση PD (1/2) ίνεται ένα PD P = (Q, Σ, Γ, δ, q 0, F) Θα το «απλοποιήσουµε» λίγο, προκειµένου να το µετατρέψουµε σε CFG. Μία µόνο κατάσταση αποδοχής, f 0. Η στοίβα να εκκενώνεται πριν το αυτόµατο αποδεχθεί. Εισάγουµε τη νέα µοναδική κατάσταση αποδοχής f 0. Αν η στοίβα είναι κενή στις (προηγούµενες) καταστάσεις αποδοχής f F: Απλώς προσθέτουµε µία µετάβαση (f, ɛ) δ (f, ɛ, ɛ). Αν ενδέχεται η στοίβα να µην είναι κενή σε κάποια f F, εισάγουµε: Νέα αρχική κατάσταση q 0 q 0 και µετάβαση: δ(q 0, ɛ, ɛ) = { (q 0, $ }. Σε κάθε µετάβαση: είτε γράφει ή διαβάζει στη/από τη στοίβα (ένα από τα δύο σίγουρα, αλλά όχι και τα δύο σε µία µετάβαση). Κατόπιν, µετατρέπουµε το (απλοποιηµένο) PD σε γραµµατική. Από την f «έως» την f 0, µετάβαση που αδειάζει τη στοίβα: ɛ, a ɛ ɛ, $ ɛ f f 0 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 5 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 6 / 36 Μετατροπή PD CFG: Απλοποίηση PD (2/2) Μετατροπή PD σε CFG Βασική Ιδέα Κάθε µετάβαση µόνο γράφει στη ή µόνο διαβάζει από τη στοίβα. Θεωρούµε οποιοδήποτε Ϲεύγος καταστάσεων p και q. Θα εισάγουµε µη τερµατικό σύµβολο pq στη γραµµατική. a, b c q q a, b ɛ ɛ, ɛ c q r q Το pq ϑα παράγει όλες τις λέξεις που οδηγούν το PD: από την p µε κενή στοίβα, στην q µε κενή στοίβα a, ɛ ɛ q q ɛ, ɛ a ɛ, a ɛ q r q ισοδύναµα, από την p µε µια κατάσταση στοίβας, στην q µε την ίδια κατάσταση στοίβας. Μετάβαση από την p: εγγράφεται σύµβολο στη στοίβα (αφού είναι «κενή» και δεν συµβαίνει ανάγνωση). Μετάβαση προς την q: διαβάζεται σύµβολο από τη στοίβα (αφού πρόκειται να καταλήξει «κενή» ). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 7 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 8 / 36
Μετατροπή PD σε CFG Τυπική Σύνοψη Μετατροπής PD σε CFG Βασική Ιδέα ύο περιπτώσεις υπολογισµού του PD: Το σύµβολο που διαβάζεται στην q είναι αυτό που εγγράφεται στην p. Προσοµοιώνουµε την περίπτωση αυτή µε έναν κανόνα pq a rs b. a είναι σύµβ. εισόδου που διαβάζεται στην πρώτη µετάβαση από την p. b είναι σύµβ. εισόδου που διαβάζεται στην τελευταία µετάβαση προς την q. r είναι η κατάσταση του PD αµέσως µετά την p. s είναι η κατάσταση του PD ακριβώς πριν την q. Το σύµβολο που εγγράφεται στην p διαβάζεται στην r, πριν την q. ηλαδή πριν από την «εξάντληση» της εισόδου x, «αδειάζει» η στοίβα. Προσοµοιώνουµε την περίπτωση αυτή µε τον κανόνα pq pr rq. ίνεται απλοποιηµένο PD (Q, Σ, Γ, δ, q 0, {f}). Αρχικό µη τερµατικό σύµβολο της CFG: q0f. Για κάθε p, q, r, s Q, t Γ, a, b Σ ɛ : Αν (r, t) δ(p, a, ɛ) και (q, ɛ) δ(s, b, t) τότε: pq a rs b Για κάθε p, q, r Q προσθέτουµε τον κανόνα pq pr rq. Για κάθε p Q προσθέτουµε τον κανόνα pp ɛ. Απόδειξη Ορθότητας: Επαγωγικά (παραλείπεται). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 9 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 10 / 36 Κανονική Μορφή Chomsky Κανονική Μορφή Chomsky Μας ενδιαφέρει οι CFG να ϐρίσκονται σε µια «απλή» µορφή. ιευκολύνεται ο σχεδιασµός αλγορίθµων για το χειρισµό τους. Μια CFG είναι σε κανονική µορφή Chomsky εάν κάθε κανόνας της ϐρίσκεται σε µία από τις ακόλουθες µορφές: C,, C. a. Επιπλέον, επιτρέπουµε τον κανόνα ɛ. Κάθε CFG G µπορεί να µετατραπεί σε κανονική µορφή Chomsky. Μετατροπή σε στάδια: 1. Εισαγωγή Νέας Αρχικής Μεταβλητής. 2. Απαλοιφή ɛ-κανόνων (επαναληπτικά). 3. Απλοιφή Μοναδιαίων Κανόνων (επαναληπτικά). 4. Μεταγραφή Εναποµείναντων Κανόνων. Κάθε CFL παράγεται από CFG σε κανονική µορφή Chomsky. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 11 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 12 / 36
Μετατροπή σε ΚΜ Chomsky (1): Νέα Αρχική Μεταβλητή Μετατροπή σε ΚΜ Chomsky (2): ɛ-κανόνες Οσο υπάρχουν ɛ-κανόνες, επαναλαµβάνουµε: Νέα εναρκτήρια µεταβλητή. 1. Προσθέτουµε νέα εναρκτήρια µεταβλητή, 0. 2. Προσθέτουµε τον κανόνα: 0, όπου η προηγούµενη εναρκτήρια µεταβλητή. 1. Επιλέγουµε έναν κανόνα ɛ µε και τον αφαιρούµε. 2. Για κάθε κανόνα, R, στον οποίο εµφανίζεται στο δεξί µέλος η : Εισάγουµε κανόνα που διαφέρει από τον R στο ότι παραλείπεται µία εµφάνιση της στο δεξί µέλος. Επαναληπτικά για κάθε εµφάνιση της στο δεξί µέλος του R. Π.χ., για τον R : R u v w εισάγουµε τους κανόνες: R u v w, R u v w, R u v w. 3. Αν υπάρχει R, εισάγουµε τον R ɛ, (εκτός αν είχε αφαιρεθεί προηγουµένως). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 13 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 14 / 36 Μετατροπή σε ΚΜ Chomsky (3): Μοναδιαίοι Κανόνες Μετατροπή σε ΚΜ Chomsky (4): Εναποµείναντες Κανόνες Μεταγραφή Εναποµείναντων Κανόνων Οσο υπάρχουν µοναδιαίοι κανόνες, επαναλαµβάνουµε: 1. Επιλέγουµε έναν, της µορφής, και τον αφαιρούµε. 2. Για κάθε κανόνα της µορφής u, όπου u V + : Εισάγουµε κανόνα u, εκτός αν αυτός ήταν µοναδιαίος που έχουµε ήδη αφαιρέσει. 1. Κάθε κανόνας της µορφής: u 1 u 2 u k, k 3, u i V 2. Αντικαθίσταται από τους κανόνες: u 1 1, 1 u 2 2, 2 u 3 3,, k 2 u k 1 u k όπου i καινούριες µεταβλητές. 3. Αν k = 2 αντικαθιστούµε κάθε τερµατικό σύµβολο u i µε µια καινούρια µεταβλητή, U i, και προσθέτουµε τον κανόνα U i u i. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 15 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 16 / 36
Παράδειγµα (1/5) Μετατροπή της CFG G: G : Εισαγωγή νέας αρχικής κατάστασης: a ɛ Αφαιρούµε τον ɛ-κανόνα, ɛ. 0 a ɛ a ɛ 0 0 a ɛ a a ɛ Παράδειγµα (2/5) Αφαιρούµε τον ɛ-κανόνα, ɛ. 0 a a ɛ Αφαιρούµε το µοναδιαίο κανόνα,. 0 a a 0 a a 0 a a Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 17 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 18 / 36 Παράδειγµα (3/5) Παράδειγµα (4/5) Αφαιρούµε το µοναδιαίο κανόνα, 0. 0 a a Αφαιρούµε το µοναδιαίο κανόνα,. 0 a a a a 0 0 a a a a a a a a b Αφαιρούµε το µοναδιαίο κανόνα,. 0 a a a a b Μεταγραφή Εναποµείναντων Κανόνων 0 a a a a a a 0 γίνεται: 0 1 και 1 0 a γίνεται: 0 U και U a Οι υπόλοιποι κανόνες µπορούν να µεταγραφούν χωρίς προσθήκη επιπλέον µεταβλητών. Μπορούν να χρησιµοποιηθούν επιπλέον σύµβολα (για αποφυγή σφαλµάτων). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 19 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 20 / 36
Παράδειγµα (5/5) Παράδειγµα Η CFG των «ορθών παρενθέσεων»:, (), ɛ Αποτέλεσµα Μεταγραφής Εναποµείναντων Κανόνων: 0 1 U a 1 U a 1 U a 1 U a Εισάγουµε νέα αρχική µεταβλητή 0 και τον κανόνα 0. Απαλείφουµε τον κανόνα ɛ, εισάγοντας επιπλέον τους κανόνες: (αυτός ϑα αγνοηθεί), (), 0 ɛ εν υπάρχουν «µοναδιαίοι» κανόνες (εκτός του 0 ). Μεταγράφουµε τον κανόνα () σε: ( 1, 1 ) Τελική γραµµατική: { 0 ɛ, LR, L 1, 1 R, L (, R ) Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 21 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 22 / 36 Αλγόριθµος υναµικού Προγραµµατισµού Αλγόριθµος υναµικού Προγραµµατισµού Εστω γραµµατική G χωρίς συµφραζόµενα Η κανονική µορφή Chomsky επιτρέπει να αποφασίζουµε αν w L(G). Με αλγόριθµο πολυωνυµικού χρόνου. Αν δίνεται λέξη w = a 1 a 2... a n : Ο αλγόριθµος «αναλύει» κάθε δυνατή υπολέξη της w. Για κάθε s = 1,..., n 1 και για κάθε i = 1,..., n s: N[i, i + s] είναι σύνολο συµβόλων που µπορούν να παράγουν την: a i,..., a i+s Ο αλγόριθµος υπολογίζει όλα τα σύνολα N[i, i + s]. Ξεκινώντας από τις µικρότερες δυνατές υπολέξεις a i,..., a i+s. 1. για i := 1 έως n: N[i, i] := { i } (όπου i a i ) όλα τα υπόλοιπα σύνολα N[, ] είναι αρχικά 2. για s := 1 έως n 1 2.1 για i := 1 έως n s 2.1.1 για k := 1 έως i + s 1 αν C R µε: N[i, k] και C N[k + 1, i + s] τότε N[i, i + s] := N[i, i + s] { } 3. αν N[1, n] επίστρεψε true 4. επίστρεψε false Πολυπλοκότητα: O(n 3 G ) Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 23 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 24 / 36
Παράδειγµα Εκτέλεσης Για τη λέξη ( ( ) ( ( ) ) ) της G: {, LR, L1, 1 R, L (, R ) 1 2 3 4 5 6 7 8 1 {L} {} 2 {L} {} {} { 1 } 3 {R} 4 {L} {} { 1 } 5 {L} 1 6 {R} 7 {R} 8 {R} Ποσοτικά Μεγέθη στα Συντακτικά έντρα Για δεδοµένη Γραµµατική χωρίς Συµφραζόµενα G: Εύρος (fanout): φ(g) = max πλήθος συµβόλων στα δεξιά κάθε κανόνα. Μονοπάτι σε Συντακτικό έντρο: συνδέει τη ϱίζα µε κόµβο ϕύλλο (αρχικό µη τερµατικό σύµβολο στη ϱίζα, τερµατικό στο ϕύλλο). Υψος Συντακτικού έντρου: µήκος µακρύτερου µονοπατιού. Κάθε συντακτικό δέντρο της G µε ύψος h παράγει λέξη µήκους φ(g) h. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 25 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 26 / 36 Ενα Λήµµα Αντλησης για CFLs (1η Εκδοχή) Ενα Λήµµα Αντλησης για CFLs (2η Εκδοχή) Πιο παρόµοιο µε το Λήµµα Αντλησης για Κανονικές Γλώσσες Για κάθε Γραµµατική χωρίς Συµφραζόµενα G = (V, Σ, R, ): Για κάθε Γραµµατική χωρίς Συµφραζόµενα G = (V, Σ, R, ): Εστω οποιαδήποτε λέξη w L(G) µε µήκος w > φ(g) V Σ. Η w µπορεί να γραφεί στη µορφή w = u v x y z, έτσι ώστε: είτε v > 0, είτε y > 0 u v n x y n z L(G) για κάθε n 0. Υπάρχει αριθµός p τέτοιος ώστε για κάθε λέξη w L(G) µε w p: (εδώ παρατηρούµε ότι p = 1 + φ(g) V Σ ) Η w µπορεί να γραφεί στη µορφή w = u v x y z, έτσι ώστε: είτε v > 0, είτε y > 0 (ισοδύναµα, vy > 0) v x y p u v n x y n z L(G) για κάθε n 0. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 27 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 28 / 36
Παραδείγµατα Παράδειγµα 1 Η γλώσσα { a n b n c n n 0 } δεν είναι χωρίς Συµφραζόµενα Οι παρακάτω γλώσσες δεν είναι χωρίς Συµφραζόµενα: 1. { a n b n c n n 0 }. 2. { a n ο n 1 είναι πρώτος }. 3. { w {a, b, c} η w έχει ίσο πλήθος a, b, c }. 4. { a i b j c k i j k } 5. { ww w {0, 1} } Επιλέγουµε οποιαδήποτε λέξη w = a n b n c n, µε n φ(g) V Σ /3. Τότε εµφανώς, είναι w φ(g) V Σ. Από το Λήµµα της Αντλησης, η w γράφεται σαν w = u v x y z, ώστε: είτε v > 0, είτε y > 0, u v n x y n z L(G) για κάθε n 0. Αν όλα τα a, b, c εµφανίζονται στην v y, τότε: είτε η v είτε η y περιέχει τουλάχιστον δύο από τα σύµβολα. Τότε όµως η u v 2 x y 2 z έχει τα σύµβολα της γλώσσας σε λάθος σειρά. Αν κάποια (όχι όλα) από τα a, b, c εµφανίζονται στην v y, τότε η u v 2 x y 2 z έχει διαφορετικό πλήθος a, b, c. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 29 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 30 / 36 Παράδειγµα 2 Παράδειγµα 3 Η γλώσσα { a n ο n 1 είναι πρώτος } δεν είναι χωρίς Συµφραζόµενα Εστω G η CFG που παράγει τη γλώσσα. Επιλέγουµε πρώτο αριθµό p > φ(g) V Σ και λέξη w = a p. Από το Λήµµα της Αντλησης η w γράφεται σαν a p είτε v > 0, είτε y > 0, u v n x y n z L(G) για κάθε n 0. Εστω v y = a q και u x z = a r όπου q + r = p. = u v x y z, ώστε: Επειδή u v n x y n z L(G), έπεται ότι ο q + r n είναι πρώτος, για κάθε n 0 (!!!!) ΑΤΟΠΟ Η γλώσσα = { w {a, b, c} η w έχει ίσο πλήθος a, b, c } δεν είναι χωρίς Συµφραζόµενα Εστω ότι η δεδοµένη γλώσσα είναι χωρίς συµφραζόµενα. Τότε, η τοµή της µε κανονική γλώσσα ϑα είναι χωρίς συµφραζόµενα. Αρα, η L = { a n b n c n n 0 } είναι χωρίς συµφραζόµενα, διότι: ΑΤΟΠΟ L = { w w L(a b c ) } Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 31 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 32 / 36
Παράδειγµα 4 Παράδειγµα 5 (α) Η γλώσσα { a i b j c k 0 i j k } δεν είναι CFL. Με τη 2η εκδοχή του Λήµµατος Αντλησης (υπάρχει ελάχιστο µήκος p... ) Επιλέγουµε τη λέξη s = a p b p c p και τη γράφουµε σαν s = u v x y z. Τότε: u v > 0 και v x y p u v n x y n z ανήκει στη γλώσσα n 0. Αν v ή y έχουν > 1 είδος συµβόλου, η uv 2 xy 2 z δεν ανήκει στη γλώσσα. Αν «µας λείπει» το a: η uv 0 xy 0 z = uxz έχει λιγότερα b ή/και c από a. Αν «µας λείπει» το b: κάποια από τις v, y ϑα έχει a ή c. Αν υπάρχει a, η uv 2 xy 2 z έχει περισσότερα a από b. Αν υπάρχει c, η uv 0 xy 0 z έχει περισσότερα b από c. Η γλώσσα { w w w {0, 1} } δεν είναι CFL. Με τη 2η εκδοχή του Λήµµατος Αντλησης (υπάρχει ελάχιστο µήκος p... ) Θα µπορούσαµε να επιλέξουµε τη λέξη 0 p 10 p 1, που ανήκει στη γλώσσα. Οµως, αυτή επιδέχεται διαίρεση u v x y z που «δουλεύει»: 0 p 1 0 p 1 {}}{{}}{}{{} 0 0 0... }{{} 0 }{{} 1 }{{} 0 0} 0 0. {{.. 0 0 0 1} u v x y z Αν «µας λείπει» το c: η uv 2 xy 2 z έχει περισσότερα a από b ή b από c. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 33 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 34 / 36 Παράδειγµα 5(ϐ) Οι CFLs δεν είναι κλειστές ως προς Τοµή / Συµπλήρωµα Επιλέγουµε τη λέξη s = 0 p 1 p 0 p 1 p Θα πρέπει να µπορούµε να τη γράψουµε ως: s = u v x y z ώστε: u v > 0 και v x y p u v n x y n z ανήκει στη γλώσσα n 0. Θα πρέπει η v x y να εκτείνεται πέρα από «τα µισά» της s ιαφορετικά, η u v 2 x y 2 z δεν είναι µορφής w w. Οµοίως, η v x y δε µπορεί να είναι εξ ολοκλήρου στο 2ο µισό της s. Τότε όµως, επειδή v x y p, η u v n x y n z έχει µορφή: 0 p 1 i 0 j 1 p Οι παρακάτω γλώσσες είναι χωρίς συµφραζόµενα (είναι;): L 1 = { a n b n c m m, n 0 }, L 2 = { a m b n c n m, n 0 } Θεωρούµε την L = { a n b n c n m, n 0 }. Αν η τοµή των CFLs είναι CFL, τότε η L ϑα είναι CFL, διότι: L = L 1 L 2 ΑΤΟΠΟ (από προηγούµενο παράδειγµα). Αν το συµπλήρωµα µιας CFL είναι CFL, τότε η L ϑα είναι CFL, διότι: Τα i και j δε γίνεται να είναι ίσα µε p, άρα δεν ανήκει στη γλώσσα. ΑΤΟΠΟ ΑΤΟΠΟ L = L 1 L 2 = L1 L2 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 35 / 36 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Γλώσσες χωρίς Συµφραζόµενα 36 / 36