Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Session 12 Pushdown Automata

Presentasi serupa


Presentasi berjudul: "Session 12 Pushdown Automata"— Transcript presentasi:

1 Session 12 Pushdown Automata
Theory of Languages and Automata (KOM208) Credits: 3(3-0)

2 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 Deterministic Pushdown Automata Waktu penyajian: 1 x 150 menit

3 Pendahuluan (1) Bahasa bebas konteks memiliki bentuk automata yang mendefinisikannya. Automata ini dinamakan Pushdown Automata (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.

4 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 top stack. Pengambilan elemen dari stack dinamakan operasi pop. Pemasukan elemen ke dalam stack dinamakan operasi push.

5 Komponen-komponen dalam PDA
Finite State Control Input Accept/ Reject Stack Finite-state contol membaca input 1 simbol pada suatu waktu

6 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.

7 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 symbol stack, X  

8 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 top stack. 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.

9 Definisi Formal PDA (4) q0: start state. PDA berada pada start state sebelum membuat transisi. Z0: start symbol. Pada awalnya, stack dari PDA terdiri dari start symbol. F: himpunan accepting state atau final state.

10 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

11 Contoh 1 (lanjutan) Komponen PDA: Q = {q0, q1, q2}  = {0, 1}
 ={0, 1, Z0} Start state: q0. Start symbol: Z0 Accepting state: {q2}

12 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 start symbol Z0 pada top stack. Kemudian PDA membaca input pertama, dan memasukan (push) input tersebut ke dalam stack.

13 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 top stack dan meninggalkan top stack 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 top stack.

14 Contoh 1 (lanjutan) (q1, 0, 0) = {(q1, )}, (q1, 1, 1) = {(q1, )}
Dalam state q1, dapat dilakukan pencocokan simbol-simbol input terhadap simbol-simbol pada top stack, dan mem-pop top stack ketika simbol-simbol sesuai. (q1, , Z0) = {(q2, Z0)} Input dengan bentuk wwR telah ditemukan. PDA menuju state q2, dan menerima input.

15 Diagram transisi untuk PDA
terdiri dari: Node-node yang berkaitan dengan state-state dari PDA Anak panah dengan label Start yang menunjukkan start state, state dengan lingkaran ganda adalah accepting state. 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 top stack.

16 Diagram transisi untuk Contoh 1

17 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

18 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 X pada top stack dengan , PDA bergerak dari state q ke state p. Sisa dari input adalah w. Isi stack yang ada di bawah top stack, yaitu , tidak terpengaruh oleh aksi PDA.

19 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, ..., n1, diperoleh Ki├ Ki+1.

20 Pergerakan PDA pada Contoh 1
Akan dilihat pergerakan PDA jika diberikan input 1111. Karena start state adalah q0, dan start symbol adalah Z0, maka ID awal adalah (q0, 1111, Z0). ID-ID dari PDA pada input 1111 ditunjukkan dalam gambar berikut:

21

22 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.

23 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)

24 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.

25 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, ).

26 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 final state jhj memiliki PDA yang menerima bahasa tersebut dengan stack kosong.

27 Acceptance by Final State
Jika P = (Q, , , , q0, Z0, F) adalah PDA. Maka L(P), bahasa yang diterima oleh P dengan final state, adalah {w | (q0, w, Z0) ├p* (q, , )} untuk suatu state q dalam F dan suatu string stack .

28 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 final state jika dan hanya jika x berbentuk wwR.

29 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 final state.

30 Bukti (only if): Perhatikan bahwa satu-satunya cara memasuki accepting state q2 adalah berada dalam state q1, dan memiliki Z0 pada top stack. 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 final state. Pernyataan berikut akan ditunjukkan dengan menggunakan induksi pada |x|: jika (q0, x, ) ├* (q1, , ) maka x berbentuk wwR.

31 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-pop stack ketika PDA berada dalam state q1. P harus mem-pop stack dengan setiap simbol input dibaca oleh P, dan |x| > 0. Dengan demikian jika (q1, x, ) ├* (q1, , ), maka || < | |.

32 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).

33 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.

34 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.

35 Contoh 2 PDA P tidak pernah mengosongkan stack-nya, sehingga N(P) = .
Walaupun demikian, dengan modifikasi, P dapat menerima Lwwr dengan empty stack. Daripada menggunakan transisi (q1, , Z0) = {(q2, Z0)}, gunakan (q1, , Z0) = {(q2, )}. L(P) = N(P) = Lwwr

36 Hubungan pendekatan acceptance by final state dan accepted by empty stack
PN : PDA yang menerima bahasa L by empty stack. PF : PDA yang menerima bahasa L by final state. 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).

37 Ekuivalensi PDA dan CFG
Ketiga kelas bahasa berikut adalah kelas-kelas yang sama. CFL, yaitu bahasa yang didefinisikan oleh CFG Bahasa yang diterima dengan final state oleh suatu PDA. Bahasa yang diterima dengan empty stack oleh suatu PDA.

38 Dari Grammar ke PDA Teorema:
Misalkan G = (V, T, Q, S) adalah sebuah CFG. Buat PDA P yang menerima L(G) dengan empty stack 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).

39 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.

40 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.

41 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 final state (L(P) = L(G)). Konstruksi dilakukan sebagai berikut: Definisikan Q ={q0, q1, q2} Start state: q0 F = {q2}  = V    {Z0}

42 Konstruksi PDA dari CFG (2)
Dalam keadaan awal, PDA mem-push Z0 pada top stack Jika top stack dari simbol stack adalah sutau non terminal (misal A), top stack tersebut diganti dengan bagian body dari produksi yang head-nya A. Misal A  x, maka top stack diganti x. Jika top stack dari simbol stack adalah sebuah terminal dan jika top stack tersebut menyamai simbol masukkan berikutnya, pop top stack tersebut.

43 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)}.

44 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.

45 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

46 Daftar Pustaka John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman Introduction to Automata Theory, Languange, and Computation. Edisi ke-2. Addison-Wesley


Download ppt "Session 12 Pushdown Automata"

Presentasi serupa


Iklan oleh Google