Άσκηση 1 Σειρά Προβλημάτων 3 Λύσεις Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { xyxy rev x {a, b}, y {a, b} * } (α) Μια γραμματική για τη γλώσσα έχει ως εξής: S as a bs b S a as a a bs a b a S b as b a bs b b b Σύμφωνα με τη γραμματική αυτή στην αρχή τοποθετείται το πρώτο σύμβολο και ανάλογα προχωρούμε σε μια καινούρια μεταβλητή η οποία θα δημιουργήσει τη συνέχεια της λέξης, δηλαδή, το yxy rev όπου x είναι το σύμβολο που τοποθετήθηκε στον πρώτο κανόνα. (β) { r η r είναι μια κανονική έκφραση που παράγεται από το αλφάβητο {0,1} } (β) Μια γραμματική για τη γλώσσα έχει ως εξής: S 0 1 ε (S) * (S S) (SS) Θεωρούμε ότι χρησιμοποιούνται πλήρως οι παρενθέσεις για να δηλώσουν τη σειρά με την οποία εφαρμόζονται οι πράξεις. (γ) { w {a,b} * w a = 2 w b } Σημείωση: Γράφουμε w a για το πλήθος των εμφανίσεων του a στο w. (Για παράδειγμα abbabaaba a = 5 και abbabaaba b = 4.) (γ) Μια γραμματική για τη γλώσσα έχει ως εξής: S SS aasb bsaa asbsa ε Άσκηση 2 Να κτίσετε αυτόματα στοίβας για τις πιο κάτω γλώσσες: (α) { xyxy rev x {a, b}, y {a, b} * } Ακολουθεί το ζητούμενο αυτόματο. Παρατηρούμε ότι από την αρχική κατάσταση το αυτόματο γράφει το $ στη στοίβα και στη συνέχεια σπάζει σε δύο μονοπάτια ανάλογα με το αν το πρώτο σύμβολο που διαβάστηκε είναι το a ή το b. Στα δύο αυτά μονοπάτια, προχωρεί γράφοντας στη στοίβα κάθε σύμβολο που εμφανίζεται στην είσοδο. Μη ντετερμινιστικά από τις καταστάσεις 2 και 4 μπορεί να αλλάξει κατάσταση όταν διαβάσει ένα a και ένα b αντίστοιχα. Το σύμβολο αυτό παίζει τον ρόλο του ενδιάμεσου x. Επομένως, από τις καταστάσεις 3 και 5 το αυτόματο διαβάζει σύμβολα από την είσοδο εφόσον αυτά Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2015 Σελίδα 1
συμπίπτουν με το στοιχείο κορυφής της στοίβας το οποίο και αφαιρείται από τη στοίβα σε κάθε βήμα. Αν με την ολοκλήρωση της ανάγνωσης της λέξης η στοίβα αδειάσει, το αυτόματο θα αποδεχθεί τη λέξη. a,ε a b,ε b a,a ε b,b ε ε,ε $ a,ε a 2 a,ε ε 3 ε,$ ε 0 1 b,ε b a,ε a b,ε b 4 b,ε ε a,a ε b,b ε 5 ε,$ ε 6 (β) { w {a,b} * w a 2 w b } Ακολουθεί το ζητούμενο αυτόματο: 3 b,$ $ b,b B ε,ε B 1 ε,ε $ a,b ε b,a ε 2 ε,a ε ε,a ε 6 a,$ $ a,a A ε,ε A 4 ε,ε A 5 Η βασική ιδέα του αυτόματου είναι ότι ανά πάσα στιγμή η στοίβα κρατά είτε Α, αν έχουν μέχρι στιγμής διαβαστεί περισσότερα a, είτε Β, αν μέχρι στιγμής έχουν διαβαστεί περισσότερα b. Η ποσότητα των αποθηκευμένων στοιχείων αντιπροσωπεύει τον αριθμό των αντίθετων στοιχείων που πρέπει να διαβαστούν για να ισχύει ότι w a = 2 w b. Αρχικά το αυτόματο γράφει στη στοίβα το $ για να αναγνωρίζει την κενή στοίβα. Στη συνέχεια για κάθε b που διαβάζει αν η στοίβα είναι κενή ή περιέχει Β, επανατοποθετεί σε αυτή το $ ή το Β και στη συνέχεια εισάγει ακόμα ένα Β. Αν όμως το στοιχείο κορυφής της στοίβας είναι το Α, τότε διαγράφει το α και συνεχίζει με το επόμενο σύμβολο. Η επεξεργασία των a γίνεται με παρόμοιο τρόπο αλλά αντί ενός Α γράφονται 2 Α στη στοίβα. Το αυτόματο τερματίζει αν στη στοίβα παραμείνει τουλάχιστον ένα Α ή ένα Β. Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2015 Σελίδα 2
(γ) { w {a,b,c} * w a + w b = w c και δεν υπάρχει κανένα c μετά από κάποιο b } Ακολουθεί το ζητούμενο αυτόματο: 4 b,1 1 ε,ε $ b,$ $ ε,ε 1 1 2 5 6 a,0 ε c,1 ε a,$ $ a,1 1 ε,ε 0 3 ε,ε 1 c,$ $ c,0 0 b,0 ε a,0 ε b,0 ε ε,$ ε 7 Η βασική ιδέα του αυτόματου είναι ότι ανά πάσα στιγμή η στοίβα κρατά είτε 1, αν έχουν μέχρι στιγμής διαβαστεί περισσότερα a και b είτε 0, αν μέχρι στιγμής έχουν διαβαστεί περισσότερα c. Η ποσότητα των αποθηκευμένων στοιχείων αντιπροσωπεύει τον αριθμό των αντίθετων στοιχείων που πρέπει να διαβαστούν για να ισχύει ότι w a + w b = w c. Αρχικά το αυτόματο γράφει στη στοίβα το $ για να αναγνωρίζει την κενή στοίβα. Στη συνέχεια για κάθε a που διαβάζει αν η στοίβα είναι κενή ή περιέχει 1, επανατοποθετεί σε αυτή το $ ή το 1 και στη συνέχεια εισάγει ακόμα ένα 1. Αν όμως το στοιχείο κορυφής της στοίβας είναι το 0, τότε διαγράφει το 0 και συνεχίζει με το επόμενο σύμβολο. Η επεξεργασία των c γίνεται με παρόμοιο τρόπο αλλά αντί ενός 1 γράφονται ένα 0 στη στοίβα. Ειδική επεξεργασία γίνεται αν διαβάσουμε το σύμβολο b στην είσοδο. Αυτό οφείλεται στο γεγονός ότι μετά από κάποιο b δεν μπορεί να εμφανιστεί άλλο c. Για τον λόγο αυτό στην κατάσταση 2 γίνεται επεξεργασία του b ανάλογη με αυτή του a αλλά μας οδηγεί σε μία καινούρια κατάσταση, την 6, από όπου μπορούμε να διαβάσουμε μόνο a και b. Το αυτόματο οδηγείται σε τελική κατάσταση αν αδειάσει η στοίβα. Άσκηση 3 Να μεταγάγετε την πιο κάτω ασυμφραστική γραμματική σε Κανονική Μορφή Chomsky. R XRX S S atb bta T XTX X ε Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2015 Σελίδα 3
Ξεκινούμε εισάγοντας μια καινούρια αρχική μεταβλητή. Η καινούρια γραμματική είναι η: S 0 R R XRX S S T atb bta XTX X ε Απαλείφουμε τον κανόνα Χ ε : S 0 R R XRX S XR RX R S T atb bta XTX X XT ΤX Τ ε Απαλείφουμε τον νεοδημιουργηθέντα κανόνα Τ ε και τους κανόνες R R, T T: S 0 R R XRX S XR RX S atb bta ab ba T XTX X XT ΤX ΧΧ Απαλείφουμε τους μοναδιαίους κανόνες: Κανόνας Τ Χ S 0 R R XRX S XR RX S atb bta ab ba T XTX XT ΤX ΧΧ a b Κανόνας R S S 0 R R XRX XR RX atb bta ab ba S atb bta ab ba T XTX XT ΤX ΧΧ a b Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2015 Σελίδα 4
Κανόνας S 0 R S 0 XRX XR RX atb bta ab ba R XRX XR RX atb bta ab ba S atb bta ab ba T XTX XT ΤX ΧΧ a b Μεταγράφουμε όσους κανόνες οδηγούν σε λέξεις με μήκος μεγαλύτερο από δύο εισάγοντας καινούριες μεταβλητές και σχετικούς κανόνες: S 0 XU AV BW AB BA XR RX R XU AV BW AB BA XR RX S AV BW AB BA T XZ XT ΤX ΧΧ a b U RX V TB W TA Z TX B b A a Αυτό ολοκληρώνει τη διαδικασία. Άσκηση 4 Να δείξετε ότι οι πιο κάτω γλώσσες δεν είναι ασυμφραστικές αιτιολογώντας με ακρίβεια τις απαντήσεις σας. (α) Λ 1 = { 01 i 01 i 01 i 01 i 1 i 0 } Υποθέτουμε για να φτάσουμε σε αντίφαση ότι η Λ 1 είναι ασυμφραστική. Τότε, σύμφωνα με το Λήμμα της Άντλησης, υπάρχει p, το μήκος άντλησης της γλώσσας, τέτοιο ώστε κάθε λέξη της γλώσσας με μήκος μεγαλύτερο από p να ικανοποιεί την ιδιότητα που περιγράφεται στο λήμμα. Ας επιλέξουμε τη λέξη w = 01 p 01 p 01 p 01 p 1. Τότε, σύμφωνα με το λήμμα, w = uvxyz έτσι ώστε η υπολέξη vxy περιέχει το πολύ p σύμβολα ( vxy p), τουλάχιστον μία από τις v και y είναι μη κενή ( vy > 0) και οποιαδήποτε ταυτόχρονη επανάληψη των υπολέξεων v και y διατηρεί την προκύπτουσα λέξη εντός της γλώσσας (uv i xy i z Λ 1, i 0). Αφού vxy p, τότε η λέξη αυτή δεν μπορεί να εκτείνεται σε περισσότερα από δύο τμήματα της λέξης. Διακρίνουμε τις πιο κάτω περιπτώσεις. Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2015 Σελίδα 5
Αν η vxy εκτείνεται μόνο σε κάποιο από τα τμήματα 1 p, τότε τα v και y θα αποτελούνται μόνο από 1. Επομένως, αν αφαιρέσουμε τα τμήματα v και y, η λέξη που θα προκύψει δεν θα ανήκει στη γλώσσα μας. Για παράδειγμα αν το vxy εκτείνεται μόνο στο πρώτο τμήμα από 1, τότε w = uv 0 xy 0 z = 01 i λ μ 01 i 01 i 01 i 1 όπου λ = v, μ = y και προφανώς w Λ 1. Αν η vxy εκτείνεται σε δύο συνεχόμενα τμήματα 0 και 1, τότε αν το v είναι μη κενό η λέξη w = uv 2 xy 2 z θα περιέχει το τμήμα 01 λ 01 λ όπου λ = v < p και προφανώς w Λ 1. Αν η vxy εκτείνεται σε δύο τμήματα 1 p, τότε, αν αφαιρέσουμε τα τμήματα v και y, η λέξη που θα προκύψει δεν θα ανήκει στη γλώσσα μας διότι τουλάχιστον ένα από τα τμήματα με 1 θα μειωθεί σε μήκος. Αυτό μας οδηγεί σε αντίφαση και επομένως η υπόθεσή μας ότι η γλώσσα Λ 1 είναι ασυμφραστική ήταν εσφαλμένη. Συμπέρασμα: Η Λ 1 είναι μη ασυμφραστική. (β) Λ 2 = { ww rev w {a, b} * και w αποτελεί καρκινική λέξη } Υποθέτουμε για να φτάσουμε σε αντίφαση ότι η Λ 2 είναι ασυμφραστική. Τότε, σύμφωνα με το Λήμμα της Άντλησης, υπάρχει p, το μήκος άντλησης της γλώσσας, τέτοιο ώστε κάθε λέξη της γλώσσας με μήκος μεγαλύτερο από p να ικανοποιεί την ιδιότητα που περιγράφεται στο λήμμα. Ας επιλέξουμε τη λέξη s = 0 p 1 p 0 p 0 p 1 p 0 p = 0 p 1 p 0 2p 1 p 0 p. Τότε, σύμφωνα με το λήμμα, w = uvxyz έτσι ώστε η υπολέξη vxy περιέχει το πολύ p σύμβολα ( vxy p), τουλάχιστον μία από τις v και y είναι μη κενή ( vy > 0) και οποιαδήποτε ταυτόχρονη επανάληψη των υπολέξεων v και y διατηρεί την προκύπτουσα λέξη εντός της γλώσσας (uv i xy i z Λ 2, i 0). Αφού vxy p, τότε η λέξη αυτή δεν μπορεί να εκτείνεται σε περισσότερα από δύο τμήματα της λέξης. Διακρίνουμε τις πιο κάτω περιπτώσεις. Αν η vxy εκτείνεται μόνο σε κάποιο από τα τμήματα 1 p, τότε τα v και y θα αποτελούνται μόνο από 1. Επομένως, αν αφαιρέσουμε τα τμήματα v και y, η λέξη που θα προκύψει δεν θα ανήκει στη γλώσσα μας γιατί η λέξη που θα προκύψει δεν θα έχει πια τη μορφή ww rev. Παρόμοια, αν η vxy εκτείνεται μόνο στο πρώτο ή στο τελευταίο τμήμα από τα τμήματα 0 p, τότε τα v και y θα αποτελούνται μόνο από 0. Επομένως, αν αφαιρέσουμε τα τμήματα v και y, η λέξη που θα προκύψει δεν θα ανήκει στη γλώσσα μας γιατί η λέξη που θα προκύψει δεν θα έχει πια τη μορφή ww rev. Κάτι αντίστοιχο ισχύει στις περιπτώσεις όπου η vxy ξεκινά από το πρώτο τμήμα με 0 και συνεχίζει στο πρώτο τμήμα με 1, ή ξεκινά από το πρώτο τμήμα με 1 και συνεχίζει στο δεύτερο τμήμα από 0, ή ξεκινά από το δεύτερο τμήμα από 0 και εκτείνεται στο δεύτερο τμήμα από 1 ή τέλος ξεκινά από το δεύτερο τμήμα από 1 και συνεχίζει στο τελευταίο τμήμα από 0. Τέλος, αν η vxy εκτείνεται στο μεσαίο τμήμα από 0 p, τότε τα v και y θα αποτελούνται μόνο από 0. Παρατηρούμε ότι, αν αφαιρέσουμε τα τμήματα v και y, η λέξη που θα προκύψει και πάλι δεν θα ανήκει στη γλώσσα μας γιατί η λέξη που θα προκύψει δεν θα έχει πια τη μορφή ww rev όπου επιπρόσθετα η w είναι καρκινική λέξη. Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2015 Σελίδα 6
Αυτό μας οδηγεί σε αντίφαση και επομένως η υπόθεσή μας ότι η γλώσσα Λ 2 είναι ασυμφραστική ήταν εσφαλμένη. Συμπέρασμα: Η Λ 2 είναι μη ασυμφραστική. (γ) Λ 3 = {a i b i c j i, j 0, j 2 i } Υποθέτουμε για να φτάσουμε σε αντίφαση ότι η Λ 3 είναι ασυμφραστική. Τότε, σύμφωνα με το Λήμμα της Άντλησης, υπάρχει p, το μήκος άντλησης της γλώσσας, τέτοιο ώστε κάθε λέξη της γλώσσας με μήκος μεγαλύτερο από p να ικανοποιεί την ιδιότητα που περιγράφεται στο λήμμα. Ας επιλέξουμε τη λέξη s = a p b p c k, k = 2 p. Τότε, σύμφωνα με το λήμμα, w = uvxyz έτσι ώστε η υπολέξη vxy περιέχει το πολύ p σύμβολα ( vxy p), τουλάχιστον μία από τις v και y να είναι μη κενή ( vy > 0) και οποιαδήποτε ταυτόχρονη επανάληψη των υπολέξεων v και y να διατηρεί την προκύπτουσα λέξη εντός της γλώσσας (uv i xy i z Λ 3, i 0). Αφού vxy p, τότε η λέξη αυτή δεν μπορεί να εκτείνεται σε περισσότερα από δύο τμήματα της λέξης. Διακρίνουμε τις πιο κάτω περιπτώσεις. Αν η vxy εκτείνεται μόνο σε κάποιο από τα τμήματα a, τότε τα v και y θα αποτελούνται μόνο από a. Επομένως, αν αφαιρέσουμε τα τμήματα v και y, η λέξη που θα προκύψει δεν θα ανήκει στη γλώσσα μας για τον λόγο ότι τα a δεν θα είναι πια ίσα σε πλήθος με τα b. Έστω ότι η vxy εκτείνεται τόσο ανάμεσα στα a όσο και ανάμεσα στα b. Σε αυτή την περίπτωση και εφόσον τα v και y είναι μη κενά η λέξη w = uv 0 xy 0 z = a p λ b p μ c k, όπου v = λ και x = m και k = 2 p. Τότε αφού k = 2 p > 2 p μ, 2 p λ έχουμε ότι w Λ 3. Κάτι αντίστοιχο ισχύει αν η vxy εκτείνεται τόσο ανάμεσα στα b όσο και ανάμεσα στα c. Τέλος, αν η vxy εκτείνεται μόνο στο τμήμα με τα c, τότε τα v και y θα αποτελούνται μόνο από c. Επομένως, αν επαναλάβουμε τα τμήματα v και y, η λέξη που θα προκύψει δεν θα ανήκει στη γλώσσα μας για τον λόγο ότι τα c θα ξεπερνούν σε πλήθος την τιμή 2 p. Αυτό μας οδηγεί σε αντίφαση και επομένως η υπόθεσή μας ότι η γλώσσα Λ 3 είναι ασυμφραστική ήταν εσφαλμένη. Συμπέρασμα: Η Λ 3 είναι μη ασυμφραστική. Άσκηση 5 Έστω L μια γλώσσα επί κάποιου αλφάβητου Σ. Ορίζουμε ως Prefix(L) τη γλώσσα που περιέχει όλες τις λέξεις που αποτελούν προθέματα λέξεων της L: Prefix(L) = {w wx L, x Σ * } Να αποδείξετε με ακρίβεια ότι η κλάση των ασυμφραστικών γλωσσών είναι κλειστή ως προς την πράξη Prefix. Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2015 Σελίδα 7
Για να δείξουμε ότι η κλάση των ασυμφραστικών γλωσσών είναι κλειστή ως προς την πράξη Prefix θα δείξουμε ότι για οποιαδήποτε ασυμφραστική γλώσσα L υπάρχει ασυμφραστική γραμματική που παράγει τη γλώσσα Prefix(L). Αρχικά παρατηρούμε ότι, αφού η γλώσσα L είναι ασυμφραστική υπάρχει ασυμφραστική γραμματική σε κανονική μορφή Chomsky που την περιγράφει. Θα μετατρέψουμε αυτή τη γραμματική σε μια καινούρια γραμματική η οποία θα παράγει την γλώσσα Prefix(L) ως εξής: Για κάθε κανόνα της μορφής S AB θα προσθέσουμε τους δύο κανόνες S AB pref και S A pref όπου για κάθε κανόνα Α a θα προσθέσουμε τον κανόνα Α pref a Τέλος θα προσθέσουμε τον κανόνα S ε. Με αυτό τον τρόπο δίνουμε τη δυνατότητα, κατά την παραγωγή μιας λέξης να τερματίσουμε την παραγωγή στην καινούρια γραμματική πριν να ολοκληρωθεί η παραγωγή σύμφωνα με την αρχική γραμματική. Άσκηση 6 Να παρουσιάσετε τρεις εφαρμογές των κανονικών γλωσσών και τρεις εφαρμογές των ασυμφραστικών γλωσσών. Ψάξτε στο Διαδίκτυο! Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2015 Σελίδα 8