Anda di halaman 1dari 34

BAB I

PENDAHULUAN

PENGERTIAN AUTOMATA
Teori otomata mempelajari tentang mekanisme komputer abstrak atau mesin abstrak.
Jauh sebelum ada komputer, tahun 1930, Alan Turing mempelajari mesin abstrak
yang punya kemampuan seperti komputer sekarang, dikenal dengan nama Mesin
Turing. Tujuan Turing adalah menggambarkan secara jelas apa yang dapat dan yang
tidak dapat dilakukan mesin komputing. Kemudian pada tahun 1940 an dan 1950-an,
ditemukan mesin abstrak yang lebih sederhana, yaitu “finite automata”. Automata ini,
asalnya diperuntukkan untuk membentuk fungsi kecerdasan, berubah secara drastis
untuk keperluan lain yang sangat beragam. Tahun 1950-an juga Chomsky
mempelajari tentang “tata bahasa” formal, yang sangat berguna untuk pengembangan
compiler.

Semua pengembangan teori ini secara langsung melahirkan ilmu-ilmu komputer yang
sekarang ini. Beberapa konsepnya, seperti “Finite Automata” dan “grammar”,
digunakan untuk perancangan dan pembuatan bermacam software penting,
seperti Pascal dan C. Konsep lainnya, seperti Mesin Turing, membantu kita
memahami apa yang dapat kita harapkan dari perangkat lunak kita.

KEDUDUKAN TEORI BAHASA DAN OTOMATA


Ilmu komputer mempunyai dua komponen utama, pertama : model dan gagasan
mengenai komputasi, dan kedua adalah teknik rekayasa untuk perancangan sistem
komputasi, yang meliputi perangkat keras dan perangkat lunak. Teori Bahasa dan
Otomata merupakan bagian dari komponen pertama.

Finite State Automata dan ekspresi regular awalnya dikembangkan berdasarkan


pemikiran jaringan syaraf tiruan (neural network) dan rangkaian switch (switching
circuit). Finite State Automata sangat berguna dalam perancangan lexica l analyzer,
yang merupakan bagian dari sebuah compiler. FSA dan ekspresi regular juga
digunakan dalam perancangan text editor, pattern-matching, sejumlah
pemrosesan teks, dan program file-searching serta sebagai konsep matematis untuk
aplikasi lain.

Mengapa mempelajari teori? Teori memberikan konsep dan prinsip yang menolong
untuk memahami “perilaku” dari suatu disiplin ilmu. Bidang ilmu komputer meliputi
topik yang sangat luas, dimana sebagian besar mempunyai prinsip yang umum. Untuk
mempelajari prinsip dasar inilah diperlukan pemodelan secara abstrak dari komputer.
Model ini memiliki fungsi-fungsi yang penting dan umum untuk dapat diterapkan
pada perangkat keras maupun perangkat lunak. Beberapa gagasan yang diutarakan
memiliki penerapan yang penting. Misalkan pada compiler.
PENGANTAR MODEL KOMPUTASI
Kuliah ini membahas model-model komputasi sebagai mesin abstrak yang dapat
didefinisikan secara matematis, mulai dari yang paling sederhana hingga yang paling
powerful.

Model-model sederhana dibahas agar formalisasi matematis dapat terbentuk secara


bertahap, selain itu tetap masih ada hubungannya dengan situasi-situasi dunia nyata.

Secara umum model-model digambarkan sebagai mesin untuk menjawab masalah


keputusan berdasarkan masukan string x dengan memberikan keluaran berupa : ya
atau tidak misalnya :
 Apakah x bilangan ganjil
 Apakah sebuah kata s anggota bahasa B

Masalah komputasi memang lebih umum daripada masalah keputusan, namun pada
dasarnya suatu model untuk masalah keputusan memerlukan komponen yang dapat
melakukan komputasi yang terkait, misalnya : Untuk suatu (x,y), “apakah y = f(x)?”
hanya dapat dijawab jika f(x) dapat dikomputasi.

Model-model mesin yang akan dibahas pada kuliah ini adalah Finite Automata (FA),
PushdownAutomata(PDA), Mesin Turing (TM). Teori dan model komputasi ini telah
berkembang jauh sebelum ditemukan perangkat komputer itu sendiri.

KONSEP BAHASA
Simbol. Simbol merupakan elemen unik terkecil dari bahasa. Dalam sebuah bahasa
terdapat sejumlah berhingga simbol-simbol.

Abjad / Alfabet. Merupakan himpunan dari simbol-simbol yang digunakan dalam


suatu bahasa. Biasanya dinotasikan dengan . Misalkan  = {0,1}.

String / word / kata / untai. Adalah barisan berhingga dari simbol-simbol dalam
suatu alfabet. Misalkan :  = {0,1} maka 01, 00, 111 merupakan string yang dibentuk
berdasarkan alfabet . Dalam pembahasan, seringkali suatu untai/string dinyatakan
dengan suatu variabel, yang biasanya berupa huruf kecil. Contoh : w = “01”; x =
“aba”, dst.

Panjang String. Suatu string disusun dari sejumlah n simbol, dengan n0.
Banyaknya simbol yang menyusun sebuah string disebut panjang string, yang
disimbolkan dengan |x|. contoh : x = aba , maka |x| = 3.

Untai hampa. Sebuah string dengan panjang nol (n=0) disebut untai hampa dan
dinotasikan dengan . Untai hampa () merupakan untai yang dibentuk berdasarkan
abjad apa saja. Sehingga  merupakan himpunan bagian dari sembarang himpunan.
Bahasa. Bahasa merupakan himpunan string/kata dari alfabet bahasa itu. Misal
untuk
- 1 = {0,1} maka L1 = {00,01,11,111} merupakan bahasa yang dibentuk
berdasarkan abjad 1 .
- 2 = {a,b} maka L2 = {a, ab, aab, aaab, … } merupakan bahasa berdasarkan abjad
2
Misalkan  suatu abjad dan w adalah untai yang dibentuk berdasarkan abjad . Jika
terdapat L yang merupakan bahasa berdasar abjad  dan jika w ada di dalam L, kita
tuliskan w  L, yang berarti w elemen dari L.

Bahasa kosong. Merupakan bahasa yang tidak terdiri dari untai apapun. Dinotasikan
dengan {} atau .

Bahasa Universal. Adalah bahasa yang terdiri dari semua kata yang dapat dibentuk
berdasarkan suatu abjad . Misalkan  = {1} maka bahasa universal, dinotasikan *,
adalah * = {, 1, 11, 111, 1111, …}

OPERASI PADA STRING


Perangkaian (Concatenation). Jika w dan z adalah untai, perangkaian w dengan z
merupakan untai yang diperoleh dengan merekatkan z ke w. Contoh : w = “abang”
dan z = “none” maka wz atau w.z = “abangnone”. Panjang kata wz, |wz| = |w| + |z|=9.
Sebarang kata jika dirangkai dengan , tidak akan merubah kata tersebut. w=w=w.
Jadi  merupakan identitas (identity) terhadap operasi perangkaian.

Pangkat (Exponentiation). Misalkan w merupakan sebuah kata, untuk n  bilangan


asli, didefinisikan :
 ; n  0
w n   n 1
ww ; n  0
Misalkan ,  = {0,1} dan w = 110, diperoleh :
w0 = 
w1 = w.w0 = 110. = 110
w2 = w.w1 = 110.110 = 110110
w3 = w.w2 = 110.110110 = 110110110

Sama Dengan (Equal). Jika w dan z adalah untai, dikatakan w sama dengan z jika
keduanya terdiri dari simbol-simbol yang sama dan panjangnya sama, dinotasikan w
= z.

Awalan (prefix). Jika w dan x adalah kata, maka x merupakan awalan dari w jika
untuk suatu untai y, berlaku w = xy. Contoh w = 121 dan x = 12, maka x merupakan
awalan dari w, dimana dalam hal ini y = 1.

Subuntai (substring). Sebuah untai w merupakan subuntai dari untai lain z jika
terdapat untai-untai x dan y, sehingga berlaku z = xwy.
Pembalikan (reversal / transpose). Transpose dari sebuah untai w, yaitu wR,
didefinisikan sebagai :

 w; w  
wR   R
 y a; w  ay, a  , y   *
Contoh : w = “able”,
wR = (able)R = (ble)R a
= (le)Rba
= (e)R lba
= ()Relba
= . elba
= elba

OPERASI PADA BAHASA


Concatenation. Misal A dan B adalah bahasa berdasarkan suatu abjad. Didefinisikan
perangkaian dari bahasa A dan B sebagai :
A.B = { w.x | w  A dan x  B}
Jadi A.B terdiri dari semua untai yang dibentuk dengan mengambil setiap untai di A
dan merangkaikannya dengan setiap untai di B. Contoh : A = {bird, dog} dan B = {
house} maka AB = {birdhouse, doghouse}

Eksponensiasi. Misalkan A bahasa berdasarkan abjad , didefinisikan :


 {}; n  0
An   n 1
 A. A ; n  1
Jadi, jika misalkan A = {ab,a} berdasarkan abjad  = {a,b} maka :
A0 = {  }
A1 = A.A0 = {ab,a}{} = {ab,a}
A2 = A.A1 = {ab,a}{ab,a} = {abab,aba,aab,aa}
A3 = A.A2 = {ab,a}{abab,aba,aab,aa} = {ababab,ababa,abaab,abaa,aabab,aaba,
aaab,aaa}

Gabungan (Union). Jika A dan B adalah bahasa berdasarkan abjad  maka gabungan
dari A dan B, A  B, terdiri dari semua kata yang muncul sekurang-kurangnya sekali
di dalam A dan B.
A  B = {x | x  A atau xB}

Irisan (intersection). Irisan dari bahasa A dan B terdiri dari kata-kata yang muncul di
A sekaligus di B. Dinotasikan sebagai : A  B,
A  B = {x | x  A dan x  B}

Selisih (Difference). Jika A dan B bahasa berdasarkan abjad , didefinisikan selisih


antara bahasa-bahasa tersebut sebagai :
A – B = {x | x  A dan x  B}
Komplemen. Komplemen dari suatu bahasa A berdasarkan abjad  didefinisikan
sebagai : A   *  A .

Subbahasa (sublanguage). Jika A dan B bahasa berdasarkan abjad , dan jika semua
untai di A juga merupakan untai di B maka A disebut subbahasa dari B. (A  B)

Equal. Dua bahasa A dan B dikatakan sama atau equal, A = B, jika kedua bahasa
tersebut secara persis mempunyai untai-untai yang sama.

Pembalikan (Transpose/Reversal). Pembalikan dari suatu bahasa A dapat


didefinisikan sebagai :
AR = { xR | x  A }
Contoh : A = { dog, bog} maka AR = {god, gob}.

Kleene Closure / Star Closure. Jika A sebuah bahasa maka penutup kleene dari

bahasa A didefinisikan sebagai : A* =  n 0
An .
Contoh : A = {a} maka A* = {,a,aa,aaa,…}

Positive Closure / Plus Closure. Jika A sebuah bahasa maka penutup kleene dari

bahasa A didefinisikan sebagai : A+ = 
n 1
An .
Contoh : A = {a} maka A+ = {a,aa,aaa,…}.

Teorema : A+ = A. A* = A*. A
BAB II
BAHASA REGULER

DEFINISI BAHASA REGULAR


Misalkan  merupakan sebuah abjad. Kumpulan dari bahasa regular berdasar  didefinisikan
secara rekursif sebagai berikut [1] :
(1)  adalah sebuah bahasa regular
(2) {} adalah sebuah bahasa regular
(3) untuk setiap a  , {a} merupakan bahasa regular. Disebut juga bahasa singleton
(4) Jika A dan B bahasa regular maka AB, A.B, dan A* atau B* merupakan bahasa
regular.
(5) Tidak ada bahasa lain berdasarkan  yang regular.

Contoh 1 : Misalkan  = {a,b}, maka berikut ini merupakan bahasa-bahasa regular


berdasarkan  yaitu  , {},{a},{b},{a,b},{ab},{a,ab,b},{ai | i 0}, {(ab)i | i  0}

EKSPRESI REGULAR
Ekspresi Regular (Regular Expression), disingkat RE, didefinisikan sebagai berikut:
(1)  merupakan ekspresi regular untuk bahasa regular 
(2)  merupakan ekspresi regular untuk bahasa regular {}
(3) a merupakan ekspresi regular untuk bahasa singleton {a}
(4) Jika r ekspresi regular untuk bahasa regular A dan s sebuah ekspresi regular untuk
bahasa regular B, maka
- r + s merupakan ekspresi regular untuk bahasa A  B
- rs merupakan ekspresi regular untuk bahasa A.B
- r* merupakan ekspresi regular untuk bahasa A*
Contoh 2:
BAHASA REGULAR RE
{} 
{a} a
{a,b} a+b
{ab} ab
{a,aa} a+aa
{a}* a*
{a,b}* (a+b)*
{,ab}* (+ab)*

Teorema
Misalkan r,s dan t merupakan ekspresi regular berdasar abjad  yang sama, maka berlaku :
(1) r + s = s + r
(2) r +  =  + r = r
(3) r + r = r
(4) (r + s) + t = r + (s + t)
(5) r. = .r = r
(6) r. = .r = 
(7) (rs)t = r(st)
(8) r (s + t) = rs + rt dan (r + s) t = rt + st
(9) r* = r** = r* r* = ( + r)* = r* (r + ) = (r + ) r* =  + rr*
(10) (r+s)* = (r* + s*)* = (r* s*)* = (r* s)* r* = r* (sr*)*
(11) r (sr)* = (rs)* r
(12) (r* s)* =  + (r + s)*s
(13) (rs*)* =  + r(r+s)*
(14) s (r+)*(r+)+s = sr*
(15) rr* = r*r = r+

Seperti halnya dalam operasi aritmatik, untuk menghilangkan ambiguitas saat menggunakan
notasi +, * dan concat, maka diperlukan suatu hirarki penulisan notasi. Hirarki tertinggi adalah
*, kemudian concat, dan terakhir +. Tanda kurung berperan untuk mengelompokkan suatu
subekspresi sebagai satu entitas ekspresi seperti halnya penulisan formula aritmatika.
Misalkan : aa*(b+ba*)*b

Berikut ini contoh penulisan ekspresi regular dari pendefinisian bahasa regular :
Contoh 3: Jika  = {a,b} dan L adalah bahasa berdasarkan abjad  yang semua string
didalamnya mempunyai panjang genap. (termasuk   L, dimana panjangnya nol)
Setiap string yang panjangnya genap merupakan hasil operasi concat dari string
dengan panjang 2 atau dapat dituliskan : L = {aa + ab + ba + bb}* dimana dapat dinyatakan
dengan ekspresi regular
(aa+ab+ba+bb)* = (a(a+b) + b(a+b))*
= ((a+b)(a+b))*

Contoh 4: Jika  = {a,b} dan L adalah bahasa berdasarkan abjad  yang semua string
didalamnya diakhiri dengan double a.
Sembarang string berdasarkan abjad  dapat dituliskan L1 = {a,b}*, dan kemudian
diconcat dengan L2 = {aa} , sehingga menjadi L1.L2 = {a,b}*{aa}. Jika dituliskan
dalam ekspresi regular : (a+b)*(aa)

FINITE AUTOMATA (FA)


Suatu Finite Automata (FA) atau kadang disebut Finite State Automaton (FSA) adalah mesin
abstrak yang dapat mengenali bahasa regular.

FA didefinisikan sebagai berikut :


Suatu FA merupakan mesin status hingga yang terdiri dari 5 tuple yaitu (Q,,s,F,) dimana
 Q merupakan himpunan berhingga dari state (status)
  adalah himpunan alfabet dari simbol input.
 s  Q merupakan sebuah state yang berlaku sebagai state awal (start state).
 F  Q yang merupakan state akhir (final state)
  adalah fungsi transisi yang memetakan Q x  ke Q , ditulis (Q,) = Q

Contoh 5: Diketahui sebuah FA M = (Q,,s,F,) dimana Q = {q0, q1, q2},  = {a,b}, s = q0, F =
{q0} dan  :
a b
q0 q1 q2
q1 q2 q0
q2 q2 q2
FA tersebut dapat dinyatakan dalam bentuk digraf sebagai berikut:
a

b
q0 q1

b a

q2

a,b
RE=(ab)*
FINITE AUTOMATA DAN BAHASA REGULAR
Dalam definisi suatu FA terdapat sejumlah status akhir. Apabila sebuah string masukan
membawa status FA mulai dari status awal ke salah satu status akhir maka string tersebut
diterima atau dikenali oleh FA tersebut. Dan sebuah bahasa L dikatakan diterima oleh
sebuah FA jika semua string elemen bahasa L diterima oleh FA tersebut.

Contoh 6 : Perhatikan FA pada contoh 5, string ab diterima oleh FA tersebut karena jika kita
mulai dari status awal q0 membaca input a, kita akan menuju status q1. Kem udian dari q1
membaca b, menuju status q0. Disini pembacaan inpu selesai, dan berhenti di status akhir
(final state). Sehingga ab diterima oleh FA tersebut.

Contoh 7 : String aab tidak diterima oleh FA pada contoh 5. Mengapa? String apa saja yang
diterima oleh FA tesebut? Bahasa apa yang diterima oleh FA tersebut?

NONDETERMINISTIC FINITE AUTOMATA


FA pada contoh 5 merupaka Deterministic Finite Automata, dimana banyaknya transisi dari
satu status ke status lainnya satu dan hanya satu. Nondeterministic Finite Automata adalah
FA yang banyaknya fungsi transisi () dari satu state ke state lainnya nol, satu atau lebih dari
satu state.

Contoh 8 : Berikut ini adalah NFA M = (Q,,s,F,) dimana Q = {q0, q1, q2}, ={a,b}, s=q0, F =
{q0} dan  :

a b
Q0 {q1} {}
Q1 {} {q0,q2}
Q2 {q0} {}

Atau dalam bentuk digraf :


a

b
q0 q1

b b

q2

EKIVALENSI NFA DAN DFA


Jika terdapat sebuah NFA M = (Q,,s,F,) yang menerima bahasa L, maka ada DFA
M’=(Q’,’, s’,F’,’) yang juga menerima bahasa L , dimana :
(1) ’ = 
(2) s’ = s
(3) Jika Q = {q0, q1, …, qn} maka mula-mula Q’ = { [q0],[q1],…,[qn]}
(4) Jika (qi,a) = {qj, qk, …} dan a  , maka ’([qi],a) = [qj, qk, …] dan [qj, qk, …] menjadi
state baru dan digabungkan ke Q’
(5) Setiap state baru dalam Q’ yang diperoleh, dicari transisi untuk setiap input dalam ’.
Dimana ’([qj, qk, …],a) = (qj,a)  (qk,a)  …
(6) F’ terdiri dari semua state di Q’ yang mengandung state di F.
Contoh 9 : Carilah sebuah DFA M’=( Q’,’,s’,F’,’) yang ekivalen dengan NFA M=(Q,,s,F,)

b
q0 q1

a b

q2

pada contoh

.
(1) ’ =  = {a,b}
(2) s’ = s = [q0]
(3) Qmula-mula = {[q0],[q1],[q2]}
(4) (q0,a) = {q1}  ’(q0,a) = [q1]
(q0,b) = {}  ’(q0,b) = [ ] (state baru)
(q1,a) = {}  ’(q1,a) = [ ]
(q1,b) = {q0,q2}  ’(q1,b) = [q0, q2] (state baru)
(q2,a) = {q0}  ’(q2,a) = [q0]
(q2,b) = {}  ’(q2,b) = [ ]
maka Q’ = {[q0],[q1],[q2], [],[q0, q2]}
(5) ’( [] , a) = []
’( [] , b) = []
’( [q0, q2], a ) = (q0,a)  (q2,a) = {q1}  {q0} = {q0,q1}  [q0,q1]
’( [q0, q2], b ) = (q0,b)  (q2,b) = {}  {} = {}  []
’( [q0, q1], a ) = (q0,a)  (q1,a) = {q1}  {} = {q1}  [q1]
’( [q0, q1], b ) = (q0,b)  (q1,b) = {}  {q0,q2} = {q0,q2}

Tidak ada state baru.


(6) F’ = {[q0], [q0,q2],{qo,q1}}
Maka kita mendapatkan sebuah DFA M’ = (Q’,’,s’,F’,’) dengan Q’ = {[q0], [q1], [q2], [],
[q0,q1], [q0,q2]}, ’ = {a,b}, s’ = [q0], F’ = {[q0], [q0,q2], [qo,q1]}, dan ’ :

A B
[q0] [q1] []
[q1] [] [q0,q2]
[q2] [q0] []
[] [] []
[q0,q2] [q0,q1] []
[q0,q1] [q1] [q0,q2]

FINITE AUTOMATA DENGAN TRANSISI HAMPA (-TRANSITION)


Adalah NFA yang mempunyai transisi yang tidak bergantung dari suatu input tertentu. Atau
dengan kata lain, dapat berpindah dari satu state ke state lain tanpa membaca input apapun.
Contoh :

q0
 q1

-CLOSER
Untuk sebuah state q  Q dari NFA M=(Q,,s,F,) dengan transisi-, didefinisikan penutup-
(-closer) dari q dimana :
-cl(q) = {p | p  Q dan p dapat dicapai dari q tanpa input apapun}
sedangkan
n
-cl({qi1 , qi2, qi3, …, qik}) =    cl (q
k 1
ik )

dimana a  ., qi  Q. dan


d(q,a) = {p | p Q dimana ada transisi dari q ke p dengan input a}
n
d ({qi1 , qi 2 ,..., qik }, a)   d (qik , a)
k 1
Setiap state punya tran sisi- ke state itu sendiri, meskipun tidak digambarkan.
Eliminasi Transisi-

Jika NFA M=(Q,,s,F,) dengan transisi-, maka terdapat NFA lain M’=(Q’,’,s’,F’,’) tanpa
transisi- yang mendefinisikan bahasa yang sama dimana :

’(q,a) = -cl (d (-cl (q), a))


dan
F’ = F  { q | (-cl(q)  F)   }

Contoh 10 : Hilangkan transisi- dari NFA berikut :


b a

q0
 q1

Dari gambar diatas kita dapat menentukan bahwa  = {a,b}, F = {q1} dan
d(q0,a) = {} -cl(q0) = {q0, q1}
d(q0,b) = {q0} -cl(q1) = {q1}
d(q1,a) = {q1}
d(q1,b) = {}
Maka :
(1) ’(q0,a)
 -cl(q0) = {q0, q1}
 d({q0, q1},a) = d(q0,a)  d(q1,a) = {}  {q1} = {q1}
 -cl(q1) = {q1}
 maka ’(q0,a) = {q1}
(2) ’(q0,b)
 -cl(q0) = {q0, q1}
 d({q0, q1},b) = d(q0,b)  d(q1,b) = {q0}  {} = {q0}
 -cl(q0) = {q0, q1}
 maka ’(q0,b) = {q0, q1}
(3) ’(q1,a)
 -cl(q1) = {q1}
 d(q1,a) = {q1}
 -cl(q1) = {q1}
 maka ’(q1,a) = {q1}
(4) ’(q1,b)
 -cl(q1) = {q1}
 d(q1,b) = {}
 -cl({}) = {}
 maka ’(q1,a) = {}
(5) F’ = {q1}  {q0, q1} = {q0, q1}
Jadi NFA tanpa transisi- adalah :
b a

a, b
q0
q0 q1
FINITE AUTOMATA & EKSPRESI REGULAR
Jika r1 dan r2 adalah ekspresi regular yang mendefinisikan sebuah bahasa regular L, maka
kita dapat membentuk sebuah NFA dari bahasa regular L tersebut, dimana
(1) RE : 
FA :

(2) RE : 
FA :

(3) RE : r
FA :

(4) RE : r1 + r2
FA :
r1

 

 

r2

(5) RE : r1.r2
FA :
r1 r2

  

(6) RE : r1*
FA :

r1

 

Jika diketahui RE sebuah bahasa regular L, maka kita dapat membentuk sebuah DFA yang
menerima bahasa L dengan langkah-langkah :
(1) Bentuklah NFA dengan transisi- dari RE tersebut
(2) Eliminasi transisi- dari NFA di langkah (1)
(3) Rubah NFA yang diperoleh di langkah (2) menjadi DFA

Sebaliknya jika terdapat sebuah FA M = (Q,,s,F,) yang menerima bahasa L, maka kita
dapat menentukan RE dari bahasa L dimana jika qj  (qi,) dan    maka terdapat
persamaan :
Ai   A j | q j   (qi ,  ) dan A0 = L(M)

Lemma Arden : Persamaan X = AX + B ekivalen dengan X = A*.B

Contoh 11: Tentukan RE dari FA berikut

b
A0 A1

Kita dapatkan persamaan :


A0 = aA0 + bA1 …..(1)
A1 =  …………….(2)
Persamaan (2) disubstitusikan ke persamaan (1) sehingga :
A0 = aA0 + b.
A0 = aA0 + b ………(3)
Menurut lemma Arden, persamaan (3) ekivalen dengan :
A0 = a*.b
RE yang mendefinisikan bahasa L, didapatkan dari A0. Jadi RE : a*b

EKIVALENSI DUA DFA


Jika M = (Q,,s,F,) adalah DFA yang menerima bahasa L dan M’=(Q’,’,s’,F’,’) adalah DFA
yang menerima bahasa L’, maka M dan M’ dikatakan ekivalen jika M dan M’ menerima
bahasa yang sama (L = L’). Kita dapat menentukan apakah dua DFA M dan M’ ekivalen
dengan menggunakan algoritma Moore sebagai berikut, misalkan  = {a,b}:
(1) Setiap state dari M dan M’ diberi label/nama yang semuanya berbeda (tidak boleh
ada duplikat label)
(2) Buat tabel perbandingan yang terdiri dari N(3 karena jumlah symbol ada 2) kolom.
Elemen dari tabel berbentuk pasangan (q,q’) dimana qQ dan q’Q’. Sebagai inisial,
pasangan (s,s’) ditempatkan di kolom pertama baris pertama.
(3) Tempatkan di kolom pertama, baris pertama pasangan (s,s’). Dan di kolom kedua
diisi dengan pasangan ((s,a),’(s’,a)) dan di kolom ketiga diisi dengan pasangan
((s,b), ’(s’,b))
(4) Dari hasil langkah (3), jika elemen di kolom kedua dan kolom ketiga belum pernah
muncul di kolom pertama, maka kita tempatkan di kolom pertama baris berikutnya.
(5) Jika dalam proses muncul pasangan (q,q’) dimana q  F dan q’  F’ atau sebaliknya
q  F dan q’F’ maka proses berhenti dan disimpulkan bahwa M dan M’ tidak
ekivalen.
(6) Proses berhenti dengan kesimpulan bahwa M ekivalen dengan M’ jika sudah tidak
ada lagi pasangan baru yang ditempatkan di kolom pertama.

Contoh 12: Tentukan apakah dua DFA berikut ekivalen


a
b

1 a 4 5

b
b b
b a
a
a
2 3 b 7 6 b

a a

Tabel perbandingan :
a b
(1,4) (1,4) (2,5)
(2,5) (3,6) (1,4)
(3,6) (2,7) (3,6)
(2,7) (3,6) (1,4)

Maka kedua DFA diatas ekivalen

MINIMIZE DFA
Misalkan M = (Q,,s,F,) adalah sebuah DFA dengan n buah state, maka terdapat DFA lain
M’= (Q’,’,s’,F’,’) yang mempunyai < n buah state, yang menerima bahasa yang sama
dengan M. Untuk mendapatkan M’ yang jumlah statenya lebih minimum digunakan algoritma
sebagai berikut :
(1) Buat sebuah partisi  yang mula-mula berisi dua kelas/grup. Kelas pertama berisi
state akhir dan kelas kedua beranggotakan state-state yang bukan state akhir.
(2) Untuk setiap grup dalam  dipecah (split) menjadi subgrup-subgrup dimana state s
dan t akan terletak dalam grup yang sama jika dan hanya jika dari state s dan t
dengan input a akan menuju ke state yang terletak di grup yang sama
(3) Proses berhenti jika sudah tidak ada lagi grup yang dapat dipecah.
Contoh 13 : Minimalkan jumlah state dari DFA berikut :
a

a
A B

b a
b
a

C D
b
b a
b
E
BAB III
Tata Bahasa (Grammar)
 Definisi
Grammar terdiri dari 4 hal yaitu:
1. Suatu alfabet  yang disebut terminal, T, yaitu sesuatu yang tidak dapat
diganti atau diuraikan menjadi simbol lain
2. Himpunan simbol Nonterminal, N, yaitu simbol yang dapat diganti
menjadi simbol-simbol lain.
3. Sebuah start simbol, S, merupakan elemen dari N.
4. Himpunan aturan penggantian yang disebut produksi, P, yang berbentuk
  , dimana , : sembarang barisan simbol terminal dan atau
nonterminal.

 Macam-macam Grammar
1. Context Sensitive Grammar (Grammar tipe-1) yang mendefinisikan bahasa
tipe-1 (bahasa context sensitive)
2. Context Free Grammar(Grammar tipe-2) yang mendefinisikan bahasa
tipe-2 (bahasa context free)
3. Regular grammar (grammar tipe-3) yang mendefinisikan bahasa tipe-3
(bahasa regular)

 Derivasi
Adalah proses pen urunan untuk mendapatkan suatu untai dengan
menggunakan aturan produksi suatu grammar yang dimulai dari sebuah start
simbol.
Contoh 1:
Diketahui grammar G = ( N = {S,E,A}; T = {a,b}; S = S; P ={ S  aE; E 
A; AaA; Ab})
Lakukan proses derivasi untuk mendapatkan untai aab
S  aE  aA  aaA  aab

GRAMMAR REGULAR
 Definisi
Adl sebuah grammar G = (N,T,S,P) dengan produksi P berbentuk :

NONTERMINAL  SEMIWORD
Atau
NONTERMINAL  WORD
Semiword : barisan terminal yang diakhiri dengan satu nonterminal
(terminal)(terminal)…(terminal)(Nonterminal)
Word : barisan terminal

(terminal)(terminal)…(terminal)

Contoh 2 :
Grammar regular :
A  aaB | bbC
B  bB | b
C  cc | c

 Ekivalensi FA dengan grammar regular


Misalkan M adalah sebuah FA dimana M = (,Q,s,F,) menerima bahasa L.
Maka terdapat sebuah grammar G =(N,T,S,P) yang menerima bahasa L yang
sama dimana :
1. N = Q
2. T = 
3. S = s
4. P :
Transisi () Produksi (P)
 (X,a) = Y X  aY
F = {X} X

Contoh 3:
Diketahui FA = ({S,M,F},{a,b},S,{S,M},}
b
a
a,b
b a
S M F
Tentukan grammar yang ekivalen dengan FA diatas

Grammar : G = ({S,M,F},{a,b},S,P}
P : S  aS | bM | 
M  aF | bS | 
F  aF | bF

 Ekivalensi Grammar regular dengan FA


Jika G = (N,T,S,P) adalah sebuah grammar regular, maka terdapat NFA
M=(,Q,s,F,) yang menerima bahasa yang sama dengan bahasa yang
didefinisikan oleh G. Dimana :
1.  = T
2. Qmula-mula = N  {f}; f sebuah state baru.
3. s = S
4. F = {f}
5.  :
 jika produksi berbentuk : A  a1a2…anB (semiword) maka
ditambahkan (n-1) state baru : q1,q2,…,qn-1 dengan transisi :
(A,a1)=q1; (q1,a2)=q2; … (qn-1,an) = B

a1 a2 … an-1 an
A q1 qn-1 B

 jika produksi berbentuk : A  a1a2…an (word) maka ditambahkan


(n-1) state baru : q1,q2,…,qn-1 dengan transisi : (A,a1)=q1;
(q1,a2)=q2; … (qn-1,an) = f

a1 a2 … an-1 an

A q1 qn-1 f

Contoh 4 :
Tentukan FA dari grammar G = ({S,A,B},{a,b},S,P) dengan P :
S  aB | bA | 
A  abaS
B  babS

FA yang ekivalen terdiri dari :


 = T = {a,b};
Qmula-mula = N  {f} = {S,A,B,f}
s=S
F = {f}
:
Produksi transisi
S  aB (S,a) = B
S  bA (S,b) = A
S (S,) = f
A  abaS (A,a) = q1
(q1,b) = q2
(q2,a) = S
B  babS (B,b) = q3
(q3,a) = q4
(q4,b) = S

CONTEKS FREE GRAMMAR

 Definisi
CFG adalah grammar dengan produksi berbentuk :    dimana  : sebuah
Nonterminal dan  : string terminal dan atau nonterminal.
Contoh 5 :
G = ({S,A,B},{a,b},S,P) dengan P :
S  ABA
A  aA | 
B  bBb | 
Catatan :
1. Sebuah grammar regular pasti merupakan CFG
2. Sebuah CFG belum tentu grammar regular
 Macam Derivasi
Derivasi dibedakan menjadi 2 yaitu :
1. Leftmost Derivation : penggantian Nonterminalnya dimulai dari
Nonterminal yang paling kiri terlebih dahulu.
2. Rightmost Derivation : penggantian nonterminal dimulai dari nonterminal
paling kanan.
Contoh 6 :
Dari grammar pada contoh 5 diatas lakukan leftmost derivation dan rightmost
derivation untuk string : abbaa
 Leftmost derivation
S  ABA  aABA  aBA  abBbA  abbA  abbaA  abbaaA
 abbaa
 Rightmost derivation
S  ABA  ABaA  ABaaA  ABaa  AbBbaa  Abbaa 
aAbbaa  abbaa

 Parse Tree (Pohon Penguraian)


Adalah sebuah pohon (tree) yang menggambarkan suatu proses derivasi
dimana :
 Root : start simbol suatu grammar
 Branch node : simbol-simbol nonterminal yang diperoleh pada saat
proses derivasi
 Leaf (daun) : simbol terminal
Contoh 7 :
Buatlah parse tree untuk string pada contoh 6 :
S

A B A

a A b B b a A

  a A


 Grammar Ambiguous
Adalah grammar dengan lebih dari satu parse tree untuk input yang sama.
Contoh 8 :
Tentukan parse tree dari grammar : S  SbS | ScS | a untuk input abaca.

Derivasi untuk input abaca :


S  SbS  abS  abScS  abacS  abaca
Atau
S  ScS  SbScS  abScS  abacS  abaca
Sehingga parse tree untuk input tersebut :
S

S b S

a S c S
a a

S c S

S b S a

a a
 Menentukan CFG dari RE

RE CFG
 S
a Sa
a+b Sa|b
ab S  ab
a* S  aS | 
r1 + r2 SX|Y
r1r2 S  XY
r1* S  XS | 

Contoh 9 :
Tentukan CFG dari RE :
1. RE : aa + bb
CFG : S  X | Y
X  aa
Y  bb
2. RE : (a + b)*
CFG : S  XS |  atau S  aS | bS | 
Xa|b
3. RE : a*bba*
CFG : S  XYX
X  aX | 
Y  bb

Chomsky Normal Form (CNF)

 Produksi hampa (-production)


 Jika N sebuah Nonterminal maka produksi hampa (-production) adalah
produksi yang berbentuk : N  
 Definisi nonterminal nullable
Sebuah Nonterminal N disebut Nullable jika :
1. Berbentuk N  
2. Terdapat derivasi yang dimulai dari N dan mencapai suatu untai hampa
( N  …  )
 Replacement Rule (Aturan penggantian)
Jika G adalah sebuah grammar yang mengandung produksi- maka
terdapat grammar lain G’ yang tidak mengandung produksi- yang
menerima bahasa yang sama dengan G, yang dapat ditentukan dengan
aturan penggantian yaitu:
1. Hapus semua produksi-
2. Jika    produksi dimana  mengandung Nonterminal Nullable,
tambahkan produksi baru dengan menggantikan Nonterminal Nullable
di semua posisi
A  s1Ns2Ns3 dimana s1,s2,s3 : sembarang string
N : nonterminal nullable
Maka ditambahkan produksi :
A  s1s2Ns3 (N pertama diganti )
A  s1Ns2s3 (N kedua diganti 
A  s1s2s3 (N dikedua posisi diganti )
Contoh 9 :
Tentukan grammar yang tidak mengandung produksi- dari grammar berikut:
S  a | Xb | aYa
XY|
Yb|X
Jawab :
1. Menentukan nonterminal nullable
- X nonterminal nullable, karena ada produksi X  
- Y nonterminal nullable, karena ada derivasi: Y  X  
2. Menghapus produksi- sehingga grammar diatas menjadi :
S  a | Xb | aYa
XY
Y  X/b
3. Menambahkan produksi baru :
Produksi yang mengandung Produksi baru
nonterminal nullable
S  Xb Sb
S  aYa S  aa
XY -
YX -
Maka grammar tanpa produksi- adalah :
S  a | Xb | aYa | b | aa
XY
Y  X/b

 Produksi unit (Unit Production)


 Jika A dan B nonterminal, maka produksi unit adalah produksi yang
berbentuk : Satu Nonterminal  Satu Nonterminal (A  B)
 Jika G grammar yang mengandung produksi unit maka terdapat grammar
G’ yang tidak mengandung produksi unit dan menerima bahasa yang sama
dengan G yang dapat diperoleh dengan aturan eliminasi (Elimination Rule)
yaitu :
1. Jika A  B sebuah produksi unit dan terdapat produksi yang dimulai
dari B yaitu
B  s1 | s 2 | …
Maka pada grammar ditambahkan produksi :
A  s1 | s 2 | …
2. Jika A,B Nonterminal dan terdapat proses derivasi yang dimulai dari A
dan berakhir di B :
A  X1  X2  …  B
Dimana X1,X2 : Nonterminal dan terdapat produksi yang dimulai B :
B  s1 | s 2 | …
Maka ditambahkan produksi :
A  s1 | s 2 | …
3. Hapus semua produksi unit

Contoh 10 :
Tentukan grammar yang tidak mengandung produksi unit yang ekivalen
dengan grammar berikut :
S  A | bb
AB|b
BS|a
Jawab :
1. Menentukan produksi unit
Produksi unit Bukan produksi unit
SA S  bb
AB Ab
BS Ba
2. Menambahkan produksi baru
Produksi baru
SA Sb
SAB Sa
AB Aa
ABS A  bb
BS B  bb
BSA Bb

Jadi grammar yang tidak mengandung produksi unit :


S  bb | b | a
A  b | a | bb
B  a | bb | b

S  A | bb
AB|b
BS|a

 Jika G adalah sebuah CFG dapat dirubah menjadi CFG lain yang ekivalen dan
mempunyai produksi berbentuk :
Nonterminal  rangkaian Nonterminal
Atau
Nonterminal  satu terminal
Dengan cara :
 Mengganti setiap terminal dengan nonterminal baru.
Misalkan produksi berbentuk :
N  a1a2a3…
Dimana a1,a2,a3 adalah terminal, maka setiap terminal diganti dengan
nonterminal baru misal X1,X2,X3,
N  X1X2X3…
 Menambahkan produksi baru, dari tiap nonterminal baru ke terminal yang
digantikan :
X1  a1 ; X2  a2 ; X3  a3 …

Contoh 11 :
Rubah CFG berikut menjadi bentuk Nonterminal  rangkaian nonterminal ; atau
Nonterminal  satu terminal.
S  X | YaY | aSb | b
X  YY | b
Y  aY | aaX
Jawab :
Produksi yang dirubah Produksi pengganti Produksi baru
S  YaY S  YAY Aa
S  aSb S  ASB Aa;Bb
Y  aY Y  AY Aa
Y  aaX Y  AAX Aa

Jadi CFG baru yang didapat adalah sbb :


S  X | YAY | ASB | b
X  YY | b
Y  AY | AAX
Aa
Bb

 Jika G adalah sebuah CFG dapat dirubah menjadi CFG lain yang ekivalen dan
mempunyai produksi berbentuk :
Nonterminal  dua Nonterminal
Atau
Nonterminal  satu terminal
Dengan cara :
 Mengganti rangkaian Nonterminal pada posisi kedua dan seterusnya
dengan sebuah nonterminal baru.
Misal terdapat produksi : N  X1X2X3…; dimana X1,X2,X3 : Nonterminal
maka produksi tsb dirubah menjadi : N  X1R1
 Menambah produksi baru dari nonterminal baru ke rangkaian Nonterminal
yang digantikan, yaitu R1  X2X3

Contoh 12 :
Rubah CFG berikut menjadi bentuk Nonterminal  dua Nonterminal atau
Nonterminal  satu terminal
S  YAY | ASB | b
X  YY | b
Y  AY | AAX
Aa
Bb
Jawab :
Produksi yang diganti Produksi pengganti Produksi baru
S  YAY S  YR1 R1  AY
S  ASB S  AR2 R2  SB
Y  AAX Y  AR3 R3  AX

Jadi CFG baru yang diperoleh :


S  YR1 | AR2 | b
X  YY | b
Y  AY | AR3
R1  AY
R2  SB
R3  AX
A a
Bb

S  YAY | ASB | b
X  YY | b
Y  AY | AAX
Aa
Bb

 Definisi Chomsky Normal Form (CNF)


Adalah sebuah CFG yang mempunyai produksi berbentuk :
Satu Nonterminal  Dua Nonterminal
Atau
Satu Nonterminal  satu terminal

 Langkah – langkah merubah CFG menjadi CNF


1. Jika terdapat produksi-, hilangkan dengan replacement rule
2. Jika terdapat produksi unit, hilangkan dengan elimination rule
3. Rubah menjadi bentuk :
Satu Nonterminal  rangkaian Nonterminal ;atau
Satu Nonterminal  satu terminal
4. Rubah menjadi bentuk :
Satu Nonterminal  Dua Nonterminal ;atau
Satu Nonterminal  satu terminal
Contoh 13 :
Tentukan CNF dari CFG berikut :
S  AB
AB
B  aB | Bb | 
Langkah-langkahnya :
1. Menghapus produksi-
a. Nonterminal nullable adalah A dan B karena:
B
AB
b. Menghapus produksi- sehingga menjadi :
S  AB
AB
B  aB | Bb
c. Menambah produksi baru :
Produksi yang mengandung Produksi baru
nonterminal nullable
S  AB SB
SA
AB -
B  aB Ba
B  Bb Bb

Jadi CFG1 baru :


S  AB | B | A
AB
B  aB | Bb | a | b

2. Menghapus produksi unit dari CFG1


a. Menentukan produksi unit
Produksi Unit Bukan Produksi unit
SA S  AB
SB
AB -
B  aB | Bb | a | b
b. Menambah produksi baru :
Produksi baru
S  A  B atau S  aB | Bb | a | b
SB
AB A  aB | Bb | a | b

Jadi CFG2 baru :


S  AB | aB | Bb | a | b
A  aB | Bb | a | b
B  aB | Bb | a | b

3. Merubah CFG2 menjadi bentuk rangkaian Nonterminal


Produksi yang diganti Produksi pengganti Produksi baru
S  aB S  XB Xa
S  Bb S  BY Yb
A  aB A  XB Xa
A  Bb A  BY Yb
B  aB B  XB Xa
B  Bb B  BY Yb
Jadi CNF yang didapat :
S  AB | XB | BY | a | b
A  XB | BY | a | b
B  XB | BY | a | b X->a Y->b
BAB IV
Pushdown Automata (PDA)
 Definisi
Pushdown automata terdiri dari 8 hal yaitu:
1. Himpunan alfabet sebagai input ()
2. Sebuah input tape, yang mula-mula berisi string input diikuti beberapa
simbol blank ( atau ).
3. Himpunan karakter stack ()
4. Sebuah pushdown stack, yang mula-mula kosong.
5. Sebuah state awal (START)
START

6. Beberapa state pemberhentian yaitu ACCEPT dan REJECT

ACCEPT REJECT

7. Beberapa state PUSH

PUSH X

8. Beberapa state percabangan :


a. State READ : membaca input tape berikutnya.

READ

b. State POP : membaca karakter di top of stack.

POP

Contoh 14 :
START

A a READ1 
PUSH a

b
b
b, a  a,b
POP1 READ2 POP2 REJECT
a 

REJECT
REJECT ACCEPT
Analisa bagaimana PDA diatas menerima input : aaabbb

START

PUSH a READ 
a
b
b 
READ READ POP2 a,b
REJECT
a, 
a 
REJECT b
a REJECT ACCEPT
POP
b, 

State Input Tape Stack


START aaabbb… …
READ1 aaabbb… …
PUSH a aabbb… a…
READ1 aabbb… a…
PUSH a abbb… aa…
READ1 abbb… aa…
PUSH a bbb… aaa…
READ1 bbb… aaa…
POP1 bb… aa…
READ2 bb… aa…
POP1 b… a…
READ2 b… a…
POP1 … …
READ2 … …
POP2 … …
ACCEPT … …

 Ekivalensi PDA dan FA


Jika diketahui sebuah FA M = (,Q,s,F,) maka terdapat sebuah PDA tanpa
stack yang menerima bahasa yang sama
Contoh 15:
Tentukan PDA dari FA berikut :
b B
a a

A
A
A b
PDA :

START

b
b a 
Read A Read B ACCEPT

 a

REJECT

 Nondeterministik PDA
Adalah suatu PDA dimana pada state percabangan terdapat transisi keluar
dengan input yang sama ke state yang berbeda.

 Ekivalensi CFG dan PDA


Jika L adalah bahasa yang didefinisikan oleh sebuah CFG, maka ada PDA
yang menerima bahasa L tersebut. Adapun cara merubah CFG menjadi PDA
sebagai berikut :
1. CFG dirubah ke bentuk CNF
2. Jika X1 sebuah start simbol maka :

START

PUSH X1 POP

3. Jika Xi, Xj, Xk adalah nonterminal dan terdapat produksi : Xi  XjXk

POP

Xi

PUSH Xk

PUSH Xj

4. Jika Xi : Nonterminal ; b : terminal dan terdapat produksi : Xi  b

b READ

Xi

POP
Contoh 16 :
Tentukan PDA dari CFG berikut :
S  AB
A  BB | a
B  AB | a | b

a a b

PDA :
START READ READ READ

A B B

PUSH S POP  READ


 ACCEPT

S A B
PUSH B PUSH B PUSH B

PUSH A PUSH B PUSH A

CONTEXT FREE LANGUAGE


 Jika L1 dan L2 merupakan CFL, maka L1+L2 juga merupakan CFL
 Dengan grammar
Jika G1 = (N1,T1,S1,P1) adalah CFG yang mendefinisikan L1 dan
G2=(N2,T2,S2,P2) adalah CFG yang mendefinisikan L2, maka L1+L2
didefinisikan oleh CFG :
S  S1 | S2
G1 (dengan subscript 1 di setiap nonterminal)
G2 (dengan subscript 2 di setiap nonterminal)

Contoh 17 :
- L1 dinyatakan dengan CFG1 sbb :
S1  aS1a | bS1b | a | b | 
- L2 dinyatakan dengan CFG2 sbb :
S2  aS2b | 
- maka L1+L2 dinyatakan dengan CFG sbb :
S  S1 | S2
S1  aS1a | bS1b | a | b | 
S2  aS2b | 
 Dengan PDA :
Jika PDA1 menerima bahasa L1 dan PDA2 menerima bahasa L2 maka
terdapat sebuah PDA yang menerima bahasa L1+L2 dimana :
PDA1 dimulai dengan : PDA2 dimulai dengan:
START START
Maka PDA untuk L1+L2 dimulai dengan :

START

Contoh 18:
- PDA1 :
START

a a a
PUSH a READ POP ACCEPT

b
PUSH b

- PDA2 :

READ a
START ACCEPT

- PDA untuk L1+L2 :


a
START READ

PUSH a a READ a POP a ACCEPT

b
PUSH b

 Jika L1 dan L2 adalah CFL maka L1L2 juga sebuah CFL


 Dengan grammar
Jika G1 sebuah CFG yang mendefinisikan L1 dan G2 adalah CFG yang
mendefinisikan bahasa L2, maka terdapat CFG yang mendefinisikan
bahasa L1L2 dimana :
S  S1S2
G1 (dengan subscript 1 di setiap nonterminal)
G2 (dengan subscript 2 di setiap nonterminal)

Contoh 19:
- L1 dinyatakan dengan CFG1 sbb :
S  aSa | bSb | a | b | 
- L2 dinyatakan dengan CFG2 sbb :
S  aSb | 
- maka L1L2 dinyatakan dengan CFG sbb :
S  S1S2
S1  aS1a | bS1b | a | b | 
S2  aS2b | 

 Dengan PDA
Jika PDA1 menerima bahasa L1 dan PDA2 menerima bahasa L2 maka
terdapat sebuah PDA yang menerima bahasa L1L2 dimana :
PDA1 diakhiri dengan : PDA2 diakhiri dengan:

START
ACCEPT

Maka PDA yang menerima bahasa L1L2 :

Contoh 20 :
- PDA1 :
a
READ
START ACCEPT
- PDA2 :
START

a a a
PUSH a READ POP ACCEPT

b
PUSH b
- PDA untuk L1L2 :

READ
START

PUSH a a READ a POP a ACCEPT

b
PUSH b

 Jika L1 adalah CFL maka L1* juga sebuah CFL


 Dengan grammar
Jika G1 sebuah CFG yang mendefinisikan L1, maka terdapat CFG yang
mendefinisikan bahasa L1* dimana :
S  S1S
G1 (dengan subscript 1 di setiap nonterminal)

Contoh 21:
- L1 dinyatakan dengan CFG1 sbb :
S  aSa | bSb | a | b | 
- maka L1* dinyatakan dengan CFG sbb :
S  S1S
S1  aS1a | bS1b | a | b | 
BAB V
Turing Machines

 Definisi
Sebuah mesin turing (turing machine), TM, terdiri dari 6 hal yaitu :
1. Sebuah himpunan alfabet  sebagai input
2. Sebuah tape yang terdiri dari tak hingga sel, dimana masing-masing sel
dapat berisi sebuah karakter atau blank simbol (). Mula-mula tape berisi
string input, mulai dari sel paling kiri dan diakhiri simbol blank
3. Sebuah tape head , yang tugasnya :
- membaca isi sel tape
- mengganti isinya dengan karakter lain
- bergerak ke sel berikut, satu langkah, ke kiri atau ke kanan.
Mula-mula tape head terletak di sel paling kiri.
4. Sebuah himpunan karakter, , yang dapat dicetak tape head ke dalam tape
5. Sebuah himpunan terhingga dari state, termasuk didalamnya sebuah state
awal (START), dan beberapa state akhir / pemberhentian (HALT)
6. Sebuah program, yang merupakan himpunan aturan yang berisi informasi:
- apa yang harus dibaca tape head
- karakter apa yang akan dicetak ke tape
- tape head harus bergerak kemana
berbentuk :
(x1, x2, arah)
Keterangan :
x1 : elemen dari  atau  atau berupa  (blank), yang menunjukkan
karakter apa yang dibaca tape head.
x2 : elemen dari  atau berupa  (blank), yang menunjukkan karakter apa
yang dicetak ke tape menggantikan x1.
Arah : R (Right) : bergerak ke kanan satu langkah
L (Left) : bergerak ke kiri satu langkah

Contoh 22 :
Mesin Turing yang menerima bahasa (a+b)b(a+b)*

(a,a,R) (b,b,R) (,,R)


START 1 2 3 HALT 4

(b,b,R) (a,a,R)
(b,b,R)
Cara kerja mesin turing diatas menerima kata aba
State Tape
START 1 aba
2 aba
3 aba
3 aba
HALT 4 aba

Anda mungkin juga menyukai