Upload
aqil-azizi
View
78
Download
2
Embed Size (px)
Citation preview
Created by :
AQIL AZIZI
DERJA ARMAL SYAHPUTRA
Push Down Automata (PDA) merupakan mesin otomata dari bahasa bebas konteks. PDA di gambarkan sebagai tempat penyipanan yang tidak terbatas berupa stack/tumpukan.
Finite State Automata (FSA) adalah mesin otomata pada bahasa reguler
Perbedaan PDA dan FSA :• PDA
Tempat penyimpanan tidak terbatas berupa stack/tumpukan Dari Deterministic PDA bisa diubah ke Nondeterministic PDA
• FSA Mempunyai kemapuan memori yang terbatas Dari Nondeterministic FSA bisa diubah ke Deterministic FSA
Stack (tumpukan) adalah suatu struktur data yang menggunakan prinsip LIFO (Last In First Out).
Sebuah stack selalu memiliki top of stack dan elemen-elemen stack itu yang akan masuk ke dalam stack dengan method “push”dan akan keluar dari stack dengan method “pop”.
Stack adalah kumpulan dari elemen-elemen sejenis dengan sifat penambahan elemen dan pengambilan elemen melalui suatu tempat yang disebut top stack
Operasi Pop adalah pengambilan elemen dari stack
Operasi Push adalah memasukkan elemen ke dalam stack
Contoh Stack
A
D
E
Top Stack
A
D
E
A
D
E
Operasi pop
D
E
Operasi push B
B
D
E
Tujuh tupel untuk Push Down Automata adalah :
Q = himpuanan state = himpunan simbol input = simbol-simbol stack = fungsi transisiS = state awalF = himpunan state akhirZ = simbol awal stack / top stack
PDA memiliki 2 jenis transisi, yaitu Δyang merima simbol input, simbol top of stack, dan state.
• Setiap pilihan terdiri dari state berikutnya dan simbol-simbol.
•Penggantian isi stack dilakukan dengan opersi push dan pop.
Jenis transisi yang kedua adalah transisi . ε
•Transisi εtidak melakukan pembacaan input namun hanya menerima simbol top of stack dan state.
•Transisi ini memungkinkan PDA untuk memanipulasi isi stack dan berpindah antar state tanpa membaca input
Bahasa dari Sebuah PDA
Terdapat dua pendekatan untuk mendefinisikan bahasa dari PDA, yaitu:
Acceptance by final stateAcceptance 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.
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 .
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.
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).
Ekuivalensi PDA dan CFG
Ketiga kelas bahasa berikut adalah kelas-kelas yang sama.
1. CFL, yaitu bahasa yang didefinisikan oleh CFG
2. Bahasa yang diterima dengan final state oleh suatu PDA.
3. Bahasa yang diterima dengan empty stack oleh suatu PDA.
GrammarPDA by
empty stackPDA by
final state
Dari Grammar ke PDA 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
1. Untuk setiap variabel A, (q, , A) = {(q, ) | A adalah sebuah produksi dari G}
2. 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).
Konstruksi PDA dari CFG
• 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: 1. Definisikan
Q ={q0, q1, q2}Start state: q0
F = {q2} = V {Z0}
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.
3. Berdasarkan aturan tsb, dapat diperoleh 4 bentuk fungsi transisi:
- (q0, , Z0) = {(q1, q0Z0)}- (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:
1. (q, a, X) memiliki paling banyak satu anggota untuk suatu q dalam Q, a dalam atau a = , dan X dalam .
2. Jika (q, a, X) tidak kosong, untuk suatu a dalam , maka (q, , X) haruslah kosong.
PDA : M = (Q, , ,S, Z , , F)
Q = {q0 , q1 , q2 }, S={q0}, F = { q2 }, = {a, b, c}, = {A, B, Z }, Z={Z}, dan fungsi transisi :
No State
Input
Top stack
Hasil
1 q0 a Z (q0,AZ)
2 q0 b Z (qo,BZ)
3 q0 a A (q0,AA)
4 q0 b A (qo,BA)
5 q0 a B (q0,AB)
6 q0 b B (q0,BB)
No State
Input
Top stack
Hasil
7 q0 c Z (q1,Z)
8 q0 c A (q1,A)
9 q0 c B (q1,B)
10 q1 a A (q1, ɛ)
11 q1 b B (q1, ɛ)
12 q1 ɛ Z (q2,Z)
PDA Deterministik
Diterima atau tidak?
Bagaimana untuk string ‘acb’? Bagaimana untuk string ‘abab’? Bagaimana untuk string ‘bbaacc’?
Apakah string ‘abcba’ di terima?
Penyelesaian (q0,abcba,Z)(q0,bcba,AZ) (q0,bcba,AZ)(q0,cba,BAZ) (q0,cba,BAZ)(q1,ba,BAZ) (q1,ba,BAZ)(q1,a,AZ) (q1,a, AZ)(q1,ɛ, Z) (q1,ɛ,Z)(q2,Z)
Karena state terakhir di q2, maka ‘abcba’ di terima, dgn top stack Z
PDA Non-deterministik NPDA : M = (Q, , ,S, Z , , F)
Q = {q0 , q1 , q2 }, S={q0}, F = { q2 }, = {a, b}, = {A, B, Z }, Z= {Z}, dan fungsi transisi :
No
State
Inp
Top stack
Hasil
1 q0 a Z (q0,AZ),(q1,Z)
2 q0 b Z (qo,BZ),(q1,Z)
3 q0 a A (q0,AA),(q1,A)
4 q0 b A (qo,BA),(q1,A)
5 q0 a B (q0,AB),(q1,B)
6 q0 b B (q0,BB),(q1,B)
No
State
Inp Top stack
Hasil
7 q0 ɛ Z (q1,Z)
8 q0 ɛ A (q1,A)
9 q0 ɛ B (q1,B)
10 q1 a A (q1, ɛ)
11 q1 b B (q1, ɛ)
12 q1 ɛ Z (q2, ɛ)
Diterima atau tidak?
String ‘aba’? String ‘baab’? Sting ‘abc’?
JAWAB
‘aba’ (q0,aba,Z)(q0,ba,AZ) (1.kiri) (q0,ba,AZ)(q0,a,BAZ) (4.kiri) (q0,a,BAZ)(q0,ɛ,ABAZ) (5.kiri) (q0,ɛ,ABAZ) ditolak
‘aba’ (q0,aba,Z)(q0,ba,AZ) (1.kiri)
(q0,ba,AZ)(q1,a,AZ) (4.kanan) (q1,a,AZ)(q1,ɛ,Z) (10) (q1,ɛ,Z)(q2,ɛ) finish di q2
(diterima)
Sebuah PDA dapat dibuat dari kumpulan aturan produksi dari suatu tata bahasa bebas konteks dengan langkah-langkah :1. Definisikan
Q = {q1,q2,q3}
S = q1
F = {q3}
= simbol terminal = semua simol variabel, terminal, dan Z (simbol awal stack)
2. Dimulai dengan mem-push Z pada top stack3. Konstruksikan empat tipe transisi, yaitu :
(q1,,Z) = {(q2,SZ)} (q2,,A) = {(q2,w) | Aw adalah sebuah
aturan produksi } untuk semua variabel A (q2,a,a) ={(q2,)} untuk setiap simbol
terminal (q2,,Z) = {(q3,Z)}
Bila semua input telah dibaca dan top stack adalah Z, berarti string input sukses diterima oleh PDA (q3 state akhir)
Tahapan PDA untuk suatu tata bahasa bebas konteks dapat dinyatakan dalam bentuk deskripsi seketika (instantanoeous description).
Perubahan dari suatu kondisi keberikutnya dipisahkan dengan |
Konfigurasi pada suatu saat dinyatakan dengan triplet :(q,w,u)
Final State PDA ke Null Stack PDA• Tupel Final State PDA M1= (Q,,,,S,F,Z)
berubah menjadi M2 = (Q U {qs.qf}, , U {X}, ’, qs, , X)
• Ada penambahan fungsi transisi : ’ (qs, , X) = {(S,ZX)}
’ (q, , X) = {(qf,X)} Null Stack PDA ke Final State PDA
• Tupel Final State PDA M1= (Q,,,,S,F,Z)
berubah menjadi M2 = (Q U {qs.qf}, , U {X}, ’, qs, {qf}, X)
• Ada penambahan fungsi transisi : ’ (qs, , X) = {(S,ZX)}
’ (q, , X) = {(qf,X)}
Null Stack PDA ke Final State PDA• Tupel Final State PDA M1= (Q,,,,S,F,Z)
berubah menjadi M2 = (Q U {qs.qf}, , U {X}, ’, qs, {qf}, X)
• Ada penambahan fungsi transisi : ’ (qs, , X) = {(S,ZX)}
’ (q, , X) = {(qf,X)}