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.
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.
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.
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 n0.
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, …}
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
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 xB}
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}
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.
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
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)
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?
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} {}
b
q0 q1
b b
q2
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}
A B
[q0] [q1] []
[q1] [] [q0,q2]
[q2] [q0] []
[] [] []
[q0,q2] [q0,q1] []
[q0,q1] [q1] [q0,q2]
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 )
Jika NFA M=(Q,,s,F,) dengan transisi-, maka terdapat NFA lain M’=(Q’,’,s’,F’,’) tanpa
transisi- yang mendefinisikan bahasa yang sama dimana :
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)
b
A0 A1
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)
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; AaA; Ab})
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
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
a1 a2 … an-1 an
A q1 qn-1 B
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
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
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.
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 Sa
a+b Sa|b
ab S ab
a* S aS |
r1 + r2 SX|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 |
Xa|b
3. RE : a*bba*
CFG : S XYX
X aX |
Y bb
Contoh 10 :
Tentukan grammar yang tidak mengandung produksi unit yang ekivalen
dengan grammar berikut :
S A | bb
AB|b
BS|a
Jawab :
1. Menentukan produksi unit
Produksi unit Bukan produksi unit
SA S bb
AB Ab
BS Ba
2. Menambahkan produksi baru
Produksi baru
SA Sb
SAB Sa
AB Aa
ABS A bb
BS B bb
BSA Bb
S A | bb
AB|b
BS|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 Aa
S aSb S ASB Aa;Bb
Y aY Y AY Aa
Y aaX Y AAX Aa
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
Aa
Bb
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
S YAY | ASB | b
X YY | b
Y AY | AAX
Aa
Bb
ACCEPT REJECT
PUSH X
READ
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,
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.
START
PUSH X1 POP
POP
Xi
PUSH Xk
PUSH Xj
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
S A B
PUSH B PUSH B PUSH B
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
b
PUSH b
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
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
b
PUSH b
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)*
(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