Teknik Kompilasi dan Automata

28
J A W A B A N. 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. 1. Jelaskan apa yang dimaksud dengan Otomata dan Finite Automata (otomata berhingga)! o) Automata Automata adalah mesin abstrak yang dapat mengenali (recognize), menerima (accept), atau membangkitkan (generate) sebuah kalimat dalam bahasa tertentu. Beberapa Pengertian Dasar Simbol adalah sebuah entitas abstrak (seperti halnya pengertian titik dalam geometri). Sebuah huruf atau sebuah angka adalah contoh simbol. String adalah deretan terbatas (finite) simbol-simbol. Sebagai contoh, jika a, b, dan c adalah tiga buah simbol maka abcb adalah sebuah string yang dibangun dari ketiga simbol tersebut. Jika w adalah sebuah string maka panjang string dinyatakan sebagai w dan didefinisikan sebagai cacahan (banyaknya) simbol yang menyusun string tersebut. Sebagai contoh, jika w = abcb maka w = 4. String hampa adalah sebuah string dengan nol buah simbol. String hampa dinyatakan dengan simbol ε (atau

description

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.

Transcript of Teknik Kompilasi dan Automata

AUTOMATA

J A W A B A N.

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.

1. Jelaskan apa yang dimaksud dengan Otomata dan Finite Automata (otomata berhingga)!

o) AutomataAutomata adalah mesin abstrak yang dapat mengenali (recognize), menerima (accept), atau membangkitkan (generate) sebuah kalimat dalam bahasa tertentu.

Beberapa Pengertian Dasar

(Simbol adalah sebuah entitas abstrak (seperti halnya pengertian titik dalam geometri). Sebuah huruf atau sebuah angka adalah contoh simbol.

(String adalah deretan terbatas (finite) simbol-simbol. Sebagai contoh, jika a, b, dan c adalah tiga buah simbol maka abcb adalah sebuah string yang dibangun dari ketiga simbol tersebut.

Jika w adalah sebuah string maka panjang string dinyatakan sebagai w dan didefinisikan sebagai cacahan (banyaknya) simbol yang menyusun string tersebut.Sebagai contoh, jika w = abcb maka w= 4.

String hampa adalah sebuah string dengan nol buah simbol. String hampa dinyatakan dengan simbol (atau ^) sehingga = 0. String hampa dapat dipandang sebagai simbol hampa karena keduanya tersusun dari nol buah simbol. Alfabet adalah himpunan hingga (finite set) simbol-simbol.Operasi Dasar String

Diberikan dua string : x = abc, dan y = 123

Prefik string w adalah string yang dihasilkan dari string w dengan menghilangkan nol atau lebih simbol-simbol paling belakang dari string w tersebut.

Contoh : abc, ab, a, dan adalah semua Prefix(x)

ProperPrefix string w adalah string yang dihasilkan dari string w dengan menghilangkan satu atau lebih simbol-simbol paling belakang dari string w tersebut.

Contoh : ab, a, dan adalah semua ProperPrefix(x)

Postfix (atau Sufix) string w adalah string yang dihasilkan dari string w dengan menghilangkan nol atau lebih simbol-simbol paling depan dari string w tersebut.

Contoh : abc, bc, c, dan adalah semua Postfix(x)

ProperPostfix (atau PoperSufix) string w adalah string yang dihasilkan dari string w dengan menghilangkan satu atau lebih simbol-simbol paling depan dari string w tersebut.

Contoh : bc, c, dan adalah semua ProperPostfix(x)

Head string w adalah simbol paling depan dari string w.

Contoh : a adalah Head(x)

Tail string w adalah string yang dihasilkan dari string w dengan menghilangkan simbol paling depan dari string w tersebut.

Contoh : bc adalah Tail(x)

Substring string w adalah string yang dihasilkan dari string w dengan menghilangkan nol atau lebih simbol-simbol paling depan dan/atau simbol-simbol paling belakang dari string w tersebut.

Contoh : abc, ab, bc, a, b, c, dan adalah semua Substring(x)

ProperSubstring string w adalah string yang dihasilkan dari string w dengan menghilangkan satu atau lebih simbol-simbol paling depan dan/atau simbolsimbol paling belakang dari string w tersebut.

Contoh : ab, bc, a, b, c, dan adalah semua Substring(x)

Subsequence string w adalah string yang dihasilkan dari string w dengan menghilangkan nol atau lebih simbol-simbol dari string w tersebut.

Contoh : abc, ab, bc, ac, a, b, c, dan adalah semua Subsequence(x)

ProperSubsequence string w adalah string yang dihasilkan dari string w dengan menghilangkan satu atau lebih simbol-simbol dari string w tersebut.

Contoh : ab, bc, ac, a, b, c, dan adalah semua Subsequence(x)

Concatenation adalah penyambungan dua buah string. Operator concatenation adalah concate atau tanpa lambang apapun.

Contoh : concate(xy) = xy = abc123

Alternation adalah pilihan satu di antara dua buah string. Operator alternation adalah alternate atau .

Contoh : alternate(xy) = xy = abc atau 123

Kleene Closure : x* = xxxxxx = xx 2 x 3

Positive Closure : x + = xxxxxx = xx 2 x 3

Beberapa Sifat Operasi

Tidak selalu berlaku : x = Prefix(x)Postfix(x)

Selalu berlaku : x = Head(x)Tail(x)

Tidak selalu berlaku : Prefix(x) = Postfix(x) atau Prefix(x) Postfix(x)

Selalu berlaku : ProperPrefix(x) ProperPostfix(x)

Selalu berlaku : Head(x) Tail(x)

Setiap Prefix(x), ProperPrefix(x), Postfix(x), ProperPostfix(x), Head(x), dan Tail(x) adalah Substring(x), tetapi tidak sebaliknya

Setiap Substring(x) adalah Subsequence(x), tetapi tidak sebaliknya

Dua sifat aljabar concatenation :

Operasi concatenation bersifat asosiatif : x(yz) = (xy)z

Elemen identitas operasi concatenation adalah : x = x = x

Tiga sifat aljabar alternation :

Operasi alternation bersifat komutatif : xy = yx

Elemen identitas operasi alternation adalah dirinya sendiri : xx = x

Sifat distributif concatenation terhadap alternation : x (yz) = xyxz

Beberapa kesamaan :

Kesamaan ke-1 : (x*)* = (x*)

Kesamaan ke-2 : x + = x + = x*

Kesamaan ke-3 : (xy)* = xyxxyyxyyx = semua string yang merupakan concatenation dari nol atau lebih x, y, atau keduanya.

o) Automata Hingga (Finite Automata)Automata Hingga (Finite Automata) merupakan mesin abstrak yang terdiri dari Head Pembaca dan Kotak Kontrol Stata Hingga. Mesin ini membaca sebuah pita (tape), satu persatu karakter, dari kiri ke kanan. Perubahan stata terjadi pada mesin jika suatu karakter pita dibaca.

PITA

a a a b b b ^

Read Head

Pada saat Automata Hingga mulai membaca Pita, ia harus selalu mulai dengan berada pada suatu stata, yang ditunjuk sebagai stata awal. Sebuah Automata Hingga Deterministik (AHD) terdiri atas 5 tupel (K, VT, f, q0, Z).

Dimana :

1. K adalah Himpunan Hingga berisi Stata.

2. VT adalah Himpunan Hingga berisi Simbol Input.

3. Sebuah fungsi f : K x VT, dimana K merupakan fungsi next-state.

4. q0 adalah Stata Awal anggota K.5. Z adalah subset dari K yang berisi Stata Akhir atau Stata Penerima.Contoh :

VT = (a,b) adalah himpunan simbol input.

K = (q0, q1, q2) adalah himpunan stata.

Z = (q0, q1) adalah himpunan stata penerima.

q0 adalah stata awal.

Fungsi Next-State f : K x VT K didefinisikan sebagai tabel berikut :

fa b

q0

q1

q2q0 q1

q0 q2

q2 q2

Automata Hingga Deterministik dapat dinyatakan dalam diagram berupa Graph Berarah. Pada graph berarah tersebut terdapat sebuah simpul sebagai stata awal q0. Lingkaran berlapis dua digunakan untuk menyatakan stata penerima.

Bila f(q0, a) = q0, maka terdapat busur dari q0 ke q0 dengan label a.

Graph berarah dari Automata Hingga Deterministik di atas terlihat pada gambar berikut:

Automata M dikatakan dapat menerima atau mengenal string w jika Stata Akhir merupakan Stata Penerima. Himpunan semua string yang dapat diterima oleh Automata M dinotasikan dengan L (M).

Sebagai contoh, Automata M di atas dapat menerima untai :

aabababa

aaa

baab

serta menolak untai berikut :

bbaaaa

aababb

babbaa

Ada tiga tipe Automata Hingga, yaitu :

1. Automata Hingga Deterministik (AHD)

2. Automata Hingga Non-Deterministik (AHN)

3. Automata Hingga Non-Deterministik dengan transisi hampa

AUTOMATA HINGGA DETERMINISTIK (AHD)

AHD dapat dilengkapi dengan fungsi Next-State berikut :

a) M(q, ^) = q untuk semua q anggota K

b) M(M(q, t), T), untuk semua t anggota VT dan T anggota VT

Dari definisi pertama, terlihat bahwa sebuah AHD tidak bisa mengubah stata tanpa membaca sebuah karakter masukan. Definisi kedua adalah sebuah definisi yang bersifat rekursif, yang menunjukkan di stata mana AHD berada pada saat di mulai di stata q dengan mendapat input berupa string w = tT.

Sebuah string w adalah diterima oleh sebuah F = (K, VT, M, S, Z) jika M(S, W) = p, sedemikian hingga w adalah anggota VT dan p anggota Z.

Atau dengan kata lain, string w diterima oleh AHD jika setelah membaca habis semua karakter dari untai, AHD berada pada sebuah Stata Akhir. Himpunan semua untai w anggota VT yang diterima oleh AHD F dinotasikan sebagai L(F).

Gambar berikut merupakan digraph Transisi dari sebuah AHD.

AHD pada contoh ini merupakan sebuah AHD yang menerima untai yang terdiri dari simbol 0 dan 1. AHD tersebut dapat dinyatakan sebagai berikut :

F = ( {S, A, B, C}, {0, 1}, M, S, {S} ) dimana fungsi next state M adalah :

M(S, 0) = B

M(S, 1) = A

M(A, 0) = C

M(A, 1) = S

M(B, 0) = S

M(B, 1) = C

M(C, 0) = A

M(C, 1) = B

Fungsi stata berikut dari AHD kadang-kadang lebih mudah disajikan dalam bentuk tabel. Untuk contoh di atas tabel yang terbentuk adalah :

STATAINPUT

0 1

S

A

B

C B A

C S

S C

A B

Contoh dari string yang diterima AHD di atas adalah 110101 dan contoh string yang tidak dapat diterima adalah 11101. Bagan operasi AHD pada kedua untai di atas adalah sebagai berikut :

Penelusuran string 110101 :

Penelusuran string 11101 :

M(S, 110101) = M(A, 10101)

M(S, 11101) = M(A, 1101)

= M(S, 0101)

= M(S, 101)

= M(B, 101)

= M(A, 01)

= M(C, 01)

= M(C, 1)

= M(A, 1)

= M(B, ^)

= M(S, ^)

= B (ditolak)

= S (diterima)

AUTOMATA HINGGA NON-DETERMINISTIK (AHN)

AHN pada hakekatnya adalah sama seperti AHD, hanya saja pada AHN dimungkinkan adanya transisi dari suatu stata ke lebih dari satu stata, untuk sebuah karakter input yang sama. Sebagai contoh, AHN berikut menerima untai dalam bentuk ambn, dimana m dan n bilangan bulat positif.

Sebuah untai akan diterima AHN, jika sedikitnya satu urutan transisi state berakhir pada Stata Akhir. Untuk AHN di atas terlihat bahwa jika AHN menerima sebuah string, maka penelusuran akan tetap di Stata A sampai dengan karakter a yang terakhir selesai dibaca. AHN kemudian berubah mencapai stata B dan tetap pada stata B tersebut sampai karakter b yang terakhir selesai dibaca. Selanjutnya terjadi transisi ke stata C.

AHN terdiri dari 5 tupel (K, VT, M, S, Z) dengan :

1. K adalah Himpunan Hingga Stata.

2. VT adalah Himpunan Simbol Input.

3. M adalah fungsi (pemetaan) next-state.

4. S adalah Stata Awal (anggota K).5. Z adalah himpunan Stata Akhir (subset dari K).Di sini fungsi next state dapat ditulis :

M(q, t) = {p1, p2, .., pn}

Yang berarti bahwa pada saat pembacaan simbol input dapat terjadi transisi dari stata q menjadi stata p1 atau p2 atau pn. Sebagai contoh, sebuah AHN menerima untai yang huruf awal dan huruf akhirnya sama. AHN tersebut dideskripsikan sebagai berikut :

F = ( {q0, q1, q2, q3, q4}, {a, b, c}, M, q0, {q0} )

Digraph AHN adalah sebagai berikut :

Tabel transisi yang ekuivalen dengan graph di atas adalah sebagai berikut :

STATAINPUT

a b c

q0

q1

q2

q3

q4{q0, q1} {q0, q2} {q0, q3}

{q1,q4} {q1} {q1}

{q2} {q2,q4} {q2}

{q3} {q3} {q3,q4}

^ ^ ^

Sebagai contoh, dengan input aca, nilai dari M(q0, aca) dapat ditentukan sebagai berikut :

Karena diketahui

M(q0, a) = {q0, q1}

Maka

M(q0, aca) = M(q0, ca) M(q1, ca)

Dan karena

M(q0, c) = {q0, q3}

M(q1, c) = {q1}

Maka

M(q0, ca) = M(q0, a) M(q3, a)

= {q1,q2} M(q3)

= {q0, q1, q3}

M(q1, ca) = M(q1, a) = {q1, q4}

Sehingga

M(q0, aca) = {q0,q1,q3} {q1,q4}

= {q0,q1,q3,q4}

dan karena stata yang tercapai memuat q4 yaitu stata akhir, maka untai aca diterima. Jadi, perbedaan antara AHD dan AHN adalah bahwa AHD banyaknya lintasan penelusuran untuk suatu untai adalah unik. Sementara pada AHN banyaknya lintasan mungkin lebih dari satu. Pada kenyataannya AHN dapat dikonversi menjadi AHD yang ekuivalen.Berikut ini sebuah contoh AHN F(K, V T , M, S, Z), dimana :

K = {q 0 , q1, q 2 ,q 3 , q 4 } M diberikan dalam tabel berikut :

VT = {a, b,c} a b c

S = q 0 q0 {q 0 , q1} {q 0 , q 2 } {q 0 , q 3 }

Z = {q 4 } q1 {q1, q 4} {q1} {q1}

q 2 {q2} {q 2 , q 4} {q2 }

q 3 {q3} {q 3} {q3 , q 4 }

q 4

Ilustrasi graf untuk AHN F adalah sebagai berikut :

a, b, c a, b, c

a

q0 q1

c b a

b

q3 q2 q4

a, b, c a, b, c

c

Contoh kalimat yang diterima AHN di atas : aa, bb, cc, aaa, abb, bcc, cbb

Contoh kalimat yang tidak diterima AHN di atas : a, b, c, ab, ba, ac, bc

Fungsi transisi M sebuah AHN dapat diperluas sebagai berikut :

1. M(q, ) = {q} untuk setiap q K

2. M(q, t T) = M(p i , T) dimana t V T , T adalah V T *, dan M(q, t) = {p i }

3. M({q1, q 2 , , q n }, x) = M(q i ,x), untuk x V T *

Sebuah kalimat di terima AHN jika :

salah satu tracing-nya berakhir di stata penerima, atau

himpunan stata setelah membaca string tersebut mengandung stata penerima

Contoh :

Telusurilah, apakah kalimat-kalimat berikut diterima AHN : ab, abc, aabc, aabb

Jawab :

i) M(q0 ,ab) M(q 0 ,b) M(q1 ,b) {q 0 , q 2 } {q1} = {q 0 , q1, q 2 }

Himpunan stata tidak mengandung stata penerima kalimat ab tidak diterima

ii) M(q0 ,abc) M(q 0 ,bc) M(q1 ,bc) {M(q 0 ,c) M(q 2 ,c)} M(q1, c)

{{ q 0 , q 3}{ q 2 }}{ q1} = {q 0 , q1, q 2 ,q 3 }

Himpunan stata tidak mengandung stata penerima kalimat abc tidak diterima

iii) M(q0 ,aabc) M(q 0 ,abc) M(q1 ,abc) {M(q 0 ,bc) M(q1 ,bc)} M(q1 ,bc)

{{M(q 0 , c) M(q 2 ,c)} M(q1, c)} M(q1, c)

{{{ q 0 , q 3} { q 2 }} {q1}} {q1} = {q 0 , q1, q 2 ,q 3 }

Himpunan stata tidak mengandung stata penerima kalimat aabc tidak diterima

iv) M(q0 ,aabb) M(q 0 ,abb) M(q1 ,abb) {M(q 0 ,bb) M(q1 ,bb)} M(q1 ,bb)

{{M(q 0 , b) M(q 2 ,b)} M(q1, b)} M(q1, b)

{{{ q 0 , q 2 } { q 2 , q 4 }} {q1}} {q1} = {q 0 , q1, q 2 , q 4 }

Himpunan stata tidak mengandung stata penerima kalimat aabb diterima

Equivalensi 2 AHD

Dua buah AHD dikatakan equivalen jika keduanya dapat menerima bahasa yang

sama. Misalkan kedua AHD tersebut adalah A dan A. Misalkan pula bahasa yang

diterima adalah bahasa L yang dibangun oleh alfabet V T = {a1, a2, a3, ..., an}.

Berikut ini algoritma untuk menguji equivalensi dua buah AHD.

1. Berikan nama kepada semua stata masing-masing AHD dengan nama berbeda. Misalkan nama-nama tersebut adalah : S, A1, A2, ... untuk AHD A, dan : S, A1, A2, ... untuk AHD A.

2. Buat tabel (n+1) kolom, yaitu kolom-kolom : (v, v), (v a 1 , v a 1 ), ..., (v a n , v a n ), yaitu pasangan terurut (stata AHD A, stata AHD A).

3. Isikan (S, S) pada baris pertama kolom (v, v), dimana S dan S masing-masing adalah stata awal masing-masing AHD.

4. Jika terdapat edge dari S ke A1 dengan label a1 dan jika terdapat edge dari S ke A1 juga dengan label a1, isikan pasangan terurut (A1, A1) sebagai pada baris pertama kolom (v a 1 , v a 1 ). Lakukan hal yang sama untuk kolom-kolom berikutnya.

5. Perhatikan nilai-nilai pasangan terurut pada baris pertama. Jika terdapat nilai pasangan terurut pada kolom (v a 1 , v a 1 ) s/d (v a n , v a n ) yang tidak sama dengan nilai pasangan terurut (v, v), tempatkan nilai tersebut pada kolom (v, v) baris-baris berikutnya. Lakukan hal yang sama seperti yang dilakukan pada langkah (4). Lanjutkan dengan langkah (5).

6. Jika selama proses di atas dihasilkan sebuah nilai pada kolom (v, v), dengan komponen v merupakan stata penerima sedangkan komponen v bukan, atau sebaliknya, maka kedua AHD tersebut tidak ekuivalen. Proses dihentikan.

7. Jika kondisi (6) tidak dipenuhi dan jika tidak ada lagi pasangan terurut baru yang harus ditempatkan pada kolom (v, v) maka proses dihentikan dan kedua AHDtersebut ekuivalen.

Contoh :

Periksalah ekuivalensi kedua AHD berikut :

a

b

1 a 4 5

a

b a b a

a a

2 3 b 7 6 b

a a

AHD A AHD A

Jawab :

Dengan menggunakan menggunakan algoritma di atas maka dapat dibentuk tabel

berikut :

(v, v) (v a , v a ) (v b , v b ) Keterangan :

(1, 4) (1, 4) (2, 5) (2, 5) adalah pasangan terurut baru

(2,5) (3, 6) (1, 4) (3, 6) adalah pasangan terurut baru

(3, 6) (2, 7) (3, 6) (2, 7) adalah pasangan terurut baru

(2, 7) (3, 6) (1, 4) tidak adal lagi pasangan terurut baru2. Jelaskan apa yang di maksud dengan Regular Expresion (RE) !

Regular Ekspresi (RE) Bahasa regular dapat dinyatakan sebagai ekspresi regular dengan menggunakan 3 operator : concate, alternate, dan closure.

Dua buah ekspresi regular adalah ekuivalen jika keduanya menyatakan bahasa yang sama

Contoh :

L1 = {a n ba m n 1, m 1} er 1 = a + b a +

L 2 = {a n ba m n 0, m 0} er 2 = a* b a*

Perhatikan bahwa kita tidak bisa membuat ekspresi regular dari bahasa

L3 = {a n ba n n 1} atau L 4 = {a n ba n n 0}, karena keduanya tidak dihasilkan dari grammar regular.

Kesamaan 2 ekspresi regular :

(a b)* a = a (b a)*

Bukti :

(a b)* a = ((ab)(abab)) a

= ( a(aba)(ababa))

= (a(aba)(ababa))

= a ((ba)(baba)) = a (b a)*

3. Diketahui Grammar, dengan himpuinan simbol terminal {a, b} dan produksi sebagai berikut (huruf kecil menyatakan simbol terminal)

S a

S Sa

S b

S bS

Jelaskan bagaimana bentuk umum dari untai yang dibentuk oleh Grammar tersebut!Jawab :Grammar diatas terdiri dari produksi berbentuk :

( dengan (. Dimana ialah string dan ialah panjang dari string demikian juga ialah string dan ialah panjang dari string . String disini adalah merupakan deretan simbol baik terminal maupun non terminal.

4. Buatlah pohon derivasi untuk ekspresi bentuk berikut :

A. ( x y * 2 + z ) div ( x div z )

B. a * ( 2 * c b ) * 2

C. x * ( y 5 ) * ( y div 4 + x )

D. ( x * 2 * y ) ( ( z + 32 ) div y )

POHON DERIVASI

Pohon derivasi pada ekspresi aritmatika

Ada beberapa ketentuan yang sering dipakai dalam suatu penyusunan pohon derivasi untuk ekspresi aritmatika

Rumus :

( ) operand

+ -

* div

A. ( x y * 2 + z ) div ( x div z )

KETERANGAN :

( ) operand

+ -

* div

DERIVASI

div( )

( ) div ( )`

( ) div ( )

( ) div( x div z )

( )div( x div z )

( - + z ) div( x div z )

( - * 2 + z ) div( x div z )

(x - y * 2 + z ) div( x div z )

B. a * ( 2 * c b ) * 2

*2

* ( )

a

-

b

* c

2

C. x * ( y 5 ) * ( y div 4 + x )

* ( )

* ( )

X

- +

5 div 4 x

y

y

D. ( x * 2 * y ) ( ( z + 32 ) div y )

5. Diketahui bentuk AHD seperti terlihat pada gambar. Tuliskan tupel dari AHD

Buatlah tabel dari AHD

Telusuri untai berikut apakah diterima atau ditolak :

aabbaba

baaaba

abbbaab

Jawab :K = {q0, q1, q2}

VT = {a, b}

S = q0

Z = {q0, q2}

TabelaB

q0q0q1

q1q2q1

q2q2q1

Pertanyaan String Dibawah yang diterima atau ditolak :aabbaba

abbbaab

M(q0, aabbaba) = M(q0,abbaba) M(q0, abbbaab)= M(q0,bbbaab)

= M(q0, bbaba)

= M(q1,bbaab )

= M(q1, baba)

= M(q1,baab)

= M(q1, aba)

= M(q1,aab)

= M(q2, ba)

= M(q2,ab)

= M(q1, a)

= M(q2,b)

= M(q2, ^)

= M(q1,^)

= q2 ( Diterima )

= q1 ( Ditolak ) baaabaM(q0, baaaba) = M(q1,aaaba)= M(q2, aaba)= M(q2,aba)

= M(q2, ba)= M(q1, a)= M(q2, ^)= q2 (Diterima )