Sadf

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 26

Push Down Automata

Otomata dan Pengantar Kompilasi


Tujuan Instruksional Khusus (TIK)

 Menjelaskan konsep-konsep dasar PDA


 Perbedaan PDA dengan DFA
 Menjelaskan cara kerja stack awal dan top
stack

2
Pendahuluan

PDA merupakan mesin berbasis CFG yang memiliki 7


tuple.

FA mempunyai memori yg terbatas sebaliknya PDA


mempunyai memori yang tak terbatas disebut stack

Stack adalah suatu tempat penyimpanan di PDA yang


berlaku sifat LIFO (last in first out)

3
PDA
• Kalau di FSA kita mengenal 5 tupel, akan tetapi untuk PDA ada 7
tupel :
• M=(Q,∑,δ,г,S,F,Z), dengan
• Q: kumpulan state (simbol non terminal) Next state
• ∑: input (simbol terminal)
• δ: tabel transisi/produksi δ(q1, ɛ, Z)={(q2,Z)}
• Г: simbol kumpulan stack
Next
• S: initial state stack
State awal
• F: final state Stack awal
• Z: stack awal
input

4
Cara kerja stack

• Stack awal A
B
C
A

• dipop B
C

• dipush D B
C

5
Bagaimana kalau LIFO di PDA?
Kondisi stack awal/existing C

Dipush BC B C

Dipush BB B B C

Dipop B C
Cara membaca stack
Contoh transisi PDA:
δ: δ(q1,ɛ,Z)={(q2,Z)}
δ(q1,a,Z)={(q1,AZ)}
δ(q1,b,Z)={(q1,BZ)}
δ(q1,b,A)={(q1,ɛ)}
δ(q1,b,A)={(q1,B)} = stack terkini sama spt stack sebelumnya

• δ(q1,ɛ,Z)={(q2,Z)}  state q1 dgn stack awal Z, membaca input


ɛ (tanpa membaca input) menghasilkan state q2 dengan top
stack/stack awal Z
• δ(q1,a,Z)={(q1,AZ)} state q1 dgn stack awal Z, membaca input
a menghasilkan state q1 dgn top stack AZ (push A)
• δ(q1,b,Z)={(q1,BZ)} (push B)
• δ(q1,b,A)={(q1,ɛ)} state q1 dgn stack awal A, membaca input
b, menghasilkan state q1 dgn stack di pop
7
Contoh soal : Diket PDA sbb:
 Q ={q1,q2} Dengan fungsi transisi sbb:
δ:
 ∑={a,b} 1.δ(q1,ɛ,Z)={(q2,Z)}
 Г={A,B,Z} 2.δ(q1,a,Z)={(q1,AZ)}
3.δ(q1,b,Z)={(q1,BZ)}
 S=q1 4.δ(q1,a,A)={(q1,AA)}
 F=q2 5.δ(q1,b,A)={(q1,ɛ)}
6.δ(q1,a,B)={(q1,ɛ)}
 Z=Z 7.δ(q1,b,B)={(q1,BB)}

• Buktikan string “abba” dihasilkan PDA ini…

8
Jawaban :
• δ(q1,abba,Z) =(q1,bba,AZ)---(2)
=(q1,ba,Z)---(5)
=(q1,a,BZ)---(3)
=(q1,ɛ,Z)---(6)
=(q2,Z)---(1)

• State terakhir ada di q2 dan string terserap habis,


sehingga string ‘abba’ dihasilkan oleh PDA diatas,
dgn stack sisa Z (top stack).

9
PDA deterministik
• 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 Hasil No Stat Inpu Top Hasil
stack e t stac
k
1 q0 a Z (q0,AZ)
2 q0 b Z (qo,BZ) 7 q0 c Z (q1,Z)

3 q0 a A (q0,AA) 8 q0 c A (q1,A)

4 q0 b A (qo,BA) 9 q0 c B (q1,B)

5 q0 a B (q0,AB) 10 q1 a A (q1, ɛ)

6 q0 b B (q0,BB) 11 q1 b B (q1, ɛ)
12 q1 ɛ Z (q2,Z)

Bagaimana dengan acb, abcba, bbaacc?


10
Bagaimana dengan PDA tanpa
tujuan???
Jika menemukan kasus PDA tanpa final
state (F) yang jelas alias Ø, maka :
1. Diterima jika string terserap habis oleh fungsi
transisi
2. Ditolak jika string tidak terserap habis oleh
fungsi transisi
Contoh lain :
• Diketahui PushDown Automata (PDA) (Q, S, , T, Z, F, ) dengan :
• Q = {q0 , q1 }, S = q0 ,  = {0, 1}, T = {X, Z}, F = Ø dan
• fungsi transisi  sebagai berikut :
1. (q0, 1, Z) = (q0, XZ)
2. (q0, 1, X) = (q0, XX)
3. (q0, 0, X) = (q1, X)
4. (q0, ε, Z) = (q0, ε)
5. (q1, 1, X) = (q1, ε)
6. (q1, 0, Z) = (q0, Z)

• Periksalah apakah string 101, 110101, 111011 diterima atau ditolak?


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 In Top Hasil No Stat Inp Top Hasil


p stack e stack
1 q0 a Z (q0,AZ) ; (q1,Z) 7 q0 ɛ Z (q1,Z)
2 q0 b Z (qo,BZ) ; (q1,Z) 8 q0 ɛ A (q1,A)
3 q0 a A (q0,AA) ; (q1,A) 9 q0 ɛ B (q1,B)
4 q0 b A (qo,BA) ; (q1,A) 10 q1 a A (q1, ɛ)
5 q0 a B (q0,AB) ; (q1,B) 11 q1 b B (q1, ɛ)
6 q0 b B (q0,BB) ; (q1,B) 12 q1 ɛ Z (q2, ɛ)

13
Termasuk dalam L (M) ???
String ‘aba’?
String ‘baab’?
Sting ‘abc’?

14
“aba”

• ‘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)

15
Komponen PDA (1)

1. Himpunan berhingga alphabet 


input string untuk PDA dibentuk dari himpunan ini

2. Sebuah state START START

state untuk memulai penelusuran

3. Satu atau lebih operator READ READ

state untuk melakukan pembacaan karakter input string

4. Dua atau lebih halt state yang berbentuk state ACCEPTED dan
REJECTED
ACCEPT REJECT

input string dikenali jika penelusuran berhenti pada state ACCEPTED

IFUPN
Pertemuan XII 16
Komponen PDA (2)

a
b a
Contoh :
- +
b

START

b
a 
READ READ
b
 a

REJECT ACCEPT

IFUPN
Pertemuan XII 17
Komponen PDA (3)

Sel i Sel ii Sel iii Sel iv

5. Sebuah INPUT TAPE yang berisi sel-sel C1 C2 C3  ...

untuk menampung karakter-karakter input string

6. Sebuah PUSHDOWN STACK C3

C2

C1


.
.
.

untuk menampung karakter yang telah terbaca

Jumlah outgoing edge = 1,


7. Satu atau lebih operator PUSH PUSH X
tetapi incoming edge >= 1

untuk memasukkan karakter yang telah terbaca ke dalam stack

8. Satu atau lebih operator POP


POP Jumlah incoming edge =
jumlah outgoing edge

untuk mengambil/menghapus karakter dari stack

IFUPN
Pertemuan XII 18
Komponen PDA (4)

Contoh : START

a 
PUSH a READ

b
b
a 
POP READ POP

b a a, b 

REJECT REJECT REJECT ACCEPT

Penelusuran untuk input string : 


a a a b b b 
aaabbb adalah seperti berikut :

IFUPN
Pertemuan XII 19
Komponen PDA (5)

Contoh :
Misal dibuat PDA untuk bahasa palindrome yang berbentuk s X reverse(s)
dimana s adalah substring dari (a + b)*

START
Bagian depan dari PDA akan mempunyai bentuk :
a X
PUSH a READ

b
PUSH b

Misal jika diberi input string abbXbba, maka pemrosesan untuk substring
abb adalah seperti berikut :
b
b
a b b X b b a  a

IFUPN
Pertemuan XII 20
Komponen PDA (6)

Sedang bagian lain dibuat untuk mengakomodasi penelusuran substring reverse(s) :

a
X a
READ POP
b

b
POP


POP

ACCEPT

Dan substring bba akan diproses seperti berikut :



a b b X b b a 

IFUPN
Pertemuan XII 21
Komponen PDA (7)

Bentuk keseluruhan PDA untuk palindrome s X reverse(s) adalah seperti berikut :

START

a
a X a
PUSH a READ READ POP
b
b 
b
PUSH b POP


POP

ACCEPT

IFUPN
Pertemuan XII 22
Membentuk PDA dari CFG (and vice versa) (1)

1. Sebuah non-terminal X1 yang menjadi Start Symbol akan direpresentasikan


menjadi :
START

PUSH X1 POP

2. Sebuah production Xi  XjXk, akan direpresentasikan menjadi :

Xi
POP PUSH Xk PUSH Xj

b
READ

3. Sebuah production Xi  b, direpresentasikan menjadi :


Xi

POP

 
4. Sebuah production Xi  , akan menjadi : POP READ ACCEPT

IFUPN
Pertemuan XII 23
Membentuk PDA dari CFG (and vice versa) (2)

Contoh : S  AB A  a
A  BB B  a
B  AB B  b

Proses pembentukan PDA dari CFG di atas adalah seperti berikut :

Untuk Start Symbol S : START PUSH S POP

Untuk production : S  AB START PUSH S POP

S B

A  BB
A

PUSH B PUSH B PUSH B


B  AB

PUSH A PUSH B PUSH A

IFUPN
Pertemuan XII 24
Membentuk PDA dari CFG (and vice versa) (3)

Sedangkan untuk production : S  a


A  a
B  b
a b b

READ READ READ

S A B

Bentuk keseluruhan PDA tersebut adalah :


START PUSH S POP

S B
A
a b b
PUSH B PUSH B PUSH B
READ READ READ

S A B
PUSH A PUSH B PUSH A
 
START PUSH S POP READ ACCEPT

S B
A

PUSH B PUSH B PUSH B

PUSH A PUSH B PUSH A

IFUPN
Pertemuan XII 25
Referensi
 Utama
Firrar Utdirartatmo, Teori Bahasa dan Otomata, JJ Learning, 2001
Firrar Utdirartatmo, Teknik Kompilasi, JJ Learning, 2001
 Pendamping
Aho, Ulman. The Teory of Parsing Translation And Compiling.
Prentice-Hall. 1972
Grune , Modern Compiler Design, John Wiley and Sons ,2002
Peter Linz, An Introduction to Formal Language and Automata, DC
Healt & Co, 1990

26

You might also like