Anda di halaman 1dari 46

Pushdown Automata

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
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.
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.
Komponen-komponen dalam
PDA
Accept/
Input
Finite Reject
State
Control

Stack

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 symbol stack, 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 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.
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.
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}
Start state: q0.
Start symbol: Z0
Accepting state: {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 start symbol Z0 pada top
stack.
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 top stack
dan meninggalkan top stack
sebelumnya.
(q0, , Z0) = {(q1, Z0)}, (q0, , 0) =
{(q1, 0)}, (q0, , 1) = {(q1, 1)}
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
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.
Diagram transisi untuk
Contoh 1
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 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.
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 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:
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:
1. 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.
2. Jika sebuah komputasi adalah legal untuk PDA P,
maka komputasi yang dibentuk oleh
penambahan simbol-simbol stack tambahan
yang sama juga legal.
3. 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 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 .
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
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.
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
R
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, ):
1. (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 || < | |.
Bukti (only if):
2. (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,
R
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 empty stack.
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 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(P ).
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.
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
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 final state (L(P) = L(G)).
Konstruksi dilakukan sebagai berikut:
1. Definisikan
Q ={q0, q1, q2}
Start state: q0
F = {q2}
= V {Z0}
Konstruksi PDA dari CFG (2)
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.
Konstruksi PDA dari CFG (3)
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 .
2. 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

Anda mungkin juga menyukai