Σύνοψη Προηγούµενου Κανονικές Γλώσσες (3) Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς (Ντετερµινιστική) Κλειστότητα Κανονικών Γλωσσών ως προς Ενωση. Κατασκευή: DFA M από δύο DFAs, M 1, M, ώστε L(M) = L(M 1 ) L(M ). Ισοδυναµία NFAs και DFAs. Κατασκευή: Μετατροπή NFA σε DFA. Κλειστότητα των Κανονικών Γλωσσών ως προς Κανονικές Πράξεις. Κατασκευή ενός NFA N από δύο NFAs, N 1, N ώστε: L(N) = L(N 1 ) L(N ). L(N) = L(N 1 ) L(N ). L(N) = [L(N 1 )]. Κανονικές Εκφράσεις. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 1 / 4 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) / 4 Παραδείγµατα µε Κανονικές Εκφράσεις Σε αυτό το µάθηµα Να γραφεί κανονική έκφραση για καθεµία από τις ακόλουθες γλώσσες: 1. L 1 = { w {, } : η w αρχίζει µε ή τελειώνει µε }.. L = { w {, } : η w έχει το πολύ δύο }. Ισοδυναµία Κανονικών Εκφράσεων µε DFAs/NFAs. Γενικευµένα Μη ντετερµινιστικά Πεπερασµένα Αυτόµατα. Μη Κανονικές Γλώσσες. 3. L 3 = { w {, } : w είναι (ακέραιο) πολλαπλάσιο του 3. }. 4. L 4 = { w {, } : η w δεν έχει τρία ή περισσότερα συνεχόµενα }. Το Λήµµα της Αντλησης. Παραδείγµατα µη Κανονικών Γλωσσών. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 3 / 4 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 4 / 4
Ισοδυναµία µε τα Πεπερασµένα Αυτόµατα Λήµµα 1 (Απόδειξη 1/) Θεώρηµα Μια γλώσσα είναι κανονική αν και µόνο αν γράφεται ως κανονική έκφραση. Αποδεικνύουµε το ϑεώρηµα σε δύο µέρη: Λήµµα 1 Αν µια γλώσσα περιγράφεται από κανονική έκφραση, τότε είναι κανονική. Μετατρέπουµε µια κανονική έκφραση R σε NFA N, ώστε L(N) = L(R). Για καθεµία από τις 6 περιπτώσεις ορισµού των κανονικών εκφράσεων: 1. R = α για κάποιο α Σ. Τότε L(R) = { α } και το ισοδύναµο NFA είναι: Σηµείωση. Αυτό δεν είναι ντετερµινιστικό αυτόµατο: γιατί;. R =. Τότε L(R) = { } και το ισοδύναµο NFA είναι: α Λήµµα Αν µια γλώσσα είναι κανονική, τότε περιγράφεται από κανονική έκφραση. 3. R =. Τότε L(R) = και το ισοδύναµο NFA είναι: Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 5 / 4 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 6 / 4 Λήµµα 1 (Απόδειξη /) Παράδειγµα Μετατροπή της Κανονικής Εκφρασης ( ) σε NFA. 4. R = R 1 R. Τότε χρησιµοποιούµε την κατασκευή µας για την κλειστότητα ως προς ένωση. 5. R = R 1 R. Τότε χρησιµοποιούµε την κατασκευή µας για την κλειστότητα ως προς παράθεση. 6. R = R 1. Τότε χρησιµοποιούµε την κατασκευή µας για την κλειστότητα ως προς σώρευση. Για το σύµβολο : Για το σύµβολο : Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 7 / 4 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 8 / 4
Παράδειγµα Παράδειγµα Μετατροπή της Κανονικής Εκφρασης ( ) σε NFA. Για την έκφραση : Μετατροπή της Κανονικής Εκφρασης ( ) σε NFA. Το τελικό NFA: Για την έκφραση : Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 9 / 4 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 10 / 4 Παραδείγµατα Λήµµα (Σύνοψη Απόδειξης) Για καθεµία από τις κανονικές εκφράσεις να δοθεί ισοδύναµο NFA. 1. ( 0 1 0 0 1 0 1 0 ).. ( 0 1) 0 0 0 ( 0 1 ). 3. ( ( ( 0 0 ) ( 1 1 ) ) 0 1 ). 4. 0 + 1 + 0. Εστω A οποιαδήποτε κανονική γλώσσα που αναγνωρίζεται από DFA. Θα δείξουµε ότι περιγράφεται από κάποια κανονική έκφραση. ιαδικασία που µετατρέπει ένα DFA σε κανονική έκφραση. Εισάγουµε το Γενικευµένο Μη Ντετερµινιστικό Πεπερασµένο Αυτόµατο (Generlized Non-deterministic Finite Automton -- GNFA). Η αποδεικτική µας µέθοδος ϑα: 1 Μετατρέπει σε GNFA, το DFA που αναγνωρίζει την A. Μετατρέπει το GNFA σε κανονική έκφραση. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 11 / 4 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 1 / 4
GNFAs Οι µεταβάσεις επιγράφονται µε κανονικές εκφράσεις αντί µε σύµβολο. Σε ένα ϐήµα υπολογισµού διαβάζεται (υπο-)λέξη, αντί για σύµβολο. Μετάβαση συµβαίνει όταν η (υπο-)λέξη περιγράφεται από την κανονική έκφραση της µετάβασης. 0 1 ( ) 3 Ορισµός GNFAs GNFA (Q, Σ, δ, 0, ˆ) 1. Q είναι το πεπερασµένο σύνολο καταστάσεων.. Σ είναι το αλφάβητο εισόδου. 3. δ : ( Q { ˆ } ) ( Q { 0 } ) R είναι η συνάρτηση µεταβάσεων. 4. 0 είναι η αρχική κατάσταση, ˆ είναι η κατάσταση αποδοχής. όπου R είναι το σύνολο όλων των κανονικών εκφράσεων επί του αλφαβήτου Σ. Παρατηρήσεις: Υπάρχει µόνο µία κατάσταση αποδοχής. Η συνάρτηση µετάβασης ορίζεται πάνω σε Ϲεύγη καταστάσεων, 1,, και δίνει την κανονική έκφραση που αντιστοιχεί στη µετάβαση 1. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 13 / 4 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 14 / 4 Προδιαγραφές GNFA. Μετατροπή DFA σε GNFA (1/3). Για απλοποίηση, απαιτούµε τα GNFAs να έχουν τις εξής προδιαγραφές: 1. Η αρχική κατάσταση µεταβαίνει σε όλες τις άλλες καταστάσεις, αλλά καµία άλλη κατάσταση δε µεταβαίνει στην αρχική.. Μόνο µία κατάσταση αποδοχής, διαφορετική από την αρχική. Προσθέτουµε νέα αρχική κατάσταση µε -µετάβαση προς την παλιά. Προσθέτουµε νέα κατάσταση αποδοχής µε -µεταβάσεις από τις παλιές. Παράδειγµα: Με εισερχόµενες µεταβάσεις από όλες τις άλλες καταστάσεις. 1 Χωρίς εξερχόµενη µετάβαση. 3. Εκτός της αρχικής κατάστασης και της κατάστασης αποδοχής, κάθε άλλη έχει εξερχόµενες µεταβάσεις προς όλες τις άλλες και προς τον εαυτό της. (α), (β), Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 15 / 4 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 16 / 4
Μετατροπή DFA σε GNFA (/3). Αν υπάρχουν: είτε µία µετάβαση µε πολλαπλές επιγραφές, είτε > 1 µεταβάσεις (ίδιας ϕοράς) µεταξύ δύο καταστάσεων, την (τις) αντικαθιστούµε µε µία µετάβαση που επιγράφεται µε την ένωση των προηγούµενων επιγραφών. Μετατροπή DFA σε GNFA (3/3). Αν από κάποια κατάσταση προς κάποια άλλη δεν υπάρχει µετάβαση, εισάγουµε µία µε επιγραφή. Αυτή η µετάβαση δε µπορεί να πραγµατοποιηθεί ποτέ. Παράδειγµα: Παράδειγµα: (β), (γ) (γ) (δ) Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 17 / 4 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 18 / 4 Μετατροπή GNFA σε Κανονική Εκφραση (1/) Μετατροπή GNFA σε Κανονική Εκφραση (/) Σχηµατική Αναπαράσταση της Μετατροπής Εστω ότι το GNFA έχει k καταστάσεις. Θεωρούµε τη «διαγραφή» της κατάστασης στα αριστερά. Ισχύει k : έχει ακριβώς µία αρχική και µία (διαφορετική) αποδοχής. R 4 Αν k =, τότε η επιγραφή της µοναδικής µετάβασης αποτελεί τη Ϲητούµενη κανονική έκφραση. i R 1 j (R 1 ) (R ) (R 3 ) (R 4 ) i j R 3 Αν k > εξαλείφουµε επαναληπτικά µία κατάσταση τη ϕορά, ϕτιάχνοντας µια ακολουθία ισοδύναµων GNFAs. «Αφαιρούµε» πάντα κατάσταση διαφορετική της αρχικής και της αποδοχής. R Για όλες τις µεταβάσεις i j (απευθείας ή µέσω ) και για τους «ϐρόχους» της, εισάγεται νέα µετάβαση i j, µε επιγραφή µια κανονική έκφραση, που περιγράφει όλες τις λέξεις για τις µεταβάσεις αυτές. Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 19 / 4 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 0 / 4
Παράδειγµα Μετατροπής (1/) Παράδειγµα Μετατροπής (/) «Αποµάκρυνση» της κατάστασης : «Αποµάκρυνση» της κατάστασης 1 : s ( ) ( ) ( ) (δ) (ε) (ε) (στ) Τελική Κανονική Εκφραση: ( ) Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 1 / 4 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) / 4 Τυπική Σύνοψη Μετατροπής Ενδεικτική Υλοποίηση Αλγόριθµος ΜΕΤΑΤΡΟΠΗ(G) 1. Εστω k το πλήθος των καταστάσεων του GNFA G.. Αν k =, τότε Q = { 0, ˆ } και επιστρέφουµε δ( 0, ˆ). 3. Αν k > : επιλέγουµε Q { 0, ˆ }, ϑέτουµε G = ( Q, Σ, δ, 0, ˆ ), όπου: Q = Q { }. Για κάθε i Q { ˆ } και j Q { 0 }: Σε γλώσσα Python, από τον Απόστολο Ντόκο, διαθέσιµη εδώ: http://githu.com/ntok33/dfa-to-regulr-expression Εκτέλεση σε commnd line (cmd σε Windows) µε: python df_to_regex.py δ ( i, j ) = (R 1 )(R ) (R 3 ) (R 4 ), όπου: R 1 = δ( i, ), R = δ(, ), R 3 = δ(, j ), R 4 = δ( i, j ). 4. Συνεχίζουµε αναδροµικά, επιστρέφοντας ΜΕΤΑΤΡΟΠΗ(G ). Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 3 / 4 Ο. Τελέλης Πανεπιστήµιο Πειραιώς Κανονικές Γλώσσες (3) 4 / 4