460 likes | 734 Views
Session 12 Pushdown Automata. Theory of Languages and Automata (KOM 208) Credits: 3(3-0). TIK, Subtopik dan Waktu Penyajian. Tinjauan Instruksional Khusus : Mahasiswa akan dapat menjelaskan cara kerja Pushdown Automata . Subtopik : Definisi formal Pushdown Automata
E N D
Session 12Pushdown Automata Theory of Languages and Automata (KOM208) Credits: 3(3-0)
TIK, Subtopik dan Waktu Penyajian • Tinjauan Instruksional Khusus: • Mahasiswa akan dapat menjelaskan cara kerja Pushdown Automata. • Subtopik: • Definisi formal Pushdown Automata • Notasi grafis dari Pushdown Automata • Bahasa dari Pushdown Automata • Ekuivalensi Pushdown Automata dan tata bahasa bebas konteks • DeterministicPushdown Automata • Waktu penyajian: 1 x 150 menit
Pendahuluan (1) • Bahasa bebas konteks memiliki bentuk automata yang mendefinisikannya. • Automata ini dinamakan PushdownAutomata (PDA) • PDA merupakan perluasan dari nondeterministic finite automaton dengan transisi , yang merupakan suatu cara untuk mendefinisikan bahasa regular. • PDA secara esensial merupakan -NFA dengan tambahan stack.
Pendahuluan (2) • Stack tersebut dapat dibaca, di-push, dan di-pop hanya pada bagian atas dari stack (top stack). • Stack adalah struktur data yang dapat digunakan untuk menyimpan sejumlah simbol. • Stack hanya bisa diakses dengan aturan LIFO (Last In First Out). • Penambahan dan pengambilan elemen dalam stack melalui satu tempat, yaitu topstack. • Pengambilan elemen dari stack dinamakan operasi pop. • Pemasukan elemen ke dalam stack dinamakan operasi push.
Finite State Control Accept/ Reject Input Stack Komponen-komponen dalam PDA • Finite-state contol membaca input 1 simbol pada suatu waktu
Definisi Formal PDA (1) • PDA melibatkan tujuh komponen. Spesifikasi dari PDA dituliskan sebagai berikut: P = (Q, , , , q0, Z0, F) • Komponen-komponen dari PDA adalah: • Q: Himpunan berhingga dari state, seperti dalam FA. • : Himpunan berhingga dari simbol-simbol input, seperti dalam FA. • : Himpunan berhingga dari alphabet stack. merupakan himpunan dari simbol-simbol yang di-push ke dalam stack.
Definisi Formal PDA (2) – fungsi transisi () • Seperti dalam FA, menentukan perilaku dari otomata. • memiliki 3 argumen, (q, a, X), dimana: • q adalah sebuah state dalam Q • a adalah sebuah simbol input dalam atau a = (string kosong), yang asumsikan bukan merupakan sebuah simbol input. • X adalah sebuah symbolstack, X
Definisi Formal PDA (3) – fungsi transisi • Output dari adalah sebuah himpunan berhingga dari pasangan (p, ), • p: state baru, • : string dari simbol-simbol stack yang menggantikan X pada topstack. • Sebagai contoh: • jika = , maka stack di-pop, • jika = X, maka stack tidak berubah • jika = YZ, maka X diganti kan oleh Z, dan Y di-push ke dalam stack.
Definisi Formal PDA (4) • q0: startstate. PDA berada pada startstate sebelum membuat transisi. • Z0: startsymbol. Pada awalnya, stack dari PDA terdiri dari startsymbol. • F: himpunan acceptingstate atau finalstate.
Contoh 1 • Diberikan bahasa Lwwr: Lwwr = {wwR | w adalah dalam (0 + 1)*} • Lwwr dirujuk sebagai w-w-reversed, merupakan palindrom-palindrom dengan genap pada alphabet {0, 1}. • Lwwr merupakan CFL String-string dalam bahasa ini di-generate oleh grammar berikut: P P 0P0 P 1P1
Contoh 1 (lanjutan) • Komponen PDA: Q = {q0, q1, q2} = {0, 1} ={0, 1, Z0} Startstate: q0. Startsymbol: Z0 Acceptingstate: {q2}
Contoh 1 (lanjutan) Fungsi transisi (): • (q0, 0, Z0) = {(q0, 0Z0)} dan (q0, 1, Z0) = {(q0, 1Z0)} • Pada saat awal PDA berada pada state q0, dan melihat startsymbol Z0 pada topstack. • Kemudian PDA membaca input pertama, dan memasukan (push) input tersebut ke dalam stack.
Contoh 1 (lanjutan) • (q0, 0, 0) = {(q0, 00)}, (q0, 0, 1) = {(q0, 01)}, (q0, 1, 0) = {(q0, 10)}, (q0, 1, 1) = {(q0, 11)} • PDA berada pada state q0, dan membaca input, dan memasukkan (push) input-input ke dalam topstack dan meninggalkan topstack sebelumnya. • (q0, , Z0) = {(q1, Z0)}, (q0, , 0) = {(q1, 0)}, (q0, , 1) = {(q1, 1)} • PDA menuju state q1 dari state q0 (pada input ), meninggalkan simbol apapun pada topstack.
Contoh 1 (lanjutan) • (q1, 0, 0) = {(q1, )}, (q1, 1, 1) = {(q1, )} • Dalam state q1, dapat dilakukan pencocokan simbol-simbol input terhadap simbol-simbol pada topstack, dan mem-poptopstack ketika simbol-simbol sesuai. • (q1, , Z0) = {(q2, Z0)} • Input dengan bentuk wwR telah ditemukan. PDA menuju state q2, dan menerima input.
Diagram transisi untuk PDA • terdiri dari: • Node-node yang berkaitan dengan state-state dari PDA • Anak panah dengan label Start yang menunjukkan startstate, state dengan lingkaran ganda adalah acceptingstate. • Arc yang berkaitan dengan transisi dari PDA. • Sebuah arch diberi label a,X/ dari state q ke state p yang berarti bahwa (q, a, X) mengandung pasangan (p, ). • Label dari arc menyatakan input apa yang digunakan, dan juga memberikan simbol lama dan baru dari topstack.
Deskripsi Instantaneous dari PDA(1) • Konfigurasi PDA dinyatakan dengan sebuah triple (q, w, ), yang dinamakan deskripsi instantaneous (ID) dari PDA, dimana • q adalah state • w adalah input sisa • menyatakan isi stack
Deskripsi Instantaneous dari PDA (2) • Misalkan P = (Q, , , , q0, Z0, F) adalah sebuah PDA. Definisikan ├p, atau ├ . • Anggap (q, a, X) mengandung (p, ). • Maka untuk semua string w dalam * dan dalam *: (q, aw, X) ├ (p, w, ) • Bentuk ini berarti bahwa dengan membaca a (yang dapat berupa ) dari input dan mengganti Xpada topstack dengan , • PDA bergerak dari state q ke state p. • Sisa dari input adalah w. Isi stack yang ada di bawah topstack, yaitu , tidak terpengaruh oleh aksi PDA.
Deskripsi Instantaneous dari PDA (3) • Notasi ├p*, atau ├*digunakan untuk menyatakan nol atau lebih pergerakan dari PDA, bahwa: • Basis: I ├* I, untuk ID I. • Induksi: I ├* J jika terdapat ID K sedemikian sehingga I ├ K dan K ├* J. Bahwa I ├* J jika terdapat sebuah urutan dari ID-ID K1, K2, K3, ..., Kn sedemikian sehingga I = K1, J = Kn, dan untuk semua i = 1, 2, ..., n1, diperoleh Ki├ Ki+1.
Pergerakan PDA pada Contoh 1 • Akan dilihat pergerakan PDA jika diberikan input 1111. • Karena startstate adalah q0, dan startsymbol adalah Z0, maka ID awal adalah (q0, 1111, Z0). • ID-ID dari PDA pada input 1111 ditunjukkan dalam gambar berikut:
Pergerakan PDA pada Contoh 1 • Dari ID awal terdapat dua pilihan pergerakan yaitu • (q0, 111, 1Z0) menyatakan sebuah 1 dibuang dari input dan di-push ke dalam stack. • (q1, 1111, Z0) menyatakan tanpa membaca input, PDA menuju state q1, menuju ke ID (q1, 1111, Z0). • Selanjutnya PDA menuju ID (q2, 1111, Z0). ID (q2, 1111, Z0) bukan merupakan accepting ID, karena input tidak seluruhnya dibaca.
Pergerakan PDA pada Contoh 1 • Urutan ID yang benar untuk PDA pada Contoh 1 untuk input 1111 adalah (q0, 1111, Z0) ├ (q0, 111, 1Z0) ├ (q0, 11, 11Z0) ├ (q1, 11, 11Z0) ├ (q1, 1, 1Z0) ├ (q1, , Z0) ├ (q2, , Z0)
Prinsip yang penting tentang ID dan transisinya: • Jika sebuah urutan ID-ID (komputasi) adalah legal untuk PDA P, maka komputasi yang dibentuk dengan penambahan string input tambahan yang sama ke ekhir dari input pada setiap ID juga legal. • Jika sebuah komputasi adalah legal untuk PDA P, maka komputasi yang dibentuk oleh penambahan simbol-simbol stack tambahan yang sama juga legal. • Jika sebuah komputasi adalah legal untuk PDA P, dan ujung dari input tidak dibaca, maka ujung tersebut dapat dibuang dari input dalam setiap ID, dan komputasi yang dihasilkan masih legal.
Teorema • Jika P = (Q, , , , q0, Z0, F) adalah PDA, dan (q, x, ) ├p* (p, y, ), maka untuk string w dalam * dan dalam *, adalah benar bahwa (q, xw, ) ├p* (p, yw, ). • Jika P = (Q, , , , q0, Z0, F) adalah PDA, dan (q, xw, ) ├ * (p, yw, ) maka juga benar bahwa (q, x, ) ├ * (p, y, ).
Bahasa dari Sebuah PDA • Terdapat dua pendekatan untuk mendefinisikan bahasa dari PDA, yaitu: • Acceptance by final state • Acceptance by empty stack • Kedua pendekatan tersebut adalah ekuivalen sebuah bahasa L memiliki PDA yang menerima bahasa tersebut dengan finalstatejhj memiliki PDA yang menerima bahasa tersebut dengan stack kosong.
Acceptance by Final State • Jika P = (Q, , , , q0, Z0, F) adalah PDA. Maka L(P), bahasa yang diterima oleh P dengan finalstate, adalah {w | (q0, w, Z0) ├p* (q, , )} untuk suatu state q dalam F dan suatu string stack.
Contoh 1 (lanjutan) • Diberikan bahasa Lwwr : Lwwr = {wwR |w adalah dalam (0+1)*} • Lwwr dirujuk sebagai w-w-reversed, merupakan palindrom-palindrom dengan genap pada alphabet {0, 1}. Lwwr merupakan CFL String-string dalam bahasa ini di-generate oleh grammar berikut: P P 0P0 P 1P1 • PDA P menerima string x dengan finalstate jika dan hanya jika x berbentuk wwR.
Bukti (if): • (If) Jika x = wwR, perhatikan bahwa (q0, wwR, Z0) ├* (q0, wR, wRZ0) ├ (q1, wR, wRZ0) ├* (q1, , Z0) ├ (q2, , Z0) dengan demikian x = wwR diterima dengan finalstate.
Bukti (only if): • Perhatikan bahwa satu-satunya cara memasuki acceptingstate q2 adalah berada dalam state q1, dan memiliki Z0 pada topstack. • Komputasi yang diterima dari P berawal dari state q0, membuat satu transisi ke q1, dan tidak pernah kembali ke q0. • Dengan demikian, perlu ditentukan kondisi pada x sedemikian sehingga (q0, x, Z0) ├* (q1, , Z0); x diterima P dengan finalstate. • Pernyataan berikut akan ditunjukkan dengan menggunakan induksi pada |x|: jika (q0, x, ) ├* (q1, , ) maka x berbentuk wwR.
Bukti (only if): • Basis: Jika x = , maka x adalah berbentuk wwR (dengan w = ). Dengan demikian konklusi adalah benar. • Induksi: Anggap x = a1a2...an untuk n 0. Terdapat dua pergerakan yang dibuat P dari ID (q0, x, ): • (q0, x, ) ├ (q1, x, ). • P hanya dapat mem-popstack ketika PDA berada dalam state q1. • P harus mem-popstack dengan setiap simbol input dibaca oleh P, dan |x| > 0. • Dengan demikian jika (q1, x, ) ├* (q1, , ), maka || < | |.
Bukti (only if): • (q0, a1a2...an, ) ├ (q0, a2...an, a1). Satu-satunya cara sebuah urutan dari pergerakan dapat berakhir di (q1, , ) adalah jika pergerakan terakhir adalah sebuah pop: (q1, an, a1) ├ (q1, , ). Dalam kasus ini, haruslah dipenuhi bahwa a1 = an. Diketahui bahwa (q0, a2...an, a1) ├* (q1, an, a1).
Bukti (only if): • Berdasarkan Teorema: • Jika P = (Q, , , , q0, Z0, F) adalah PDA, dan (q, xw, ) ├ (p, yw, ) maka juga benar bahwa (q, x, ) ├ (p, y, ). • simbol an dapat dibuang dari ujung input karena tidak digunakan. Dengan demikian (q0, a2...an-1, a1) ├* (q1, , a1). • Karena panjang input untuk urutan ini lebih kecil dari n, hipotesis induksi dapat digunakan dan diperoleh kesimpulan bahwa a2...an-1 berbentuk yyR untuk suatu y. • Karena x = a1yyRan, dan diketahui a1 = an, disimpulkan bahwa w berbentuk wwR ; khususnya w = a1y.
Acceptance by Empty Stack • Untuk setiap PDA P = (Q, , , , q0, Z0, F), didefinisikan N(P) = {w | (q0, w, Z0) ├* (q, , )} untuk suatu state q. • Bahwa N(P) adalah himpunan input-input w yang dapat dibaca oleh P dan pada waktu yang sama mengosongkan stack-nya.
Contoh 2 • PDA P tidak pernah mengosongkan stack-nya, sehingga N(P) = . • Walaupun demikian, dengan modifikasi, P dapat menerima Lwwr dengan emptystack. • Daripada menggunakan transisi (q1, , Z0) = {(q2, Z0)}, gunakan (q1, , Z0) = {(q2, )}. L(P) = N(P) = Lwwr
Hubungan pendekatan acceptance by final state dan accepted by empty stack • PN : PDA yang menerima bahasa L by emptystack. • PF : PDA yang menerima bahasa L byfinalstate. • Hubungan kedua pendekatan untuk mendefinisikan bahasa dari PDA, yaitu acceptance by final state dan accepted by empty stack dinyatakan dalam teorema-teorema berikut: • Jika L = N(PN) untuk PDA PN = (Q, , , N, q0, Z0, F), maka terdapat sebuah PDA PF sedemikian sehingga L = L(PF). • Misalkan L adalah L(PF) untuk PDA PF = (Q, , , F, q0, Z0, F). Maka terdapat sebuah PDA sedemikian sehingga L =N(PN).
Ekuivalensi PDA dan CFG • Ketiga kelas bahasa berikut adalah kelas-kelas yang sama. • CFL, yaitu bahasa yang didefinisikan oleh CFG • Bahasa yang diterima dengan finalstate oleh suatu PDA. • Bahasa yang diterima dengan emptystack oleh suatu PDA.
Dari Grammar ke PDA • Misalkan G = (V, T, Q, S) adalah sebuah CFG. Buat PDA P yang menerima L(G) dengan emptystack sebagai berikut: P = ({q}, T, V T, , q, S) Dimana fungsi transisi didefinisikan oleh • Untuk setiap variabel A, (q, , A) = {(q, ) | A adalah sebuah produksi dari G} • Untuk setiap terminal a, (q, a, a) = {(q, )} Teorema: Jika PDA P dikonstruksi dari CFG G dengan konstruksi di atas, maka N(P) = L(G).
Contoh 3 • Konversikan CFG berikut ke PDA I a | b | Ia | Ib | I0 | I1 E I | E + E | E * E | (E) • Himpunan terminal dari PDA adalah {a, b, 0, 1, (, ), +, *}. • Simbol-simbol ini beserta simbol I dan E membentuk alphabet stack.
Contoh 3 (lanjutan) Fungsi transisi PDA adalah: • (q, , I) = {(q,a),(q,b),(q,Ia),(q,Ib),(q,I0),(q,I1)} • (q, , E) = {(q,I), (q,E+E), (q,E*E), (q,(E))} • (q, a, a) = {(q,)}; (q,b,b) = {(q,)}; (q,0,0) = {(q,)}; (q,1,1) = {(q,)}; (q,(,( ) = {(q,)}; (q, ),) ) = {(q,)}; (q,+,+) = {(q,)}; (q,*, *) = {(q,)}; Bentuk fungsi transisi a dan b diperoleh dari aturan 1, sedangkan bentuk fungsi transisi c diperoleh dari aturan 2.
Konstruksi PDA dari CFG (1) • Misalkan G = (V, , S, P) adalah sebuah CFG. • Dari CFG tersebut dapat dibuat PDA P = (Q, , , , q0, Z0, F), yang menerima L(G) dengan finalstate (L(P) = L(G)). • Konstruksi dilakukan sebagai berikut: • Definisikan • Q ={q0, q1, q2} • Startstate: q0 • F = {q2} • = V {Z0}
Konstruksi PDA dari CFG (2) • Dalam keadaan awal, PDA mem-push Z0 pada topstack • Jika topstack dari simbol stack adalah sutau non terminal (misal A), topstack tersebut diganti dengan bagian body dari produksi yang head-nya A. Misal A x, maka topstack diganti x. • Jika topstack dari simbol stackadalah sebuah terminal dan jika topstack tersebut menyamai simbol masukkan berikutnya, poptopstack tersebut.
Konstruksi PDA dari CFG (3) • Berdasarkan aturan tsb, dapat diperoleh 4 bentuk fungsi transisi: • (q0, , Z0) = {(q1, Z0)} • (q1, , A) = {(q1, x) | A x adalah sebuah produksi dalam CFG} untuk suatu non terminal A. • (q1, a, a) = {(q1, )} untuk setiap simbol terminal. • (q1, , Z0) = {(q2, Z0)}.
Deterministic PDA • Sebuah PDA P = (Q, , , , q0, Z0, F) adalah deterministic (DPDA) jika dan hanya jika ditemui kondisi-kondisi berikut: • (q, a, X) memiliki paling banyak satu anggota untuk suatu q dalam Q, a dalam atau a = , dan X dalam . • Jika (q, a, X) tidak kosong, untuk suatu a dalam , maka (q, , X) haruslah kosong.
Contoh 4 • Bahasa Lwwr adalah sebuah CFL yang bukan merupakan DPDA. • Tetapi bahasa Lwcwr = {wcwR | w dalam (0 + 1)*} dapat diterima oleh DPDA. DPDA yang menerima Lwcwr (Buktikan !) DPDA yang menerima Lwcwr
Daftar Pustaka • John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001. Introduction to Automata Theory, Languange, and Computation. Edisi ke-2. Addison-Wesley