Άσκηση 1 Σειρά Προβλημάτων 3 Λύσεις Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { a k b m c n k < m ή m > 2n, όπου k,m,n 0 } Μια γραμματική για τη γλώσσα έχει ως εξής: S S 1 C ΑS 2 S 1 as 1 b S 1 b b C cc ε S 2 bbs 2 c bs 2 b Α a ε H γραμματική θεωρεί τις δύο διαφορετικές περιπτώσεις ξεχωριστά: η λέξη S 1 C δημιουργεί όλες τις λέξεις a k b m c n όπου k < m και η λέξη S 1 C δημιουργεί όλες τις λέξεις a k b m c n όπου m > 2n. (β) Τη γλώσσα που περιέχει όλους τους πραγματικούς αριθμούς όπου είτε το ακέραιο σκέλος είτε το δεκαδικό σκέλος μπορεί να είναι κενό (αλλά όχι και τα δύο) και το ακέραιο σκέλος δεν μπορεί να ξεκινά με 0. Για παράδειγμα, οι λέξεις 12.3, 45., και.67 ανήκουν στη γλώσσα, αλλά οι λέξεις. ή 089.12 δεν ανήκουν στη γλώσσα. Μια γραμματική για τη γλώσσα έχει ως εξής: S Α. Α.Δ.Δ NB N B ZB Z Δ Ζ ΖΔ Ν 1 2 8 9 Ζ 0 Ν (γ) { w {a,b,c} * η w δεν έχει τη μορφή xcx rev για κάποιο x {a,b} * } Μια λέξη ανήκει στη γλώσσα αν ισχύει ένα από τα πιο κάτω: Δεν περιέχει κανένα c. Περιέχει δύο ή περισσότερα c. Περιέχει ακριβώς 1 c αλλά η λέξη που προηγείται του c δεν είναι η αντίστροφη της λέξης που ακολουθεί το c. Παράγουμε τις τρεις κατηγορίες λέξεων από την πιο κάτω γραμματική μέσω των μεταβλητών U, V, R αντίστοιχα. S U V R U au bu ε Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2016 Σελίδα 1
V UcUcT T at bt ct ε R ara brb awb bwa Zc cz W UcU Z au bu a b Άσκηση 2 Να κτίσετε αυτόματα στοίβας για τις πιο κάτω γλώσσες: (α) { a k b m c n k < m ή m > 2n, όπου k,m,n 0 } Ακολουθεί το ζητούμενο αυτόματο. Παρατηρούμε ότι από την αρχική κατάσταση το αυτόματο γράφει το $ σπάζοντας σε δύο μονοπάτια ανάλογα με το αν k < m ή m > 2n. Στο πάνω μονοπάτι φυλάει ένα a στη στοίβα για κάθε a που διαβάζει ενώ αναμένει να διαβάσει τουλάχιστον ένα περισσότερο b πριν να αποδεχθεί λέξεις που δυνατόν να συνεχίζουν με επιπρόσθετα b και στη συνέχεια μια ακολουθία από c. Στο κάτω μονοπάτι αφού διαβάσει κάποια a συνεχίζει διαβάζοντας ένα αριθμό από b. Μετά από το πρώτο b αποθηκεύει ένα b στη στοίβα για κάθε δεύτερο b που διαβάζει στην είσοδο και στη συνέχεια αφαιρεί ένα b από τη στοίβα για κάθε c που διαβάζει στην είσοδο. Αποδέχεται αν τα c τελειώσουν πριν ή ταυτόχρονα με τα b στη στοίβα. a,ε a b,a ε b,ε ε c,ε ε ε,ε $ ε,ε ε b,$ ε 1 2 3 c,ε ε 4 0 a,ε ε b,ε ε 7 b, ε b c, b ε ε, $ ε c, b ε ε,ε $ 5 b,ε ε 6 c, b ε ε, $ ε 8 ε,ε ε 4 (β) { xy x=x 1 x 2 x n {1,2} *, y=y 1 y 2 y k {5} * και x 1 +x 2 + +x n = y 1 +y 2 + +y k } (Οι λέξεις 2125 και 12122255 ανήκουν στη γλώσσα ενώ οι λέξεις 2552 και 225 δεν ανήκουν στη γλώσσα) Ακολουθεί το ζητούμενο αυτόματο: Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2016 Σελίδα 2
1,ε 1 2,ε 2 ε,$ ε ε,ε $ ε,ε ε 5,ε ε ε,ε 1 ε,ε ε Η βασική ιδέα του αυτόματου είναι ότι σε πρώτη φάση αποθηκεύει στη στοίβα τα 1 και 2 που συναντά, ενώ στη δεύτερη φάση, για κάθε 5 που διαβάζει πρέπει να αφαιρέσει την ίδια ποσότητα από 1 και 2. Σε περίπτωση που αναγκαστεί να ανασύρει από τη στοίβα ποσότητα 6, τότε επιστρέφει πίσω στη στοίβαένα 1 (γ) { w {a,b,c} * η w δεν έχει τη μορφή xcx rev για κάποιο x {a,b} * } Ακολουθεί το ζητούμενο αυτόματο: a,ε a b,ε b 1 ε,ε $ 2 a,a ε b,b ε c,ε ε 3 a,b ε a,$ ε b,a ε b,$ ε c, $ ε ε,a ε ε,b ε a,ε ε b,ε ε c,ε ε 5 Η βασική ιδέα του αυτόματου είναι ότι στην πρώτη φάση, αποθηκεύει στη στοίβα σύμβολα εφόσον είναι ένα από τα a, b. Μετά από κάθε τέτοιο σύμβολο μπορεί να αποδεχθεί τη λέξη. Όταν και αν φτάσει στην είσοδο ένα τότε πρέπει να επιβεβαιώσουμε Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2016 Σελίδα 3
ότι η λέξη που θα ακολουθήσει δεν θα είναι η ανάστροφη της πρώτης. Επομένως, όσο τα σύμβολα που διαβάζονται είναι τα ίδια με τα σύμβολα κορυφής της στοίβας τότε δεν μπορούμε να αποδεχθούμε τη λέξη. Αν όμως (1) το σύμβολο της εισόδου διαφέρει από το σύμβολο κορυφής της στοίβας, ή (2) τα σύμβολα στην είσοδο είναι περισσότερα από τα σύμβολα στην στοίβα (η στοίβα αδειάσει), ή (3) τα σύμβολα στην είσοδο είναι λιγότερα από τα σύμβολα στη στοίβα, ή (4) διαβάσουμε ένα δεύτερο σύμβολο c, τότε μπορούμε να αποδεχθούμε τη λέξη. Άσκηση 3 (α) Θεωρήστε την πιο κάτω ασυμφραστική γραμματική σε Κανονική Μορφή Chomsky. S T B B b C a T B B b C a Να κατασκευάσετε παραγωγές και τα αντίστοιχα συντακτικά δέντρα για τις λέξεις (ι) aab και (ιι) abaa. (β) Να αποδείξετε ότι αν μια γραμματική G βρίσκεται σε κανονική μορφή Chomsky και η λέξη w ανήκει στη γλώσσα που παράγεται από τη G, τότε οποιαδήποτε παραγωγή της w απαιτεί ακριβώς 2n 1 βήματα όπου n είναι το μήκος της λέξης w. (ι) S B CB acb aab aab (ιι) S T B ab ab abc abac abaa S S B T C b B C a a a b a a (β) Να αποδείξετε ότι αν μια γραμματική G βρίσκεται σε κανονική μορφή Chomsky και η λέξη w ανήκει στη γλώσσα που παράγεται από τη G, τότε οποιαδήποτε παραγωγή της w απαιτεί ακριβώς 2n 1 βήματα όπου n είναι το μήκος της λέξης w. Η απόδειξη μπορεί να γίνει με επαγωγή στο μήκος της λέξης. Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2016 Σελίδα 4
Βασική περίπτωση: Έστω ότι το μήκος της λέξης είναι 1. Τότε η λέξη είναι η a για κάποιο τερματικό σύμβολο a και η παραγωγή της πρέπει να είναι η: S α Προφανώς, παραγωγή της λέξης μπορεί να γίνει με ακριβώς ένα βήμα. Αφού 1 = 2x1 1 = 1, το ζητούμενο έπεται. Υπόθεση της Επαγωγής: Υποθέτουμε ότι για κάθε λέξη w μήκους < k, οποιαδήποτε παραγωγή της w απαιτεί ακριβώς 2m 1 βήματα όπου m είναι το μήκος της λέξης w. Βήμα της Επαγωγής: Έστω λέξη w μήκους k > 1 και S w 1 w 2 w μια παραγωγή της. Αφού η γραμματική με την οποία δουλεύουμε βρίσκεται σε κανονική μορφή Chomsky, πρέπει να ισχύει ότι S ΑΒ w 2 w όπου Α και Β μεταβλητές της γραμματικής. Προφανώς, η υπόλοιπη παραγωγή είναι τέτοια ώστε Α x 1 και Β x 2 όπου w = x 1 x 2. Μπορούμε να υποθέσουμε ότι καμιά από τις x 1 και x 2 δεν είναι η κενή λέξη (αποδείξτε το!), αφού δεν υπάρχει κανόνας τέτοιος ώστε V ε, εκτός από τον κανόνα S ε, όπου S η εναρκτήρια μεταβλητή, και αφού η μεταβλητή S δεν μπορεί να εμφανίζεται στο δεξί μέλος κάποιου κανόνα. Επομένως, από την υπόθεση της επαγωγής και αφού τα μήκη των x 1 και x 2 είναι μικρότερα από k, έχουμε ότι Α x 1 απαιτεί ακριβώς 2m 1 βήματα όπου m το μήκος της x 1, και Β x 2 απαιτεί ακριβώς 2p 1 βήματα όπου p το μήκος της x 2. Επομένως η παραγωγή S B x 1 x 2 απαιτεί ακριβώς 2m 1 + 2p 1 + 1 = 2m+ 2p 1 = 2k 1 βήματα. Το ζητούμενο έπεται. Άσκηση 4 Να δείξετε ότι οι πιο κάτω γλώσσες δεν είναι ασυμφραστικές αιτιολογώντας με ακρίβεια τις απαντήσεις σας. (α) Λ 1 = {a i b 2i c 3i i 0} Υποθέτουμε για να φτάσουμε σε αντίφαση ότι η Λ 1 είναι ασυμφραστική. Τότε, σύμφωνα με το Λήμμα της Άντλησης, υπάρχει p, το μήκος άντλησης της γλώσσας, τέτοιο ώστε κάθε λέξη της γλώσσας με μήκος μεγαλύτερο από p να ικανοποιεί την ιδιότητα που περιγράφεται στο λήμμα. Ας επιλέξουμε τη λέξη w = a p b 2p c 3p. Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2016 Σελίδα 5
Τότε, σύμφωνα με το λήμμα, w = uvxyz έτσι ώστε η υπολέξη vxy περιέχει το πολύ p σύμβολα ( vxy p), τουλάχιστον μία από τις v και y είναι μη κενή ( vy > 0) και οποιαδήποτε ταυτόχρονη επανάληψη των υπολέξεων v και y διατηρεί την προκύπτουσα λέξη εντός της γλώσσας (uv i xy i z Λ 1, i 0). Αφού vxy p, τότε η λέξη αυτή δεν μπορεί να εκτείνεται σε περισσότερα από δύο τμήματα της λέξης. Διακρίνουμε τις πιο κάτω περιπτώσεις. Αν η vxy εκτείνεται μόνο σε κάποιο από τα τμήματα a p, b 2p και c 3p τότε τα v και y θα αποτελούνται μόνο από ένα σύμβολο (μόνο a ή μόνο b ή μόνο c). Επομένως, αν αφαιρέσουμε τα τμήματα v και y, η λέξη που θα προκύψει δεν θα ανήκει στη γλώσσα μας. Για παράδειγμα αν το vxy εκτείνεται μόνο στο τμήμα από a, τότε w = uv 0 xy 0 z = a p λ μ b 2p c 3p όπου λ = v, μ = y και προφανώς w Λ 1. Αν η vxy εκτείνεται στα συνεχόμενα τμήματα a p και b 2p και τα v περιέχουν μόνο a και το y μόνο b, τότε w = uv 0 xy 0 z = a p λ b 2p μ c 3p όπου λ = v, μ = y και προφανώς w Λ 1. Αν η vxy εκτείνεται στα συνεχόμενα τμήματα b p και c 2p και τα v περιέχουν μόνο b και το y μόνο c, τότε w = uv 0 xy 0 z = a p b 2p μ c 3p όπου λ = v, μ = y και προφανώς w Λ 1. Αν η vxy εκτείνεται στα συνεχόμενα τμήματα a p και b 2p και ένα από τα v και y περιέχει και a και b, τότε w = uv 1 xy 1 z Λ 1. Αυτό ισχύει γιατί όχι μόνο θα επηρεαστεί το πλήθος των a και b χωρίς να αλλάξει το πλήθος των c αλλά επίσης θα χαλάσει και η σειρά στην οποία βρίσκονται τα σύμβολα στη λέξη. Αν η vxy εκτείνεται στα συνεχόμενα τμήματα b 2p και c 3p και ένα από τα v και y περιέχει και b και c, τότε w = uv 1 xy 1 z Λ 1. Αυτό ισχύει γιατί όχι μόνο θα επηρεαστεί το πλήθος των b και c χωρίς να αλλάξει το πλήθος των a αλλά επίσης θα χαλάσει και η σειρά στην οποία βρίσκονται τα σύμβολα στη λέξη. Αυτό μας οδηγεί σε αντίφαση και επομένως η υπόθεσή μας ότι η γλώσσα Λ 1 είναι ασυμφραστική ήταν εσφαλμένη. Συμπέρασμα: Η Λ 1 είναι μη ασυμφραστική. (β) Λ 2 = {w w {0,1} * και η w είναι καρκινική και περιέχει τον ίδιο αριθμό από 0 και 1} Υποθέτουμε για να φτάσουμε σε αντίφαση ότι η Λ 2 είναι ασυμφραστική. Τότε, σύμφωνα με το Λήμμα της Άντλησης, υπάρχει p, το μήκος άντλησης της γλώσσας, τέτοιο ώστε κάθε λέξη της γλώσσας με μήκος μεγαλύτερο από p να ικανοποιεί την ιδιότητα που περιγράφεται στο λήμμα. Ας επιλέξουμε τη λέξη s = 0 p 1 p 1 p 0 p = 0 p 1 2p 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 εκτείνεται μόνο σε κάποιο από τα τμήματα 0 p ή 1 p, τότε τα v και y θα αποτελούνται μόνο από 1 ή μόνο από 0. Επομένως, αν αφαιρέσουμε τα τμήματα v και y, η λέξη που θα προκύψει δεν θα έχει πια ίσο αριθμό από 0 και 1. Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2016 Σελίδα 6
Τέλος, αν η vxy εκτείνεται σε δύο συνεχόμενα τμήματα 0 p και 1 p, τότε παρατηρούμε ότι, αν αφαιρέσουμε τα τμήματα v και y, η λέξη που θα προκύψει και πάλι δεν θα ανήκει στη γλώσσα μας γιατί η λέξη που θα προκύψει δεν θα είναι καρκινική λέξη. Αυτό μας οδηγεί σε αντίφαση και επομένως η υπόθεσή μας ότι η γλώσσα Λ 2 είναι ασυμφραστική ήταν εσφαλμένη. Συμπέρασμα: Η Λ 2 είναι μη ασυμφραστική. (γ) Λ 3 = { w#z w, z {a,b}* και η z είναι υπολέξη της w} Υποθέτουμε για να φτάσουμε σε αντίφαση ότι η Λ 3 είναι ασυμφραστική. Τότε, σύμφωνα με το Λήμμα της Άντλησης, υπάρχει p, το μήκος άντλησης της γλώσσας, τέτοιο ώστε κάθε λέξη της γλώσσας με μήκος μεγαλύτερο από p να ικανοποιεί την ιδιότητα που περιγράφεται στο λήμμα. Ας επιλέξουμε τη λέξη s = 0 p 1 p #0 p 1 p και ας ονομάσουμε τα τμήματα της λέξης ως Α, Β,Γ,Δ,Ε, όπου w = ΑΒΓΔΕ, και Α = 0 p, Β = 1 p, Γ = #, Δ = 0 p και Ε = 1 p. Τότε, σύμφωνα με το λήμμα, w = uvxyz έτσι ώστε η υπολέξη vxy περιέχει το πολύ p σύμβολα ( vxy p), τουλάχιστον μία από τις v και y να είναι μη κενή ( vy > 0) και οποιαδήποτε ταυτόχρονη επανάληψη των υπολέξεων v και y να διατηρεί την προκύπτουσα λέξη εντός της γλώσσας (uv i xy i z Λ 2, i 0). Διακρίνουμε τις πιο κάτω περιπτώσεις. Αν η vxy εκτείνεται μόνο στο τμήμα Α, τότε τα v και y θα αποτελούνται μόνο από 0. Επομένως, αν αφαιρέσουμε τα τμήματα v και y, η λέξη που θα προκύψει δεν θα ανήκει στη γλώσσα μας: uv 0 xy 0 z = 0 p μ λ 1 p #0 p 1 p Λ 3, για μ = v, λ = y. Αυτό ισχύει γιατί η λέξη που ακολουθεί το # δεν είναι υπολέξη της λέξης που προηγείται του #. Το ίδιο επιχείρημα μπορεί να εφαρμοστεί για να δείξουμε ότι, αν η vxy εκτείνεται στο τμήμα Β ή αν εκτείνεται και στα δύο τμήματα ή αν εκτείνεται στα τμήματα Α, Β και Γ, τότε και πάλι η λέξη δεν επιδέχεται άντλησης. Αν η vxy εκτείνεται μόνο στο τμήμα Δ, τότε τα v και y δυνατόν να αποτελούνται από 0. Επομένως, αν αντλήσουμε τα τμήματα v και y, η λέξη που θα προκύψει δεν θα ανήκει στη γλώσσα μας: uv 1 xy 1 z = 0 p 1 p #0 p+μ+ν 1 p Λ 3, για μ = v, λ = y. Αυτό ισχύει γιατί η λέξη που ακολουθεί το # δεν είναι υπολέξη της λέξης που προηγείται του #. Το ίδιο επιχείρημα μπορεί να εφαρμοστεί δείχνοντας ότι αν η vxy εκτείνεται στο τμήμα Ε ή στα συνεχόμενα τμήματα Δ και Ε ή στα Γ, Δ και Ε), τότε, και πάλι, η λέξη δεν θα επιδέχεται άντλησης. Αυτό μας οδηγεί σε αντίφαση και επομένως η υπόθεσή μας ότι η γλώσσα Λ 3 είναι ασυμφραστική ήταν εσφαλμένη. Συμπέρασμα: Η Λ 3 είναι μη ασυμφραστική. Άσκηση 5 Για δύο γλώσσες Α και Β έστω η γλώσσα Α Β = { xy x, y B, και x = y } Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2016 Σελίδα 7
Να δείξετε ότι αν οι γλώσσες Α και Β είναι κανονικές, τότε η γλώσσα Α Β είναι ασυμφραστική. Για να δείξουμε το ζητούμενο υποθέτουμε ότι Μ 1 = (Q 1, Σ 1, δ 1, q 1, F 1 ) είναι ένα DF αυτόματο που αναγνωρίζει τη γλώσσα Α και Μ 2 = (Q 2, Σ 2, δ 2, q 2, F 2 ) είναι ένα DF αυτόματο που αναγνωρίζει τη γλώσσα Β. Θα δείξουμε ότι υπάρχει αυτόματο στοίβας που αναγνωρίζει τη γλώσσα Α Β. Το αυτόματο αυτό είναι το αυτόματο P = (Q 1 Q 2 {q 0, q f }, Σ 1 Σ 2, {x,$}, δ, q 0, {q f }), όπου,$,,,,,,,,,,,,,, $ Με λόγια, το αυτόματο αυτό ξεκινά γράφοντας το σύμβολο $ για να αναγνωρίζει τον πάτο της στοίβας. Στη συνέχεια διαβάζει την είσοδο και τη χειρίζεται σύμφωνα με το αυτόματο Μ 1 και τη συνάρτηση μεταβάσεων δ 1 με τη διαφορά ότι σε κάθε ανάγνωση συμβόλου τοποθετεί το σύμβολο x μέσα στη στοίβα για να γνωρίζει το μήκος της λέξης που έχει διαβαστεί. Όταν φτάσει σε τελική κατάσταση του αυτομάτου Μ 1, υπάρχει η δυνατότητα χωρίς να διαβάσει σύμβολο από την είσοδο και χωρίς να διαβάσει ή να γράψει στη στοίβα να προχωρήσει στην αρχική κατάσταση του αυτομάτου που αναγνωρίζει τη γλώσσα Β. Από τις καταστάσεις αυτές χειρίζεται την είσοδο σύμφωνα με το δεύτερο αυτόματο με τη διάφορα ότι με κάθε σύμβολο που διαβάζει αφαιρεί ένα στοιχείο από τη στοίβα. Αν καταλήξει σε τελική κατάσταση του αυτομάτου Β και η στοίβα αδειάσει τότε το αυτόματο οδηγείται στην κατάσταση q f οπόταν θα αποδεχθεί τη λέξη. Μπορούμε να αποδείξουμε ότι το αυτόματο στοίβας Ρ αποδέχεται μια λέξη w αν και μόνο αν w Α Β: Ας υποθέσουμε λοιπόν ότι w L(T). Τότε η w μπορεί να γραφτεί στη μορφή w = w 1 w 2 w m όπου κάθε w i Σ ε, και υπάρχει ακολουθία καταστάσεων r 0, r 1,, r m και ακολουθία λέξεων s 0, s 1,, s m Γ * που να ικανοποιούν τις συνθήκες: r 0 = και s 0 = ε Για κάθε i = 0,,m 1,,b δ,,, όπου s i = at και s i+1 =bt για κάποια a, b Γ ε και t Γ *, και r m = q f Τότε, από τον ορισμό του Ρ, r 1,, r k Q 1, r k+1,, r m 1 Q 2, r 1 η αρχική κατάσταση του αυτόματου Μ 1 και r k F 1, r k+1 η αρχική κατάσταση του αυτόματου Μ 2 και r m 1 F 2 ενώ το μήκος των δύο ακολουθιών πρέπει να είσαι ίσο αφού στην πρώτη ακολουθία προσθέτουμε στοιχεία στη στοίβα, ενώ στη δεύτερη ακολουθία αφαιρούμε ίσο αριθμό από στοιχεία. Συνεπώς, w = εαβε, όπου α Α και β Β, και τα μήκη των λέξεων α και β είναι ίσα. Συμπεραίνουμε ότι w Α Β. Η αντίθετη κατεύθυνση, σύμφωνα με την οποία αν w Α Β τότε w L(P) ακολουθεί όμοια επιχειρήματα. Λύσεις Σειράς Προβλημάτων 3 Εαρινό Εξάμηνο 2016 Σελίδα 8