Θεωρία Υπολογισμού και Πολυπλοκότητα Κεφάλαιο 7. Αυτόματα Στοίβας 9,13 Μαρτίου 2007 Δρ. Παπαδοπούλου Βίκη 1
Γιατί τα πεπερασμένα αυτόματα δεν μπορούν να αναπαραστήσουν οποιαδήποτε κατηγορηματική γλώσσα? Ποια είναι τα επιπλέον χαρακτηριστικά απαιτούνται για να μπορούν να αναπαραστήσουν μια κατηγορηματική γλώσσα? Π.χ. την a n b n Αν μπορούσε θυμάται πόσα a είδε όταν δει το πρώτο b να αφαιρέσει ένα a και να συνεχίσει να αφαιρεί a για κάθε επόμενο b βλέπει. Στο τέλος, θα πρέπει να έχει 0 a. Χρήση μιας της στοίβας (stack)! προσθέτει στην κορυφή a της στοίβας (όσο διαβάζει) a και αφαιρεί από την κορυφή της στοίβας a όσο διαβάζει b. 2
Αυτόματο Στοίβας Ορισμός. Το αυτόματο στοίβας είναι μια εξάδα Μ=(Q, Σ, Γ, δ, s, F): Q = πεπερασμένο σύνολο καταστάσεων Σ = αλφάβητο συμβόλων εισόδου Γ = αλφάβητο συμβόλων στοίβας ( \in Γ (αρχικό)) q o Q = αρχική κατάσταση F Q = τελικές καταστάσεις Σχέση μεταβίβασης δ : Q (Σ e} Γ* 2 Q Γ*. δ(p, α, β) = {(q 1, γ 1 ),..((q i, γ i ))} Όταν το αυτόματο είναι στην κατάσταση p Q, το σύμβολο β Γ* είναι στην κορυφή της στοίβας και διαβάσει το a Σ, αντικαταστά το β στην κορυφή της στοίβας με το γ i και μεταβιβάζεται στην κατάσταση q i Q. 3
Μεταβιβάσεις και Συνολικές Καταστάσεις δ(p, u, e) = (q, a) : εισάγει το a στην κορυφή της στοίβας δ(p,u,a)= (q,e): εξάγει το a από την κορυφή της στοίβας Συνολική κατάσταση: (p, u, w) Q (Σ e}* Γ* p: τρέχουσα κατάσταση u: τμήμα λέξης που δεν έχει διαβάσει ακόμα w: περιεχόμενα στοίβας από πάνω προς τα κάτω. Π.χ. (q, u, abc) Η (p,x,z)παράγει ή `M (p, y, w) σε ένα βήμα αν: Υπάρχει δ( p,α, β )= (q,γ ) τέτοιο ώστε: x = α y z = β Z w = γ Ζ 4
Παράδειγμα M=(Q, Σ, Γ, δ, s, F),όπου Q = {q,p}, Σ ={a,b,c}, Γ={a,b}, F = f, και δ: 1. δ(s, a, ε) = {(s, a)} 2. δ(s, b, ε) = {(s, b)} 3. δ(s, c, ε) = {(f, ε)} 4. δ(f,a,a) = {(f, e)} 5. δ(f, b, b) = {(f, e)} Δώστε την παραγωγή της λέξης abbcbba. (s, abbcbba, ε) ` (s, bbcbba, a) (1) ` (s, bcbba, ba) (2) ` (s, cbba, bba) (2) ` (f, bba, bba) (3) ` (f, ba, ba) (5) ` (f, a, a) (4) ` (f, e, e) (4) 5
`* = είναι η μεταβατική, ανακλαστική κλειστότητα της `. Μια λέξη είναι αποδεχτή από το αυτόματο στοίβας εάν: Αρχίζοντας από την αρχική κατάσταση και την στοίβα άδεια, Όταν διαβαστεί όλη η λέξη Το αυτόματο είναι σε τελική κατάσταση και η στοίβα είναι άδεια. ή L(M) = { w Σ*: (s, w, e) `* (p, e, e), p F} Σημείωση. Οι μεταβιβάσεις είναι της μορφής: δ (p, a, β) =(p,w), όπου β Σ και w Γ* Δηλαδή αντικαταστούμε το σύμβολο β κορυφής της στοίβας με τη λέξη w 6
Παράδειγμα Ποια γλώσσα δέχεται το παρακάτω αυτόματο στοίβας? M=(Q, Σ, Γ, δ, s, F),όπου Q= {q,p}, Σ={a,b,c}, Γ={a,b}, F=f, και δ: 1. δ(s, a, ε) = {(s, a)} 2. δ(s, b, ε) = {(s, b)} 3. δ(s, c, ε) = {(f, ε)} 4. δ(f,a,a) = {(f, e)} 5. δ(f, b, b) = {(f, e)} Από την αρχική κατάσταση s βάζει ότι σύμβολο διαβάσει στην στοίβα Ώσπου να διαβάσει το c. Τότε πάει στην τελική κατάσταση f. Για κάθε νέο σύμβολο που διαβάζει αν είναι το ίδιο με την κορυφή της στοίβας το βγάζει από την στοίβα. Είναι η γλώσσα L= {wcw R : w {a,b}*}. 7
Παράδειγμα συνέχεια Σχεδιάστε το αυτόματο στοίβας για τη γλώσσα του προηγούμενου παραδείγματος. x, y/ z = όταν διαβάσει το σύμβολο x και στην κορυφή της στοίβας είναι το y, το αντικαθιστά με το z. 8
Παράδειγμα 2. Κατασκευάστε ένα αυτόματο στοίβας για τη γλώσσα L= {ww R : w {a,b}*}. Θα είναι οι ίδιοι κανόνες όπως πριν αλλά επειδή δεν ξέρουμε πότε είμαστε στη μέση της λέξης οπότε να αρχίσουμε να αφαιρούμε από τη στοίβα Θα υπάρχει μια μετάβαση, όπου θα μαντεύει ότι είναι στη μέση της στοίβας, οπότε και θα αλλάζει κατάσταση χωρίς να καταναλώσει είσοδο. δ(s, ε, ε) = {(f, ε)} δ(s, a, ε) = {(s, a)} 1. δ(s, b, ε) = {(s, b)} 2. δ(s, ε, ε) = {(f, ε)} 3. δ(f,a,a) = {(f, e)} 4. δ(f, b, b) = {(f, e)} Για κάθε w L(M), δεν οδηγούν όλες οι ακολουθίες μεταβάσεων σε τελικά κατάσταση αλλά υπάρχει μια ακολουθία που οδηγεί σε τελική κατάσταση. 9
Παράδειγμα 3. (Φροντιστήριο) Σχεδιάστε ένα αυτόματο στοίβας για τη γλώσσα που δέχεται τις λέξεις w {a,b}* με ίσο αριθμό a και b. Χρησιμοποιούμε ένα ειδικό σύμβολο c ως ένδειξης τέλους για τη στοίβα. Π.χ. (s, e, e ) = (q, c) Στη στοίβα καταχωρούμε ότι την περίσσια από a ή b που είδαμε μέχρι τώρα. M=(Q, Σ, Γ, δ, s, F), Q={s,q,f}, Γ={a,b,c}, F = {f} 1. δ(s, ε, ε) = (q, c) 2. δ(q, a, c) = (q, ac) 3. δ(q, a, a) = (q, aa) 4. δ(q, a, b) = (q, ε) 5. δ(q, b, c) = (q, bc) 6. δ(q, b, b) = (q, bb) 7. δ(q, b, a) = (q, ε) 8. δ(q, ε, c)= (f, ε) 10
Παράδειγμα 4. (Φροντιστήριο) Κατασκευάστε ένα αυτόματο στοίβας για τη γλώσσα {a i b j c k : i,j,k 0, i+k=j} Διαφορετικές καταστάσεις για τον έλεγχο διαδοχής συμβόλων a, b, c Χρησιμοποιούμε τη στοίβα για να ελέγχουμε αν i+k=j Πρέπει να διαβάζει αρχικά a καιναταθυμάταιπόσαa διάβασε. Όταν διαβάσει το πρώτο b να βγάζει a από την στοίβα για κάθε b που διαβάζει Αν έχει και άλλα b να διαβάσει κ η στοίβα είναι άδεια, να προσθέτει b για κάθε νέο b που διαβάζει. Όταν διαβάσει c να αφαιρεί b από την στοίβα για κάθε νέο c που διαβάζει 11
Παράδειγμα 4. (Φροντιστήριο) M=(Q, Σ, Γ, δ, s, F), Q={s, q, p}, Γ={a,b,c}, F = {p} Μεταβιβάσεις: 1. δ(s,a,e)= (s, a) (διόρθωση, σε σχέση με φροντιστήριο 22/3) Ημεταβίβασηδ(q, a, a)= (q, aa) δενπρέπειναυπάρχει. Καλύπτεται από την μεταβίβαση 1. 2. δ(s, e, e) = (q, e) 3. δ(q,b,e)= (q, b) 4. δ(q,b,a)= (q, e) 5. δ(q, e, e) = (p, e) 6. δ(p, c, b) = (p, e) 12
Αυτόματα Στοίβας και Κατηγορηματικές Γραμματικές Θεώρημα 1. Κάθε κατηγορηματική γραμματική γίνεται δεκτή από κάποιο αυτόματο στοίβας. Απόδειξη. Έστω G=(V, Σ, R, S) μια κατηγορηματική γραμματική. Κατασκευάζουμε το αυτόματο Μ=({p,q}, Σ, V, δ, p, q) με L(G)=L(M). Μεταβάσεις: 1. δ(p, e, e) = ( q, S ) 2. δ(q, e, A) = ( q, x ) για κάθε κανόνα A x R 3. δ(q, a, a) = ( q, e ) για κάθε a Σ Ξεκινά εισάγοντας S και μεταβαίνει στην q(μετάβαση 1). Μετά, είτε αντικαθιστά ένα μη τερματικό A με το δεξιό του μέλος x(μετ. 2) είτε διαβάζει ένα τερματικό που είναι το ίδιο με την κορυφή της στοίβας και το εξάγει από αυτή. (μετ. 3) 13
Θεώρημα 1 (συνέχεια) Το αυτόματο μιμείται μια αριστερή παραγωγή της συμβολοσειράς εισόδου: Εκτελεί ένα βήμα μιας παραγωγής (πχ. αντικαθιστά το Α με το x) Aν υπάρχει στην κορυφή της στοίβας τερματικό a διαβάζει ίδια είσοδο και το διώχνει από την στοίβα.. ώσπου να παρουσιαστεί στην κορυφή της στοίβας το επόμενο μη τερματικό A Αντικαθιστά το μη τερματικό της στοίβας A με το δεξιό του μέλος x και συνεχίζει 14
Παράδειγμα. G=(V, Σ, R, S) μια κατηγορηματική γραμματική. V={S, a, b, c}, Σ={a,b,c}, R- {S asa bsb c} που παράγει τη γλώσσα {wcw R : w {a,b} * } Κατασκευάζουμε το αυτόματο Μ=({p,q}, Σ, V, δ, p, q) τέτοιο ώστε L(G)=L(M). δ(p, e, e)=(q, S) δ(q, e, S)=(q, asa) δ(q, e, S)=(q, bsb) δ(q, e, S)=(q, c) δ(q, a, a)=(q, e) δ(q, b, b)=(q, e) δ(p, c, c)=(q, e) Με ποια ακολουθία κινήσεων η abbcbba γίνεται δεκτή? 15
Θεώρημα 1 (συνέχεια) Ισχυρισμός. Έστω w Σ * και a (V-Σ) * {e}. Τότε S L * wa εάν και μόνο εάν (q, w, S) `* (q, e, a) Απόδειξη. Με επαγωγή στο μήκος της w. Κάθε w L(M) εάν και μόνο αν υπάρχει μονοπάτι υπολογισμού (q, w, S) `* (q, e, e) (a=e) 16
Θεώρημα 2. Θεώρημα 2. Ανμιαγλώσσαείναιδεκτήαπόκάποιοαυτόματο στοίβας τότε είναι κατηγορηματική γραμματική. Απόδειξη. Παραλείπεται. 17