Rabu, 29 Juni 2016

Pushdown Automata



Kelompok 1
Pushdown Automata
(Konversi 2 Jenis PDA, PDA dengan final state dan empty serta Non Deterministic PDA)
Teori Bahasa dan Otomata




Anggota Kelompok :
                                   
A.    Zamzam Ramadhan  (1415061001)
                                    Fahreza Apriyoga            (1415061015)
                                    M. Sukarno Umar            (1415061028)
                                    Purma Nailu S.W.P         (1415061035)
                                    Yeni Apriyana                 (1415061040)


PRODI TEKNIK INFORMATIKA
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS LAMPUNG
GENAP 2015/2016
Context Free Grammar (CFG) à A.Zamzam R

A Push-Down otomata negara terbatas mesin yang dilengkapi dengan
perangkat memori yang berfungsi sebagai down push store. Push-down
automata yang setara dengan tata bahasa bebas konteks, juga dikenal sebagai
Tipe 2 Chomsky tata bahasa, yang berarti itu, diberi tata bahasa bebas
konteks G, robot-down push A dapat dibuat yang mengakui hanya kalimat
yang dihasilkan oleh G. Hubungan antara tata bahasa bebas konteks dan
push-down automata pertama kali dijelaskan oleh Chomsky (1962) ,
meskipun mesin erat kaitannya dengan robot-down push bekerja sebelumnya
oleh Yngve (1960) pada model memori transien yang dibutuhkan oleh
prosesor manusia untuk menganalisis kalimat dengan berbagai struktur yang
berbeda yang dihasilkan oleh tata bahasa bebas konteks.

Push Down Automata (PDA) merupakan mesin otomata dari
bahasa bebas konteks. PDA di gambarkan sebagai tempat penyipanan yang
tidak terbatas berupa stack/tumpukan.
Stack ialah kumpulan dari elemen-elemen sejenis dengan sifat
penambahan elemen dan pengambilan elemen melalui suatu tempat yang
disebut top of stack (puncak stack). Prinsip pada stack adalah LIFO.
Pengambilan elemen dari stack dinyatakan dengan operasi pop, sedang
memasukkan elemen ke dalam stack dengan operasi push.
Contoh sebuah stack:
Top stack →
A
D
E

Bila dilakukan operasi pop, maka kondisi stack menjadi:
Top stack →
D
E

Bila dilakukan operasi push B, maka kondisi stack menjadi:
Top stack →
B
D
E


Terinspirasi dari bahasa natural manusia, ilmuwan-ilmuwan ilmu komputer yang mengembangkan bahasa pemrograman turut serta memberikan tata bahasa (pemrograman) secara formal. Tata bahasa ini diciptakan secara bebas-konteks dan disebut CFG (Context Free Grammar). Hasilnya, dengan pendekatan formal ini, kompiler suatu bahasa pemrograman dapat dibuat lebih mudah dan menghindari ambiguitas ketika parsing bahasa tersebut. Contoh desain CFG untuk parser, misal : B -> BB | (B) | e untuk mengenali bahasa dengan hanya tanda kurung {‘(’,’)’} sebagai terminal-nya. Proses parsing adalah proses pembacaan untai dalam bahasa sesuai CFG tertentu, proses ini harus mematuhi aturan produksi dalam CFG tersebut.

Secara formal, CFG didefinisikan[2] : CFG G = (V,T,P,S), dimana V adalah daftar variabel produksi T, adalah daftar simbol atau terminal yang dipakai dalam CFG P, adalah aturan produksi CFG S, adalah variabel start aturan produksi CFG dapat ‘dinormalkan’ dengan pola tersendiri supaya tidak ambigu dan lebih sederhana, meskipun normalisasi CFG kadang membuat aturan produksi menjadi lebih banyak dari sebelumnya.


PDA dengan Empty Stack (Fahreza Apriyoga)
Tanpa membaca simbol input Jenis transisi tanpa membaca input adalah transisi yang dilakukan tanpa membaca input atau e. Transisi ini memungkinkan PDA memanipulasi isi stack atau berpindah state tanpa membaca input. Jenis-jenis PDA:
1.PDA null stack, yaitu PDA yang melakukan penerimaan input dengan stack kosong.
2. PDA final state, yaitu PDA yang melakukan penerimaan input yang pilihan transisinya menyebabkan PDA mencapai final state.

- Push Down Automata (PDA)
PDA adalah mesin otomata dari TBBK yang diimplementasikan dengan stack
sehingga hanya terdapat operasi “push” dan “pop” 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”.

- Pushdown automata (PDA)
Memiliki memori sementara dengan mekanisme LIFO (Last In, First Out). Mesin ini lebih ampuh karena bantuan keberadaan stack yang dipandang sebagai unit memori

Stack adalah kumpulan dari elemen-elemen sejenis dengan sifat penambahan elemen dan pengambilan elemen memalui suatu tempat yang disebut top of stack (puncak stack). Kita ingat bahwa sebuah stack diketahui top/puncaknya, dengan aturan pengisian LIFO (Last In First Out). Pengambilan elemen dari stack dinyatakan dengan operasi pop, sedang memasukkan elemen kedalam stack dengan operasi push. Setiap elemen stack bisa memuat satu symbol, yang pada push down automata disebut sebagai symbol stack.

Pop/push dilakukan pada stack berdasarkan fungsi transisinya. Pop dan push untuk setiap kali transisi pada mesin Push Down Automata, dapat dilakukan pada lebih dari suatu symbol. Push down automata menerima dengan stack kosong maka himpunan state akhir.


Konversi antar 2 jenis PDA (Mohamad Sukarno Umar)
Konversi antar 2 jenis Push Down Automata (PDA):

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

Non Deterministik Push Down Automata (Purma Nailu Safiroh W.P)

Push Down Automata (PDA)  merupakan mesin otomata dari bahasa bebas konteks.  PDA di gambarkan sebagai tempat penyipanan yang tidak terbatas berupa stack/ tumpukan.
Stack ialah kumpulan dari elemen-elemen sejenis dengan sifat penambahan elemen dan pengambilan elemen melalui suatu tempat yang disebut top of stack (puncak stack). Prinsip pada stack adalah LIFO.  Pengambilan elemen dari stack dinyatakan dengan operasi pop, sedang memasukkan elemen ke dalam stack dengan operasi push.

Contoh stack :
Top stack
           
A
D
Menjadi top stack, karena elemen A diambil (pop)
E

D
E
Jika dilakukan operasi pop :


Jika dilakukan operasi push B, maka kondisi stack akan menjadi : 
B
D
E
Menjadi top stack karena dimasukkan elemen B




·         Definisi : PDA adalah pasangan 7 tuple.

M = (Q, S, q , F, d, G, Z ), dimana :
Q : himpunan hingga state, 
S : alfabet input,
G : alfabet/simbol stack,
q : state awal, q Î Q
Z  : simbol awal stack,  Z Î G
F : himpunan state penerima, F Í Q
d : fungsi transisi , d : Q ´ (S È {e}) ´ G ® 2  (himpunan bagian dari Q ´ G*)

d(q , a, Z ) = (q , AZ ).            Push/insert
d(q , a, A) = (q1, e).                      Pop /delete

·         Untuk state q Î Q, simbol input a Î S, dan simbol stack XÎ G, d(q, a, X) = (p, a) berarti : PDA bertransisi ke state p dan mengganti X pada stack dengan string a.

·         Konfigurasi PDA pada suatu saat dinyatakan sebagai triple (q, x, a), dimana :
q Î Q : state pada saat tersebut, x Î S* : bagian string input yang belum dibaca, dan a Î G* : string yang menyatakan isi stack dengan karakter terkiri menyatakan top of stack.

·         Misalkan (p, ay, Xb) adalah sebuah konfigurasi, dimana : a Î S, y Î S*, X Î G, dan b Î G*. Misalkan pula d(p, a, X) = (q, g) untuk q Î Q dan g Î G*. Dapat kita tuliskan bahwa : (p, ay, Xb) Þ (q, y, gb).


Contoh (PDA Non-Deterministik):
PDA M = (Q, S, G, q , Z , d, F) pengenal palindrome L = {xx ½x Î (a½b)*} mempunyai komponen tuple berikut :
 Q  =  {q ,  q , q },  F = { q },  S = {a, b},  G = {a, b, Z }, dan fungsi transisi d terdefinisi melalui tabel berikut :

No.   St.      In.    TopS               Hasil                      No. St.      In.      TS            Hasil
1        q       a      Z       (q , aZ ), (q , Z )         7     q       e         Z          (q , Z )
2        q       b                 Z        (q , bZ ), (q , Z )        8     q       e         a             (q , a)
3        q       a     a          (q , aa), (q , a)                9     q       e          b             (q , b)
4        q       b                 a          (q , ba), (q , a)              10    q       a          a             (q , e)
5        q       a     b          (q , ab), (q , b)              11    q       b          b            (q , e)
6        q       b                 b          (q , bb), (q , b)              12    q       e          Z          (q , e)

q0,aba,z = q0,ba,az (1 kiri)
                = q1, a, az (4 kanan)
               = q1, e, z(10)
               =q2, e,e (12) diterima
q0,aba,z = q0,ba,az (1 kiri)
                = q0, a, baZ (4 kiri)
             = q1, ,baZ (5 kanan)    
               = halt

q0, aa, Z=q0, a, aZ=q0,  , aaZ=q1,  ,aaZ=halt
q0, aa, Z=qo, a, aZ=q1, ,aZ=halt
q0, aa, Z=q1, a, Z=halt
q0, abba, Z= q0, bba, aZ=q0, ba, baZ=q0,a,bbaZ=q0, ,abbaZ=q1,

Pada tabel transisi tersebut terlihat bahwa pada state q  PDA akan melakukan PUSH jika mendapat input a atau b dan melakukan transisi state ke state q  jika mendapat input e. Pada state q  PDA akan melakukan POP. Kedua Contoh di atas menunjukkan bahwa PDA dapat dinyatakan sebagai mesin PUSH-POP.
Berikut ini pengenalan string “baab” oleh PDA di atas :
1.      (q , baab, Z )               Þ (q , aab, bZ )           (2 kiri)
                                             Þ (q , ab, abZ )           (5 kiri)
                                             Þ (q , b, abZ )            (3 kanan)
                                             Þ (q , b, bZ )  (11)
                                             Þ (q , e, Z )    (10)
                                             Þ (q , e, Z )    (12)      (diterima)

2.      (q , baab, Z )               Þ (q , baab, Z )     (2kanan)(crash®ditolak)

3.      (q , baab, Z )               Þ (q , aab, bZ )           (2 kiri)
                                             Þ (q , ab, abZ )           (5 kiri)
                                             Þ (q , b, aabZ )           (3 kiri)
                                             Þ (q , b, aabZ )           (4kanan)(crash®ditolak)

4.      (q , baab, Z )               Þ (q , aab, bZ )           (2 kiri)
                                             Þ (q , ab, abZ )           (5 kiri)
                                             Þ (q , b, aabZ )           (3 kiri)
                                             Þ (q , e, baabZ )(4 kiri)
                                             Þ (q , e, baabZ )(9) (crash ® ditolak)

q0,aba,z = q0,ba,az = q1, a, az = q1, e, z =q2, e,e


Push Down Automata (PDA) merupakan mesin otomata dari bahasa bebas konteks. PDA di gambarkan sebagai tempat penyipanan yang tidak terbatas berupa stack/ tumpukan. Stack merupakan kumpulan darielemen-elemen sejenis dengan sifat penambahan elemen dan pengambilan elemen melalui suatu tempat yang disebut top of stack(puncak stack).
Pengambilan elemen dari stack dinyatakan dengan operasi pop sedangkanmemasukkan elemen kedala stack dengan posisi push.


PDA, configuration and move (Yeni Apriyana)

Push Down Automata, selanjutnya kita sebut sebagai PDA, merupakan mesin otomata dari bahasa bebas konteks. Bila sebuah finite state automata berhingga mempunyai kemampuan “memori” yang berbatas, pada otomata push down atau Push Down Automata didefinisikan sebuah tempat penyimpanan yang tidak terbatas berupa stack/tumpukan.

Stack adalah kumpulan dari elemen-elemen sejenis dengan sifat penambahan elemen dan pengambilan elemen memalui suatu tempat yang disebut top of stack (puncak stack). Kita ingat bahwa sebuah stack diketahui top/puncaknya, dengan aturan pengisian LIFO (Last In First Out). Pengambilan elemen dari stack dinyatakan dengan operasi pop, sedang memasukkan elemen kedalam stack dengan operasi push. Setiap elemen stack bisa memuat satu symbol, yang pada push down automata disebut sebagai symbol stack.

Contoh sebuah stack:
Top stack →
A
D
E

Bila dilakukan operasi pop, maka kondisi stack menjadi:
Top stack →
D
E

Bila dilakukan operasi push B, maka kondisi stack menjadi:
Top stack →
B
D
E

PDA adalah mesin otomata dari TBBK yang diimplementasikan dengan stack sehingga hanya terdapat operasi “push” dan “pop” 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”.

• Definisi : PDA adalah pasangan 7 tuple M = (Q,
S, G, q 0 , Z 0 , d, A), dimana :
Q : himpunan hingga stata,
S : alfabet input, G : alfabet stack, q 0 Î Q : stata awal, Z0 Î G : simbol awal stack, A Í Q : himpunan stata penerima, fungsi transisi d : Q × (S È {e}) × G ® 2Q ×G* (himpunan bagian dari Q x G*)

• Untuk stata q
Î Q, simbol input a Î S , dan simbol stack X Î G, d (q, a, X) = (p, α) berarti : PDA bertransisi ke stata p dan mengganti X pada stack dengan string a.

• Konfigurasi PDA pada suatu saat dinyatakan sebagai triple (q, x, α), dimana :
q
Î Q : stata pada saat tersebut, x Î S* : bagian string input yang belum dibaca, dan a Î G* : string yang menyatakan isi stack dengan karakter terkiri menyatakan top of
stack.

• Misalkan (p, ay, Xß) adalah sebuah konfigurasi, dimana : a
Î S, y Î S*, X Î G, dan ß
Î G*. Misalkan pula d(p, a, X) = (q, g) untuk q Î Q dan g Î G*. Dapat kita tuliskan
bahwa : (p, ay, X
b) Þ (q, y, gb).

Sebuah PDA dinyatakan dengan :
Q = himpunan state
S = himpunan simbol input
T = simbol stack
Δ = fungsi transisi
S = state awal
F = state akhir
Z = top of stack

PDA memiliki 2 jenis transisi, yaitu Δ yang menerima 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.

Contoh PDA Deterministik:
PDA M = (Q,
S, G, q0 , Z0 , d, A) pengenal palindrome L = {xcxT½x Î (a½b)*}, dimana
xT adalah cermin(x), mempunyai tuple : Q = {q0 , q 1 , q 2 }, A = { q 2 },
S = {a, b, c},
G = {a, b, Z0 }, dan fungsi transisi d terdefinisi melalui tabel berikut :



Sebagai contoh, perhatikan bahwa fungsi transisi No. 1 dapat dinyatakan sebagai :
d(q 0 , a, Z0 ) = (q 0 , aZ 0 ). Pada tabel transisi tersebut terlihat bahwa pada stata q 0 PDA akan melakukan PUSH jika mendapat input a atau b dan melakukan transisi stata ke stata q 1 jika mendapat input c. Pada stata q1 PDA akan melakukan POP.

Berikut ini pengenalan dua string oleh PDA di atas :
1. abcba : (q 0 , abcba, Z 0 )
Þ (q 0 , bcba, aZ 0 ) (1)
Þ (q 0 , cba, baZ 0 ) (4)
Þ (q1 , ba, baZ 0 ) (9)
Þ (q1 , a, aZ 0 ) (11)
Þ (q1 , e, Z 0 ) (10)
Þ (q 2 , e, Z 0 ) (12) (diterima)
2. acb : (q 0 , acb, Z 0 )
Þ (q 0 , cb, aZ 0 ) (1)
Þ (q1 , b, aZ0 ) (8), (crash ® ditolak)
3. ab : (q 0 , ab, Z 0 )
Þ (q 0 , b, aZ0 ) (1)
Þ (q 0 , e, baZ0 ) (4) (crash ® ditolak)

Penerimaan dan penolakan tiga string di atas dapat dijelaskan sebagai berikut :
1. string abcba diterima karena tracing sampai di stata penerima (q 2 ) dan string “abcba” selesai dibaca (string yang belum dibaca =
e)
2. string acb ditolak karena konfigurasi akhir (q 1 , b, a Z 0 ) sedangkan fungsi transisi
d(q 1 , b, a) tidak terdefinsi
3. string ab ditolak karena konfigurasi akhir (q 0 ,
e, baZ0 ) sedangkan fungsi transisi d(q 0 ,e, b) tidak terdefinsi

Ilustrasi graf fungsi transisi PDA di atas ditunjukkan melalui gambar berikut :

• Notasi (p, ay, X
b) Þ (q, y, gb) dapat diperluas menjadi : (p, x, a) Þ* (q, y, b), yang berarti konfigurasi (q, y, b) dicapai melalui sejumlah (0 atau lebih) transisi.
• Ada dua cara penerimaan sebuah kalimat oleh PDA, yang masing-masing terlihat dari konfigurasi akhir, sebagaimana penjelasan berikut :

Jika M = (Q,
S, G, q 0 , Z 0 , d, A) adalah PDA dan x ÎS*, maka x diterima dengan stata akhir (accepted by final state) oleh PDA M jika : (q 0 , x, Z0 ) Þ* (q, e, a) untuk a Î G* dan q Î A. x diterima dengan stack hampa (accepted by empty stack) oleh PDA M jika : (q 0 , x, Z0 ) Þ* (q, e, e) untuk q Î Q.

Contoh PDA Non-Deterministik:
PDA M = (Q,
S, G, q 0 , Z0 , d, A) pengenal palindrome L = {xx T ½x Î (a½b)*} mempunyai komponen tuple berikut : Q = {q 0 , q1 , q 2 }, A = { q 2 }, S = {a, b}, G = {a, b, Z0 }, dan fungsi transisi d terdefinisi melalui tabel berikut :


Pada tabel transisi tersebut terlihat bahwa pada stata q 0 PDA akan melakukan PUSH jika mendapat input a atau b dan melakukan transisi stata ke stata q 1 jika mendapat input
e.
Pada stata q 1 PDA akan melakukan POP. Dua contoh di atas menunjukkan bahwa PDA dapat dinyatakan sebagai mesin PUSH-POP.

Berikut ini pengenalan string “baab” oleh PDA di atas :
1. (q 0 , baab, Z 0 )
Þ (q 0 , aab, bZ 0 ) (2 kiri)
Þ (q 0 , ab, abZ 0 ) (5 kiri)
Þ (q1 , ab, abZ 0 ) (3 kanan)
Þ (q1 , b, bZ0 ) (11)
Þ (q1 , e, Z 0 ) (10)
Þ (q 2 , e, Z 0 ) (12) (diterima)
2. (q 0 , baab, Z 0 )
Þ (q1 , baab, Z 0 ) (2 kanan) (crash ® ditolak)
3. (q 0 , baab, Z 0 )
Þ (q 0 , aab, bZ 0 ) (2 kiri)
Þ (q 0 , ab, abZ 0 ) (5 kiri)
Þ (q 0 , b, aabZ 0 ) (3 kiri)
Þ (q1 , b, aabZ 0 ) (4 kanan) (crash ® ditolak)
4. (q 0 , baab, Z 0 )
Þ (q 0 , aab, bZ 0 ) (2 kiri)
Þ (q 0 , ab, abZ 0 ) (5 kiri)
Þ (q 0 , b, aabZ 0 ) (3 kiri)
Þ (q 0 , e, baabZ 0 ) (4 kiri)
Þ (q1 , e, baabZ 0 ) (9) (crash ® ditolak)


Konfigurasi mula (initial configuration)recognizer adalah konfigurasi dimana
kendali berhingga dalam satu keadaan yang dispesifikasikan, head masukan sedang
men-scan (memindai) simbol terkiri tape masukan, dan memori mempunyai satu isi
mula yang dispesifikasikan.
Konfigurasi akhir (final configuration) adalah konfigurasi dimana kendali
berhingga pada salah satu himpunan keadaan akhir yang dispesifikasikan dan head
masukan sedang men-scan penanda akhir, atau telah mencapai akhir tape masukan.
Sering, memori harus juga memnuhi syarat tertentu agar konfigurasi dimasukan sebagai
akhir.
Kita nyatakan recognizer menerima (accept) string masukan jika, dimulai dari
konfigurasi mula dengan w pada tape masukan, recognizer dapat membuat satu barisan
gerak dan berakhir pada konfigurasi akhir.
Bahasa yang didefinisikan oleh recognizer adalah himpunan string masukan yang
diterimanya. Karakteristik bahasa yang diterima recognizer adalah :
1. Bahasa L adalah right linear jika dan hanya jika L didefinisikan oleh finite
automaton secara deterministik (one way deterministik finite automaton).
2. Bahasa L adalah context-free jika dan hanya jika L didefinisikan oleh
pushdown-automaton searah non-deterministik.
3. Bahasa L adalah context-sensitif jika dan hanya jika L didefinisikan oleh
pushdown-bounded automaton linear dua arah nondeterministik.
4. Bahasa yang secara rekursif terdaftarkan jika dan hanya jika L didefinisikan
oleh mesin Turing (Turing Machine).


ε-move adalah suatu transisi antara 2 status tanpa adanya input. Contoh gambar : transisi antara status q1 ke q3
NFA dengan e-Move