You are on page 1of 6

TEORI BAHASA DAN AUTOMATA

Teori Bahasa
Teori bahasa membicarakan bahasa formal (formal language), terutama untuk
kepentingan perancangan kompilator (compiler) dan pemroses naskah (text processor).
Bahasa formal adalah kumpulan kalimat. Semua kalimat dalam sebuah bahasa
dibangkitkan oleh sebuah tata bahasa (grammar) yang sama. Sebuah bahasa formal bisa
dibangkitkan oleh dua atau lebih tata bahasa berbeda. Dikatakan bahasa formal karena
grammar diciptakan mendahului pembangkitan setiap kalimatnya. Bahasa manusia
bersifat sebaliknya; grammar diciptakan untuk meresmikan kata-kata yang hidup di
masyarakat. Dalam pembicaraan selanjutnya ‘bahasa formal’ akan disebut ‘bahasa’ saja.
Automata
Automata adalah mesin abstrak yang dapat mengenali (recognize), menerima (accept),
atau membangkitkan (generate) sebuah kalimat dalam bahasa tertentu.

Mesin Pengenal Bahasa


Untuk setiap kelas bahasa Chomsky, terdapat sebuah mesin pengenal bahasa. Masing-
masing mesin tersebut adalah :
Kelas Bahasa Mesin Pengenal Bahasa
Unrestricted Grammar (UG) Mesin Turing (Turing Machine), TM
Context Sensitive Grammar (CSG) Linear Bounded Automaton, LBA
Context Free Gammar (CFG) Automata Pushdown (Pushdown Automata), PDA
Regular Grammar, RG Automata Hingga (Finite Automata), FA

PUSH DOWN AUTOMATA (PDA)


 Merupakan Mesin "counter part" dari CFG
 Finite automaton yang terdiri dari :
- finite control
- input tape
- Stack
· PDA dapat mengenal set yang tidak regular seperti :
L = { wcw R çw dalam ( 0+1 ) * }
· Konstruksi dan mekanisme kerja PDA yang menerima :
L = { wcw R çw dalam ( 0+1 ) * }
Grammar : S--® 0S0ç1S1çc
-Finite Control (FC) 2 state : q1,q2
-Stack symbol : piring biru (B),piring hijau (H), piring merah (M).
-Input symbol : 0,1

Mekanisme kerja :
1. M di stack, FC dalam State q1
2. Input : 0, FC : q1 Þ Push : B Input : 1, FC : q 1 Þ Push : H Untuk kedua input
Þ FC tetap di q1
3. Input : c, FC : q 1 , FC : masuk q 2
4. Input : 0, FC dalam state : q2, top stack : B Þ Pop : B Input : 1, FC : q2, top
stack : H Þ Pop : H untuk kedua input : FC tetap di q2
5. FC dalam q 2 , top : M Þ pop : M
6. Di luar ketentuan di atas : PDA tidak bergerak.
Mekanisme kerja di atas digambarkan dalam tabel berikut :
Piring State Input
0 1 c
Biru Q1 Push b tetap Push H masuk q2
q1 tetap q1
Q2 pop top - -
tetap q2
Hijau Q1 Push B 1 Push H masuk q2
tetap q tetap q 1
Q2 - pop top -
tetap q 2
Merah Q1 push B Push H masuk q2
tetap q1 tetap q1
q 2 Pop top elemen dari Stack

Definisi :
PDA menerima language dengan dua cara :
1. Stack menjadi kosong
2. Finite Automaton masuk final state Secara formal, PDA :
M = ( Q,S,T,d, q 0 , Z 0 , F ) dimana :
Q : Himpunan state
S : Alphabet input
T : Alphabet Stack
q 0 ÎQ : State awal
Z0 ÎT : Start symbol stack
F ÍQ : Himpunan final state
d : Mapping :
Q´ (S È {e} )´ T® Subset Q´T

Move :
 Langkah (Move) PDA didefinisikan sebagai :
1. d ( q,a,z ) = { (p1,g1), (p2,g2), ..., (pm,gm) }
dimana : q, pi, 1 £ i £ m, state aÎ S z : stack symbol gi Ît * , 1 £ i £ m
2. d (q,Î,z) = {(p1,g 1),(p 2, g2), … ,(pm, gm)} Instantenuous Description (ID) :
ID adalah triple: (q,w,y) dimana (q,aw,z ) (p,w, )
q = state
w = string of input symbols
y = string of stack symbol
1 jikad (q,a,z) berisi (p,ß)
Catatan : 'a' dapat sama denganÎ

Contoh :
Langkah-langkah PDA untuk menerima language :
L = { wcw R çw dalam ( 0+1 ) * } dengan empty stack, sebagai berikut:
M = ( {q1,q2}, {0,1,c}, {M,B,H}, d, q, M, Æ )
dimana didefinisikan sbb :
1.d ( q1,0,M ) = { ( q1,BM ) }
2.d ( q 1 ,0,B ) = { ( q 1 ,BB ) }
3.d ( q1,0,H ) = { ( q1,BH ) }
4.d ( q1,c,M ) = { ( q2,M ) }
5.d ( q1,c,B ) = { ( q2,B ) }
6.d ( q1,c,H ) = { ( q2,H ) }
7.d ( q 2 ,0,B ) = { ( q 2 ,Î) }
8.d ( q2,Î,M ) = { ( q2,Î) }
9.d ( q 1 ,1,M ) = { ( q 1 ,HM ) }
10.d ( q 1 ,1,B ) = { ( q 1 ,HB ) }
11.d ( q 1 ,1,H ) = { ( q 1 ,HH ) }
12.d ( q 2 ,1,H ) = { ( q 2 ,Î) }

Misalkan string input : 001c100 Langkah-langkah PDA :


( q 1,001c100,M )® ( q1,01c100,BM )
® ( q1,1c100,BBM ) ® ( q1,c100,HBBM )
® ( q2,100,HBBM )® ( q2,00,BBR )
® ( q2,0,BR ) ® ( q2,Î,R )® ( q2, Î,Î)
® accept
Accepted Languages :
Untuk suatu PDA M =
(Q,S,T,d,q 0 ,Z 0 ,F), L(M) adalah
language yang diterima dengan final
state didefinisikan sebagai :
{ wç( q0,w,z 0 ) * ( p,Î,g 1) untuk suatu p
ÎF dan gdalam T* }

N(M) adalah language yang diterima


dengan "empty stack" (null stack) dan
didefinisikan sebagai:
{ wç( q0,w,z0 ) * ( p,Î,Î 2) untuk suatu pÎQ }3 Deterministic PDA :
Hanya ada satu kemungkinan move dari suatu ID, atau dengan kata lain suatu PDA M
= ( Q, S, y, d, q0, Z0, F ) deterministic bila :
1.untuk semua q Î Q dan Z Î y, jika d ( q, Î, Z) tidak empty untuk semua a ÎS
2.tidak ada q Î Q, Z Î g, dan a Î SU { Î }, di mana (q,a,Z) berisi lebih dari satu elemen.

Contoh :
PDA yang menerima :
L = { ww R çw dalam ( 0+1 ) * }
M = ( { q1,q2}, { 0,1 }, { M,B,H }, d, q, R, Æ ) dengan sebagai berikut :
1.d ( q1,0,M ) = { ( q1,BM ) }
2.d ( q1,1,M ) = { ( q1,HM ) }
3.d ( q1,0,B ) = { ( q1,BB ), ( q 2,Î) }
4.d ( q1,0,H ) = { ( q1,BH ) }
5.d ( q1,1,B ) = { ( q1,HB ) }
6.d ( q1,1,H ) = { ( q1,HH ), ( q 2,Î) }
7.d ( q2,0,B ) = { ( q2 ,Î) }
8.d ( q 2,1,H ) = { ( q2,Î ) }
9.d ( q1,Î,M ) = { ( q2,Î ) }
10.d ( q2,Î,M ) = { ( q2,Î) }

Misalkan string input : 001100 Langkah-langkah PDA :


Start
( q 1 ,001100,M ) ® ( q 2 ,001100,Î )
( q1,01100,BM )
( q1,1100,BBM ) ( q2,1100,M ) ® ( q2,1100, Î )
( q 1 ,00,HHBBM ) ( q 2,00,BBM )
( q1,0,BHHBBM ) ( q2,0,BM )
( q 1, Î, BBHHBBM ) ( q2, Î, HHBBM ) ( q2,0,M )
( q 2 , Î,Î )
Accept
Theorem :

Jika L suatu CFL, maka ada suatu


PDA sehingga L = N(M).
Theorem :
Jika L adalah N(M) untuk suatu PDA
M, maka L adalah CFL.

You might also like