Anda di halaman 1dari 49

1

Teori Bahasa dan Automata

Pushdown Automata

Kurniawan Nur Ramadhani, S.T., M.T.

S1 Teknik Informatika – Fakultas Informatika


2

Finite Automata

• Finite Automata = automata yang paling sederhana.


• Finite Automata menerima bahasa reguler.
• Memiliki kemampuan untuk mengenali pola sederhana.
• Biasa digunakan dalam pengenalan pola dan perancangan
rangkaian digital.
3

Representasi Finite Automata


Input Tape

Head
Arah Pergerakan

State Indicator
1
4 2
3
3
4

Review Bahasa Reguler dan Regular Grammar


• Apa itu Bahasa Reguler?
Sebuah Bahasa disebut sebagai sebuah Bahasa Reguler
apabila terdapat Finite Automata (FA) yang dapat mengenali
Bahasa tersebut
• Apa itu Regular Grammar?
• Grammar yang mendefinisikan Bahasa Reguler
• Sebuah Regular Grammar G, umumnya didefinisikan sebagai sebuah quadruple (VN, VT, S,
P), di mana:
• VN adalah simbol Non-Terminal
• VT adalah simbol Terminal
• S adalah starting symbol
• P adalah production rule/aturan produksi
4
5

Contoh Regular Grammar


• Ingat syarat yang harus dipenuhi aturan produksi pada
Regular Grammar!
G = (VN, VT, S, P), di mana
• VN = {S, T}
• VT = {a, b}
• S=S
• P={S→
S → aT
S → bT
T → aS
T → bS }
5
6

Pumping Lemma untuk Bahasa Reguler

• Keterbatasan dari bahasa reguler dituliskan secara formal dalam


Pumping Lemma.
• Pumping lemma untuk bahasa reguler menyatakan bahwa untuk
suatu bahasa reguler L terdapat sebuah integer n, dan untuk semua
x ϵ L dan |x| ≥ n, terdapat string u, v, w sedemikian sehingga x = uvw
dan ketiga kondisi berikut terpenuhi:
• |uv| ≤ n
• |v| > 0
• Untuk setiap i ≥ 0, string uv w  L
i

6
7

Pumping Lemma untuk Bahasa Reguler

• Dengan pembuktian kontradiksi, kita dapat menggunakan


pumping lemma untuk membuktikan sebuah bahasa tidak
reguler.
• Contohnya kita ingin membuktikan bahwa bahasa
L = {0 1 | n≥0} bukan bahasa reguler.
n n

7
8

Pumping Lemma untuk Bahasa Reguler

• Dengan pumping lemma:


• Misalkan L = {0 1 | n  0} adalah bahasa reguler.
n n

• Dan terdapat nilai n dan terdapat string z = 0 1 anggota L.


n n

Pasti |z|  n.
• Misalkan terdapat string u, v, w sehingga
1) z = 0 1 = uvw
n n

2) |uv|  n
8
3) |v|  1.
9

Pumping Lemma untuk Bahasa Reguler

• Dari kondisi (1), (2), dan (3), v = 1 j  n, string v hanya


0,
j

mengandung 0.
• Kita tidak mengetahui pasti berapa jumlah 0 pada v.
• Misalkan terdapat string z' = uv w = uvvw. Maka jelas z'
2

memiliki jumlah 0 lebih banyak daripada 1, sehingga, z'


bukan anggota L.
• Sehingga pernyataan bahwa L adalah bahasa regular
merupakan pernyataan yang kontradiktif.
9
10

Keterbatasan Finite Automata

• FA tidak mampu mengenali bahasa yang memiliki karakteristik


xy.
n n

• Hal ini dikarenakan FA tidak memiliki kemampuan untuk


“mengingat” jumlah kemunculan x untuk digunakan pada saat
memeriksa jumlah kemunculan y.
• Kita akan tambahkan kemampuan “mengingat” berbentuk stack
pada mesin modifikasi FA sehingga dapat memecahkan
permasalahan ini.
• Mesin ini dikenal dengan Pushdown Automata.

10
11

Review Stack
• Stack atau tumpukan adalah suatu struktur data yang seolah-olah terlihat
seperti data yang tersusun secara ‘menumpuk’, yang mana ada data yang
terletak di atas data yang lainnya.
• Bersifat LIFO (Last In First Out), berarti data yang masuk terakhir akan keluar
pertama.
• Suatu Stack diakses dari elemen paling atas yang disebut TOP.
• Operasi pada Stack:
• IsEmpty : mengecek apakah Stack sudah kosong
• Push : menambah data pada Stack pada tumpukan paling atas
11 • Pop : mengambil data pada Stack pada tumpukan paling atas
12

Review Stack (Operasi Push)


21 TOP 23 TOP
33 PUSH(23) 21
43 33
25 43
25

23 TOP 37 TOP
21 PUSH(37) 23
33 21
43 33
25 43
12 25
13

Review Stack (Operasi Pop)


37 TOP 23 TOP
23 POP( ) 21
21 33
33 43
43 25
25

23 TOP 21 TOP
21 POP( ) 33
33 43
43 25
25
13
14

Stack pada PDA

• Kita lakukan operasi push dan pop pada Stack di Pushdown


Automata.
• Misalkan push(3), maka mesin akan mem-push angka 3 ke
dalam Stack.
• Khusus untuk pop, maka operasi pop mengharuskan kita
untuk mengeluarkan elemen tertentu. Contoh, pop(3), maka
operasi pop pada stack harus mengeluarkan angka 3. Jika
TOP dari stack bukan 3, maka operasi pop(3) tidak bisa
14
dilakukan.
15

Pushdown Automata

• Pushdown Automata adalah sebuah mesin automata yang


berada satu tingkat di atas finite automata.
• Pushdown Automata diberikan fitur tambahan berupa sebuah
stack yang digunakan untuk mengingat symbol yang telah
dibaca sebelumnya.
• Setiap kali bertransisi, pushdown automata akan
memanipulasi stack menggunakan operasi push dan pop.

15
16

Ilustrasi Pushdown Automata


Input Tape

Head
Arah Pergerakan

State Indicator
1
4 2
3
17

Definisi Pushdown Automata


PDA memiliki beberapa bagian yakni:
• Input stream
• Finite state
• Mekanisme kontrol yang memungkinkan berpindah dari state 1 ke state
lain
• Tepat 1 initial state
• Minimal 1 final state / accepted state
• Stack
• Stack symbol.
18

Definisi Formal PDA


PDA dapat didefinisikan secara formal menjadi 6-tuple dalam bentuk (S, Σ, ,
T, i, F) dengan:
• S adalah himpunan finite state,
• Σ adalah machine alphabet,
•  adalah himpunan stack symbol,
• T adalah himpunan transisi,
• i adalah initial state (bagian dari S),
• F adalah himpunan accepted state.
19

Stack Symbol

• Stack symbol : finite symbol yang dapat disimpan di dalam


stack.
• Mungkin semua alphabet,
• Mungkin beberapa alphabet,
• Dan mungkin beberapa symbol yang tidak dikenal oleh
alphabet (contoh #).
20

Definisi Formal PDA

M = (S, Σ, , T, i, F)
• S=
{q0,q1,q2,q3}
• Σ = {x,y}
•  = {x,y,#}
• i = q0
• F = {q0,q3}
20
21

Transisi pada PDA

• Dengan adanya “anugrah” pengingat, maka mesin harus


dapat melakukan beberapa hal pada saat melakukan transisi:
• Membaca simbol input,
• Mem-pop simbol,
• Mem-push simbol,
• Bertransisi ke state lain.
22

Transisi pada PDA

• Proses-proses ini bisa kita notasikan ke dalam bentuk (p, x, s;


q, t) dengan:
• p menyatakan current state,
• x menyatakan simbol yang dibaca,
• s menyatakan simbol yang di-pop,
• q menyatakan new state / next state,
• t menyatakan simbol yang di-push.
23

Transisi pada PDA

• Variasi dari transisi, memungkinkan mesin untuk membaca,


mem-pop, ataupun mem-push string kosong.
• (p , λ , λ; q , λ) yang berarti dari state p, kita akan berpindah
ke state q dengan membaca, mem-pop, mem-push string
kosong.
• (p, x, λ; q, t) berarti dari state p, kita akan berpindah ke state
q dengan membaca x dan mem-push t ke dalam Stack.
• (p, x, s; q, λ) berarti dari state p, kita akan berpindah ke state
q dengan membaca x dan mem-pop s dari dalam Stack.
24

Diagram Transisi PDA

• Karena pada pushdown automata memiliki kemampuan


transisi (p, x, s; q, t), maka kita harus membuat perubahan
pada diagram transisi, sehingga kemampuan itu dapat
diakomodir.
• State p adalah current state, dan state q adalah next state. Hal
ini bisa digambarkan dengan dua node yang memiliki busur
berarah.
• Sedang x, s; t bisa kita jadikan sebagai label pada busur
berarah kita.
25

Diagram Transisi PDA


• Dari gambar berikut,
state q0 dan q3 adalah
final state.
• State q0 adalah initial
state.
• Dari state q0 pada saat
membaca string kosong,
maka akan mempop
string kosong, dan
mempush # baru
kemudian pindah ke
state q1.
26

PDA as Language Accepter

• Cara hampir sama dengan pada FA.


• Tempatkan string di tape, mesin akan membaca dari yang
paling kiri.
• Mesin akan mulai di initial state dengan stack kosong.
• Mesin akan menerima jika string memungkinkan mesin
menjangkau accepted state setelah membaca semua string.
27

PDA as Language Accepter

• Bahasa yang diterima oleh mesin PDA M akan membentuk


bahasa L(M).
• Bahasa L(M) adalah himpunan semua string yang diterima
oleh mesin M kita (bukan beberapa).
• Salah satu bentuk penting dari mesin ini adalah transisi (p, x,
λ; q, λ). Bentuk ini adalah bentuk lain dari FA.
• Salah satu kelebihan lain adalah PDA juga bisa membaca
bahasa x y .
n n
28

PDA as Language Accepter


• PDA berikut adalah PDA yang menerima string dengan pola xy
n n

• Misalkan kita ingin mengecek apakah string xxxyyy diterima oleh


PDA tersebut.

28
29

xxxyyy
State: q0

Stack
29
30

xxxyyy
State: q1

Stack
30
31

xxxyyy
State: q1

x
#
Stack
31
32

xxxyyy
State: q1

x
x
#
Stack
32
33

xxxyyy
State: q1

x
x
x
#
Stack
33
34

xxxyyy
State: q2

x
x
#
Stack
34
35

xxxyyy
State: q2

x
#
Stack
35
36

xxxyyy
State: q2

Stack
36
37

xxxyyy
State: q3

Stack
37
38

PDA yang Mengosongkan Stack


• Sepintas kedua mesin ini sama. Tapi di mesin kedua, akan mengenali pola
x y , dengan m >= n.
m n

• Lihat bahwa mesin 2 tidak mewajibkan stack di akhir harus kosong.

Mesin 1 Mesin 2
39

PDA yang Mengosongkan Stack

• Kita akan menfokuskan diri pada PDA dengan hasil akhir


stack adalah kosong, karena ada teorema:
• “Untuk setiap PDA yang menerima string tanpa
mengosongkan stack, maka ada PDA yang menerima bahasa
yang sama dengan mengosongkan stack”.
40

PDA yang Mengosongkan Stack

• Kita ingin mengubah mesin berikut menjadi PDA yang


mengosongkan Stack

40
41

Langkah Mengubah Menjadi PDA yang


Mengosongkan Stack
• Hilangkan tanda initial state dari mesin, dan buat satu initial state
dengan transisi dari initial state baru ke initial lama dengan
mempush simbol “#”.
• Hilangkan status accepted di setiap accepted state di mesin M.
Perkenalkan sebuah state p, yang memungkinkan semua old
accepted state berpindah ke p tanpa membaca, mempop atau
mempush apapun.
• Untuk setiap simbol x di Γ (kecuali “#”) perkenalkan transisi (p, λ, x;
p, λ)
• Buat satu accepted state q dan buat transisi (p, λ, #; q, λ).
42

Mengubah menjadi PDA yang


Mengosongkan Stack
43

Mengubah menjadi PDA yang


Mengosongkan Stack
44

Mengubah menjadi PDA yang


Mengosongkan Stack
45

Mengubah menjadi PDA yang


Mengosongkan Stack
46

• Mesin PDA yang menerima string xy,


n n n>0

46
47

Contoh Lain PDA

• Mesin PDA yang menerima string 01 ,


n 2n n>0

47
48

Contoh Lain PDA

• Mesin PDA yang menerima string 01


n m 0 1,
m n m,n > 0

48
49

Contoh Lain PDA

• Mesin PDA yang menerima string 0 1 0,


m m+n n m,n > 0

49

Anda mungkin juga menyukai