Buku Automata - Bertha

79
Bertha MW Hutajulu Buku Teori Bahasa dan Otomata PENDAHULUAN 1.1 KEDUDUKAN TEORI BAHASA DAN OTOMATA ILMU KOMPUTER Ilmu komputer memiliki dua komponen utama: pertama. model dan gagasan mendasar mengenai komputasi, kedua, teknik rekayasa untuk perancangan sistem komputasi, meliputi perangkat dan perangkat lunak, khususnya penerapan rancangan dari teori. Teori Bahasa dan Otomata merupakan bagian pertama. Secara teoritis ilmu komputer diawali dari sejumlah disiplin ilmu, antara lain ahli biologi mempelajari neural network, insinyur elektro mengembangkan switching sebagai tool untuk mendesain hardware, matematikawan mendasarkan logika, dan ahli bahasa menyelidiki tata bahasa natural language. Finite state automata dan ekspresi regular awalnya dikembangkan berdasar pemikiran neural network dan switching circuit. Finite state automata merupakan tool yang sangat berguna dalam perancangan lexical analyzer, yaitu bagian dari kompilator yang mengelompokkan karakter-karakter ke dalam token, yang berupa unit terkecil nama, variabel, dan keyword. Dalam sistem penulisan kompilator secara otomatis akan mentransformasikan ekspresi regular ke dalam state automata untuk dipakai sebagai penganalisis leksikal. Finite state automata dan ekspresi regular dipakai pula dalam text editor. patern matching, sejumlah pemrosesan teks, dan program file-searching, dan sebagai konsep matematis untuk aplikasi di disiplin lain seperti logika. Suatu bahasa pemrograman harus didefinisikan secara tepat. Spesifikasi dari sebuah bahasa pemrograman meliputi hal-hal berikut. Himpunan simbol-simbol (alphabet) yang bisa dipakai untuk membentuk program yang benar. Himpunan program yang benar secara sintaksis. 'Makna' dari program tersebut.

description

Buku TBO-Bertha MW Hutajulu

Transcript of Buku Automata - Bertha

Page 1: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

PENDAHULUAN

1.1 KEDUDUKAN TEORI BAHASA DAN OTOMATA ILMU

KOMPUTER

Ilmu komputer memiliki dua komponen utama: pertama. model dan

gagasan mendasar mengenai komputasi, kedua, teknik rekayasa untuk

perancangan sistem komputasi, meliputi perangkat dan perangkat lunak,

khususnya penerapan rancangan dari teori. Teori Bahasa dan Otomata merupakan

bagian pertama. Secara teoritis ilmu komputer diawali dari sejumlah disiplin

ilmu, antara lain ahli biologi mempelajari neural network, insinyur elektro

mengembangkan switching sebagai tool untuk mendesain hardware,

matematikawan mendasarkan logika, dan ahli bahasa menyelidiki tata bahasa

natural language.

Finite state automata dan ekspresi regular awalnya dikembangkan

berdasar pemikiran neural network dan switching circuit. Finite state automata

merupakan tool yang sangat berguna dalam perancangan lexical analyzer, yaitu

bagian dari kompilator yang mengelompokkan karakter-karakter ke dalam token,

yang berupa unit terkecil nama, variabel, dan keyword. Dalam sistem penulisan

kompilator secara otomatis akan mentransformasikan ekspresi regular ke dalam

state automata untuk dipakai sebagai penganalisis leksikal. Finite state automata

dan ekspresi regular dipakai pula dalam text editor. patern matching, sejumlah

pemrosesan teks, dan program file-searching, dan sebagai konsep matematis

untuk aplikasi di disiplin lain seperti logika.

Suatu bahasa pemrograman harus didefinisikan secara tepat. Spesifikasi

dari sebuah bahasa pemrograman meliputi hal-hal berikut.

• Himpunan simbol-simbol (alphabet) yang bisa dipakai untuk membentuk

program yang benar.

• Himpunan program yang benar secara sintaksis.

• 'Makna' dari program tersebut.

Page 2: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Tata bahasa bebas konteks dan push down automata telah banyak

memberikan bantuan pada spesifikasi dari bahasa pemrograman dan perancangan

parser, bagian penting dari kompilator. Spesifikasi formal dari bahasa

pemrograman telah mengganti deskripsi yang tidak lengkap maupun ambigu dari

bahasa. Pemahaman tentang kemampuan push down automata telah

menyederhanakan parsing. Pada mulanya pengembangan parser untuk

kompilator-kompilator terdahulu merupakan masalah yang sulit, dengan hasil

yang tidak efisien. Dengan pengetahuan tata bahasa bebas konteks perancangan

parser bukan lagi suatu masalah.

Suatu teori hanya menarik bila itu membantu dalam mencari solusi

terbaik. Tanpa penerapan, timbul pertanyaan "mengapa mempelajari teori?" Teori

memberikan konsep dan prinsip yang menolong untuk memahami 'perilaku' dari

suatu disiplin ilmu. Bidang ilmu komputer meliputi topik yang luas, dari

perancangan mesin sampai pemrograman. Di samping perbedaan yang ada,

terdapat prinsip-prinsip yang umum dipakai. Untuk mempelajari prinsip-prinsip

dasar inilah kita mengkonstruksi model abstrak dari komputer dan komputasi.

Model ini memiliki fungsi-fungsi yang penting dan umum pada perangkat keras

maupun perangkat lunak. Meskipun model tersebut terlalu sederhana untuk

diterapkan langsung pada dunia nyata, keuntungan yang diperoleh dari

mempelajarinya adalah memberikan landasan, yang mana suatu pengembangan

didasarkan. Pendekatan dengan model ini tidak hanya dilakukan pada ilmu

komputer, tetapi juga pada ilmu sains lainnya. Beberapa gagasan yang diutarakan

memiliki penerapan yang penting. Misalnya, pada perancangan digital, bahasa

pemrograman, dan kompilator.

1.2 KONSEP BAHASA D AIN OTOMATA

Sebuah simbol adalah suatu entitas abstrak yang tidak kita definisikan

secara formal, seperti halnya kita tidak mendefinisikan 'titik' dan 'garis' pada

geometri. Huruf dan digit adalah contoh dari simbol yang sering dipakai. Sebuah

Page 3: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

string (kata/untai) adalah suatu deretan berhingga dari simbol-simbol. Sebagai

contoh, 'a', 'b', 'c' adalah simbol- simbol, dan 'abcb' adalah suatu string. Pada buku

ini kita akan menggunakan istilah string dan untai bergantian. Panjang string di

sini adalah jumlah simbol yang membentuk string tersebut. Contoh:

'abad' panjangnya 4

'asdfgh' panjangnya 6

Sebuah string kosong, biasanya dinyatakan dengan e, didefinisikan

panjangnya = 0, atau | ε | = 0 (pada beberapa buku, simbol untuk ε dinyatakan

dengan λ). Suatu alphabet adalah himpunan berhingga dari simbol-simbol.

Pada umumnya kita mengenal bahasa alami, seperti bahasa Inggris atau

Indonesia. Bahasa didefinisikan di dalam kamus adalah suatu sistem yang

meliputi pengekspresian gagasan, fakta, konsep, termasuk sekumpulan simbol-

simbol dan aturan untuk melakukan manipulasinya. Sebuah bahasa adalah

himpunan string-string dari simbol- simbol untuk suatu alphabet. Karena sebuah

bahasa adalah kumpulan dari string-string, kita bisa mempunyai sebuah bahasa

yang tidak terdiri dari string-string, yaitu bahasa kosong, yang dinotasikan seperti

kita menuliskan himpunan kosong, Ø. Bahasa kosong berbeda dengan bahasa

yang terdiri dari string kosong {ε}. Bahasa bisa juga disebut sebagai rangkaian

simbol-simbol yang mempunyai makna.

Untuk memodelkan hardware dari komputer diperkenalkan otomata.

Otomaia adalah suatu bentuk yang memiliki fungsi-fungsi dari komputer digital.

Menerima input, menghasilkan output, bisa memiliki penyimpan sementara, dan

mampu membuat keputusan dalam mentransformasikan input ke ouput. Sebuah

bahasa formal adalah suatu abstraksi terdiri dari himpunan simbol-simbol dan

aturan-aturan yang mana simbol-simbol tersebut bisa dikombinasikan ke dalam

entitas yang disebut kalimat. Meskipun bahasa formal yang dipelajari di sini lebih

sederhana daripada bahasa pemrograman, mereka mempunyai banyak hal yang

penting. Kita bisa mempelajari banyak tentang bahasa pemrograman dari bahasa

formal.

Page 4: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Otomata merupakan suatu sistem yang terdiri atas sejumlah berhingga

state, di mana state menyatakan informasi mengenai input yang lalu, dan dapat

pula dianggap sebagai memori mesin. Input pada mesin otomata dianggap sebagai

bahasa yang harus dikenali oleh mesin. Selanjutnya, mesin otomata membuat

keputusan yang mengindikasikan apakah input itu diterima atau tidak. Sehingga

mesin otomata dapat dipakai untuk menghasilkan bahasa yang aturannya

ditentukan oleh aturan bahasa itu.

Misalnya, kita memiliki sebuah mesin sederhana yang menerima input

kata dalam bahasa Indonesia, hal ini bisa dilihat pada gambar 1.1.

Gambar 1.1 Mesin otomata sederhana

Pada gambar 1.1 tersebut, bila mesin mendapat string input berikut:

• ada: diterima,

• adu: diterima,

• add: ditolak.

Sebuah string input diterima bila mencapai state akhir/final state, yang di

situ digambarkan dengan lingkaran ganda. Mesin ini memiliki 6 state,

{q0,q1,q2,q3,q4,q5}, yang mana adalah himpunan state yang ada pada mesin itu.

State awal dari mesin adalah q0.(q3,q4} adalah himpunan state akhir/final.

Sedangkan himpunan simbol input adalah {a,d,u}. Penjelasan lebih lanjut secara

formal dari suatu mesin otomata bisa dilihat pada bab dua.

Page 5: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

1.3 HIRARK1 CHOMSKY

Tata bahasa (grammar) bisa didefinisikan secara formal sebagai kumpulan

dari himpunan-himpunan variabel, simbol-simbol terminal, simbol awal, yang

dibatasi oleh aturan-aturan produksi. Pada tahun 1959 seorang ahli bernama

Noam Chomsky melakukan penggolongan tingkatan bahasa menjadi empat, yang

disebut dengan Himrki Chomsky. Penggolongan tersebut bisa dilihat pada tabel

berikut.

Bahasa Mesin Otomata Batasan Aturan Produksi

Regular / Tipe 3 Finite State Automata

(FSA) meliputi

Deterministic Finite

Automata (DFA)& Non-

deterministic Finite

Automata (NFA)

α adalah sebuah simbol

variabel

β maksimal memiliki

sebuah smbol varibel yang

bila ada terletak di

posisi paling kanan

Bebas Konteks / Context

Free! Tipe 2

Push Down Automata

(PDA)

α adalah sebuah simbol

variabel

Context Sensitive/ Tipe 1 Linier Bounded Automata │α│≤│β│

Unrestricted / Phase

Structure / Natural

Language / Tipe 0

Mesin Turing tidak ada batasan

Kita bisa melihat penggolongan di atas berdasarkan pembatasan yang

dilakukan pada aturan produksinya. Aturan produksi merupa-kari pusat dari tata

bahasa, yang menspesifikasikan bagaimana =jxatu tata bahasa melakukan

transformasi suatu string ke bentuk lainnya, dan melalui aturan produksi tersebut

didefinisikan suatu bahasa yang berhubungan dengan tata bahasa tersebut. Di sini

semua aturan produksi dinyatakan dalam bentuk "α→β" {bisa dibaca: α

menghasilkan β, atau dibaca α menurunkan β), di mana a menyatakan simbol-

simbol pada ruas kiri aturan produksi (sebelah kiri tanda '→') dan β menyatakan

simbol-simbol pada ruas kanan aturan produksi (sebelah kanan tanda '→', dan

bisa disebut juga sebagai hasil produksi). Simbol-simbol tersebut bisa berupa

simbol terminal atau simbol nonterminal/variable. Simbol variabel/non terminal

adalah simbol yang masih bisa diturunkan, sedang simbol terminal sudah tidak

bisa diturunkan lagi. Simbol terminal biasanya (dan pada buku ini) dinyatakan

Page 6: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

dengan huruf kecil, misal 'a','b',c'. Simbol nonterminal/variabel biasanya

dinyatakan huruf besar, misal 'A','B', 'C'.

Dengan menerapkan aturan produksi, suatu tata bahasa bisa menghasilkan

sejumlah string. Himpunan semua string tersebut adalah bahasa yang

didefinisikan oleh tata bahasa tersebut.

Contoh aturan produksi:

T →a

bisa dibaca: "T menghasilkan a"

E T │ T+E

bisa dibaca: "E menghasilkan T atau E menghasilkan

T+E"

Simbol '|' menyatakan 'atau', biasa digunakan untuk mempersingkat

penulisan aturaii produksi yang mempunyai ruas kiri yang sama. Pada contoh di

atas:

E → T | T+E

merupakan pemendekan dari aturan produksi:

E →T

E →T+E

Bahasa manusia/bahasa alami termasuk ke dalam grammar (tata bahasa)

Tipe O/Unrestricted, di mana tidak ada batasan pada aturan produksinya.

Misalkan saja:

Abc → De

Pada bahasa Context Sensitive, panjang string pada ruas kiri < panjang ruas

kanan (| a | < | P |). Contoh aturan produksi yang context sensitive:

Ab → DeF

CD → eF

Perhatikan aturan produksi seperti dibawah ini.

S →e

Page 7: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Kita ketahui | S | =1, sedang | ε | = 0, menurut aturan context sensitive aturan

produksi itu tidak diperkenankan, tetapi di sini kita buat suatu perkecualian

sehingga S e dianggap memenuhi context sensitive grammar.

Batasan context sensitive biasanya turut digunakan dalam proses analisis

semantik pada tahapan kompilasi.

Pada bahasa bebas konteks, batasannya bertambah lagi dengan ruas kiri

haruslah tepat satu simbol variabel. Misalnya:

B →CDeFg

D →BcDe

Bahasa bebas konteks menjadi dasar dalam pembentukan suatu

parser/proses analisis sintaksis. Bagian sintaks dalam suatu kompilator

kebanyakan didefinisikan dalam tata bahasa bebas konteks (context free

grammar), yang dideskripsikan secara formal dengan notasi BNF (Backus Naur

Form atau Backus Normal Form).

Pada bahasa regular, batasannya bertambah dengan ruas ka-nan maksimal

memiliki sebuah simbol variabel yang terletak di pa-ling kanan. Artinya bisa

memiliki simbol terminal saja dalam jumlah tidak dibatasi, tetapi bila terdapat

simbol variabel, maka simbol variabel tersebut hanya beijumlah 1 (satu) dan

terletak di posisi paling kanan.

Misalnya:

A→ e

A →efg

A →efgH

C → D

Page 8: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

2.1 PENERAPAN FINITE STATE AUTOMATA

Finiite State Automata!state otomata berhingga, selanjutnya kita sebut

sebagai FSA, bukanlah mesin fisik tetapi suatu model matematika dari suatu

sistem yang menerima input dan output diskrit. Finite state automata merupakan

mesin otomata dari bahasa regular. Suatu finite state automata memiliki state

yang banyaknya berhingga, dan dapat berpindah-pindah dari suatu state ke state

lain. Perubahan state ini dinyatakan oleh fungsi transisi. Jenis otomata ini tidak

memiliki tempat penyimpanan sehingga kemampuan 'mengingatnya' terbatas.

Mekanisme kontrol pada suatu elevator/lift adalah contoh yang bagus untuk suatu

otomata. Mekanisme tersebut tidak 'mengingat' semua permintaan sebelumnya

tetapi hanya posisi lift saat itu pada suatu lantai, pergerakan (ke atas atau bawah),

dan sekumpulan permintaan yang belum terpenuhi. Dalam ilmu komputer kita

akan menemui banyak contoh dari sistem finite state automata. Teori mengenai

finite state automata adalah suatu tool yang berguna untuk merancang sistem

tersebut. Mekanisme kerja suatu finite state automata bisa diaplikasikan pada

analisis leksikal, text-editor, protokol komunikasi jaringan (misal protokol

kermit), dan pencek pariti.

SebuahTkasus yang populer berikut, akan kita jadikan contoh suatu finite

state automata. Seorang petani dengan seekor kambing, serigala, dan seikat

rumput berada pada suatu sisi sungai (kita sebut saja sisi kiri). Terdapat sebuah

perahu yang kecil dan hanya bisa memuat petani itu dan salah satu dari kambing,

serigala, atau rumput. Petani itu akan menyeberangkan ketiganya ke sisi kanan

sungai. Tetapi jika petani meninggalkan serigala dan kambing pada suatu sisi

sungai, maka kambing akan dimakan serigala. Begitu juga jika kambing di-

tinggalkan dengan rumput, maka rumput akan dimakan kambing. Mungkinkah

untuk menemukan cara melintasi sungai tanpa menyebabkan kambing atau

rumput dimakan?. Masalah tersebut bisa dimodelkan dengan memperhatikan

mereka yang menempati setiap sisi sungai. Pada gambar 2.1, kombinasi pada

setiap sisi sungai untuk petani (P), kambing (K), serigala (S), dan rumput (R),

Page 9: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

terdapat 10 state dari 16 kombinasi state yang mungkin. Karena terdapat state

yang tidak boleh dimasuki, misalnya KR-PS (kambing dan rumput di kiri sungai-

petani dan serigala di kanan sungai), karena rumput akan dimakan kambing. Input

dari sistem adalah tindakan yang dilakukan oleh petani. Petani bisa menyeberang

sendirian (input p), dengan kambing (input k), dengan serigala (input s), atau

rumput (input r). State awal adalah PKSR-Ø (semua berada di sisi kiri sungai),

dan state akhir adalah Ø-PKSR (semua berada di sisi kanan sungi), yang

digambarkan dengan lingkaran ganda. Terlihat pada gambar 2.1 kita bisa

memperoleh dua solusi singkat dengan menelusuri lintasan dari state awal ke

state akhir.

Contoh penerapan lain adalah pada pencek pariti ganjil (odd parity).

Pengirim akan menambahkan bit paritas sehingga jumlah bit 1 adalah ganjil.

Misal, terdapat data:

0110

maka pengirim akan menambahkan bit 1 sehingga penerima akan memperoleh

01101

Jika data:

0111

maka pengirim akan menambahkan bit 0 sehingga penerima akan memperoleh

01110

Bila suatu saat penerima memperoleh jumlah bit 1 yang genap, misalnya:

10010

maka penerima akan memutuskan bahwa telah terjadi kesalahan/error dalam

pengiriman.

Kita bisa membuat sebuah otomata yang akan memeriksa apakah scan:

barisan input memiliki bit 1 dalam jumlah ganjil atau genap. Mesin ini akan

mempunyai dua state, kita sebut saja sebagai state EVEN (genap) Eir state ODD

(ganjil). Kita bisa lihat pada gambar 2.2.

Page 10: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Gambar 2.1 Diagram transisi untuk persoalan petani, kambing, serigala, dan

rumput

Gambar 2.2 Mesin otomata untuk pencek pariti ganjil

Pada finite state automata, arti dari bentuk-bentuk seperti yang ada pada

gambar 2.2 adalah sebagai berikut.

• Lingkaran menyatakan stafe/kedudukan.

• Label pada lingkaran adalah nama state tersebut.

• Busur menyatakan transisi yaitu perpindahan kedudukan/stote.

• Label pada busur adalah simbol input.

• Lingkaran didahului sebuah busur tanpa label menyatakan state awal.

• Lingkaran ganda menyatakan state akhir/final.

Page 11: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Gambar seperti gambar 2.2 biasanya disebut sebagai graph transisi,

diagram transisi atau diagram keadaan (state). Pada gambar 2.2 tersebut kita lihat

state awal adalah EVEN. Karena mesin ini merupakan pencek pariti ganjil, maka

himpunan state akhir v ing menyatakan input diterima adalah {ODD}. Simbol

input yang ada (0.1) Kita lihat bila mesin mendapat input:

1101

urutan state yang terjadi

EVEN 1 ODD 1 EVEN 0 EVEN 1 ODD

berakhir dengan state ODD sehingga "1101" diterima oleh mesin Bila mesin

mendapat input:

101

urutan state yang terjadi

EVEN 1 ODD 0 ODD 1 EVEN

berakhir dengan state EVEN maka "101" ditolak oleh mesin.

Meskipun pada kedua contoh di atas state akhirnya hanya satu, umumnya

bisa terdapat sejumlah state akhir. Istilah state akhir state) tidak berarti komputasi

(di sini berupa perpindahan/tran- mm. berhenti (halt) begitu state akhir tercapai.

State akhir hanya melasakan kedudukan-kedudukan (state) tertentu sebagai

kedudukan- kedudukan yang diterima (accepting state).

Secara formal finite state automata dinyatakan oleh 5 tupel atau M=(Q, Σ,

δ, S, F), di mana:

Q = himpunan stote/kedudukan

Σ = himpunan simbol m/juf/masukan/abjad

δ = fungsi transisi

S = state awal/kedudukan awal (initial state), S Q

F = himpunan state akhir, F Q

Catatan:

Perhatikan: F adalah himpunan state akhir, jadi jumlah state akhir pada

Kiatu finite state automata bisa lebih dari satu.

Page 12: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Maka, kita bisa nyatakan untuk contoh pada gambar 2.1:

Q = {PKSR-Ø, SR-PK, PSR-K, R-PSK, S-PKR, PKR-S, PSK-R,

K-PSR, PK-SR, Ø-PKSR}

Σ = {p, k, s, r}

S = PKSR-Ø

F = {Ø-PKSR}

Sedang untuk contoh pada gambar 2.2:

Q = {ODD, EVEN)

Z = {0, 1}

S = EVEN

F = {ODD}

Finite state automata berdasar pada pendefinisian kemampuan berubah

state-state-nya bisa dikelompokkan ke dalam deterministik maupun non-

deterministik, yang selanjutnya akan kita bahas di sini.

2.2 DETERMINISTIC FINITE AUTOMATA

Pada Otomata Berhingga Deterministik/Defermmisfic Finite Automata,

selanjutnya kita sebut sebagai DFA, dari suatu state ada tepat satu state

berikutnya untuk setiap simbol masukan yang diterima.

Sebagai contoh, kita memiliki sebuah otomata seperti pada gambar 2.3.

Gambar 2.3 Mesin DFA

Page 13: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Konfigurasi Deterministic Finite Automata di atas secara formal

dinyatakan sebagai berikut.

Q = {qo, q1. q2}

Σ = {a,b}

S = qo

F = {q2}

Fungsi transisi yang ada sebagai berikut.

d(q0,a) = qo

d(q0,b) = qi

d(q1,a) = q1

d(q1,b) = q2

d(q2,a) = ql

d(q2,b) = q2

Biasanya fungsi-fungsi transisi ini kita sajikan dalam sebuah tabel transisi.

Tabel transisi tersebut menunjukkan state-state berikutnya untuk kombinasi state-

state dan input. Tabel transisi dari fungsi transisi di atas sebagai berikut.

δ a b

qo qo q1

q1 q1 q2

q2 q1 q2

Perhatikan pada tabel transisi Deterministic Finite Automata di atas,

tampak bahwa kita mempunyai sebuah state berikutnya yang unik untuk setiap

pasangan state-input. Jadi untuk sebuah state dan input yang berlaku, kita bisa

menentukan tepat satu state berikutnya. Kita bisa menganggap tabel transisi

tersebut menyatakan aksi suatu mesin. Pada Deterministic Finite Automata,

d merupakan sebuah fungsi yang harus terdefinisi untuk semua pasangan state-

input yang ada di dalam Q X Σ. Dengan demikian apa pun state saat itu (current

state) atau input-nya, selalu terdapat satu dan hanya satu state berikutnya.

Page 14: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

State berikutnya itu sepenuhnya ditentukan oleh informasi yang ada di dalam

pasangan state-input.

Suatu string x dinyatakan diterima bila δ(S.x) berada pada state akhir.

Biasanya secara formal dikatakan bila M adalah sebuah finite state automata,

M=(Q, Σ, δ, S, F), menerima bahasa yang disebut L(M), yang merupakan

himpunan {x\ δ(S,x) di dalam F). (L: bisa dianggap kependekan dari 'language')

Jika pada contoh gambar 2.3 kita input-kan string 'abb' pada mesin

tersebut, maka:

δ(q0,abb) = δ(q0, bb) = δ(q1,b) = q2

Karena q2 termasuk state akhir, maka 'abb' berada dalam L(M)

Jika pada contoh gambar 2.3 kita input-kan string 'baba' pada mesin

tersebut, maka:

δ(00,baba) = δ(q1, aba) = δ(q1,ba) = δ(q2,a) = q1

Karena q, tidak termasuk state akhir, maka 'baba' tidak berada dalam

L(M).

Contoh lain bisa dilihat pada gambar 2.4 sebagai berikut.

Gambar 2.4 contoh mesin DFA

Tabel transisi dari gambar 2.4 adalah sebagai berikut.

δ a b

qo q1 q1

q1 q1 qo

Page 15: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Jadi, dari suatu gambar/diagram transisi dapat kita buat tabel transisinya.

Sebaliknya, kita dapat pula menggambar diagram tran sisi suatu Deterministic

Finite Automata bila kita ketahui tabel transisinya. Kita lihat contoh-contoh

selanjutnya. Terdapat tabe! transisi sebagai berikut.

δ a b

qo qo q1

q1 qo qo

dengan

S = qo

F = {ql}

Maka, diagram transisinya dapat dilihat pada gambar 2.5.

Gambar 2.5 Mesin DFA dari suatu tabel transisi

Contoh lain, terdapat tabel transisi sebagai berikut.

δ 0 1

qo q2 q1

q1 q1 qo

q2 qo q1

dengan

S = qo

F = { qo, q2}

Page 16: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Diagram transisinya dapat kita lihat pada gambar 2.6.

Gambar 2.6 Mesin D FA darijmatujahzl transisi

Perhatikan pada contoh-contoh Deterministic Finite Automata di atas, dari

setiap state selalu tepat ada satu state berikutnya untuk setiap simbol input yang

ada. Untuk lebih jelasnya dapat kita perhatikan contoh-contoh otomata berikut

yang bukan Deterministic Finite Automata.

Gambar 2.7 Finite Otomata non-DFA

Bisa kita lihat tabel transisinya dari gambar 2.7.

δ a b

qo q1 Ø

q1 q1 qo

Terlihat dari qo tidak ada state berikutnya bila menerima input 'b' atau

dinyatakan sebagai Ø. Kita lihat contoh berikutnya pada gambar 2.8.

Page 17: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Gambar 2.8 Finite Otomata non DFA

Terlihat dari q0 bila menerima input 'a', maka akan berpindah ke state atau

q2, padahal Deterministic Finite Automata mensyaratkan tepat ada satu saja state

berikutnya (deterministik) untuk setiap simbol input. Bisa dilihat tabel transisi

untuk gambar 2.8.

δ a b

qo {q1, q2) qo

q1 q1 qo

q2 q2 q1

Untuk bentuk pada gambar 2.7 dan 2.8 merupakan mesin Non-

deterministic Finite Automata (NFA), yang akan kita pelajari pada bagian

selanjutnya.

2.3 NON-DETERMINISTIC FINITE AUTOMATA

Pada Non-deterministic Finite Automata (NFA) dari suatu state bisa

terdapat 0, 1, atau lebih busur keluar (transisi) berlabel simbol input yang sama.

Non-deterministic Finite Automata didefinisikan pula dengan lima (5) tupel M =

{Q, Σ, δ, S, F), dengan arti yang serupa pada Deterministic Finite Automata. Di

sini perbedaan ada pada fung-si transisinya, di mana untuk setiap pasangan state-

input, kita bisa memiliki O (nol) atau lebih pilihan untuk state berikutnya. Bisa

kita lihat contoh pada gambar 2.9

Page 18: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Gambar 2.9 Mesin otomata NFA

Kita lihat gambar 2.9, dari state terdapat dua busur keluar yang berlabel

input 'a'. Dari state q0 bila mendapat input 'a' bisa berpindah ke state q0 atau qJf

yang secara formal dinyatakan:

δ(q0,a) = {qo,q1}

maka otomata ini disebut non-deterministik (tidak pasti arahnya). Bisa kita lihat

tabel transisinya seperti dibawah ini.

5 a b

qo {qo,q1} {qi}

qi {q1} {qi}

Catatan:

Perbatikan cara penulisan state hasil transisi pada tabel transisi untuk Non-

deterministic Finite Automata digunakan kurung kurawal'{' dan '}', karena hasil

transisinya merupakan suatu himpunan state.

Suatu string diterima oleh Non-deterministic Finite Automata bila terdapat

suatu urutan transisi sehubungan dengan input string tersebut dari state awal

menuju state akhir. Misalkan saja L(M) adalah bahasa yang diterima oleh Non-

deterministic Finite Automata pada gambar 2.9. Tentukan apakah string 'ab'

termasuk dalam L(M). Untuk Non-deterministic Finite Automata kita harus

mencoba semua kemungkinan yang ada sampai terdapat satu yang mencapai state

akhir. Dalam contoh di atas, urutan transisi yang mencapai state akhir:

δ(q0,ab) = 5(q1,b) = q1

Page 19: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Jadi untuk membuktikan suatu string diterima oleh Non-deter- ministic

Finite Automata tersebut kita buktikan suatu urutan transisi yang menuju state

akhir.

Contoh lainnya ditunjukkan pada gambar 2.10.

Gambar 2.10 Mesin otomata NFA

Terlihat tidak ada busur keluar dari state q1 untuk simbol input 'b', atau

secara formal dinyatakan:

δ(q1,b) = Ø

Kita bisa melihat tabel transisinya dibawah ini.

δ a b

qo {q1} {qo}

q1 {qo} 0

Seperti halnya pada Deterministic Finite Automata, pada Non-

deterministic Finite Automata kita bisa membuat diagram transisi dari tabel

transisinya dan sebaliknya.

2.4 EKUIVALENSI ANTAR DETERMINISTIC FINITE AUTOMATA

Misalkan terdapat dua buah Deterministic Finite Automata, M, dan M2,

yang masing-masing menerima bahasa L(Mj) dan L(M2). Jika L(Mt) = L(M2)

maka dua Deterministic Finite Automata tersebut dikatakan ekuivalen. Sebagai

contoh adalah Deterministic Finite Automata Mj dan M2 memiliki diagram

transisi seperti pada gambar 2.11 dan gambar 2.12.

Page 20: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Gambar 2.11 DFA M1

Gambar 2.12 DFA M2

Deterministic Finite Automata pada gambar 2.13 dan gambar 2.14 juga

ekuivalen. Deterministic Finite Automata M4 lebih sederhana dari Deterministic

Finite Automata M3 dalam arti mempunyai jumlah state yang lebih sedikit.

Gambar 2.13 D FA M,

Gambar 2.14 DFA M4

Page 21: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

EKUIVALENSI

NON-DETERMINISTIC FINITE AUTOMATA KE DETERMINISTIC

FINITE AUTOMATA

3.1 TAHAPAN PENGUBAHAN NON-DETERMINISTIC FINITE

AUTOMATA KE DETERMINISTIC FINITE AUTOMATA

Dari sebuah mesin Non-deterministic Finite Automata dapat dibuat mesin

Deterministic Finite Automata-nya yang ekuivalen (bersesuaian). Ekuivalen di

sini artinya mampu menerima bahasa yang sama. Lihat finite state automata pada

gambar 3.1 dan gambar 3.2. Gambar 3.1 adalah Deterministic Finite Automata,

sedangkan gambar 3.2 adalah Non-deterministic Finite Automata. Meskipun yang

satu deterministik dan lainnya non-deterministik, kedua-duanya menerima bahasa

yang sama, yang dalam ekspresi regular = 0 (01)* (mengenai ekspresi regular

dapat Anda lihat pada bab 5).

Gambar 3.1 Mesin DFA

Gambar 3.2 Mesin NFA

Gambar 3.3 Mesin otomata NFA

Page 22: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Sekarang kita lihat bagaimana membuat suatu Deterministic Finite

Automata yang ekuivalen dengan sebuah. Non-deterministic Finite Automata.

Misalkan kita ingin membuat mesin Deterministic Finite Automata dari mesin

Non-deterministic Finite Automata pada gambar 3.3. Pertama-pertama yang kita

lakukan adalah membuat tabel transisi NFA tersebut. Bila diketahui Z = {0,1},

maka tabel transisinya adalah sebagai berikut.

δ 0 1

qo {qo,q1} {q1}

qi Ø {qo,q1}

Dengan adanya tabel transisi tersebut akan mempermudah kita melakukan

langkah selanjutnya. Kita akan mulai dari state awal, kemudian mengikuti

transisinya untuk membentuk state-state baru, untuk setiap state yang terbentuk

diikuti lagi transisinya sampai ter’cover' semua. Untuk lebih jelasnya kita lihat

contoh pengejaan berikut. Kita mulai dengan state awal seperti terlihat pada

gambar 3.4.

Gambar 3.4 Mulai dengan state awal

Selanjutnya, kita telusuri state berikutnya yang diperoleh dengan

memanfaatkan tabel transisinya:

• state {qo} bila memperoleh input 0 menjadi state {q0,q1}.

• state {qo} bila memperoleh input 1 menjadi state {q1}.

Kita lihat hasilnya pada gambar 3.5.

Page 23: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Gambar 3.5 Hasil dari penelusuran {qo}

Catatan:

Perhatikan bahwa di sini pada gambar setiap state kita tuliskan sebagai himpunan

state.

Ekivalensi Non-deterministic Finite Automata ke Deterministic Finite Automata

Selanjutnya, kita telusuri state-state baru yang terbentuk:

• state {q1} bila memperoleh input 0 menjadi state Ø;

• state {q1} bila memperoleh input 1 menjadi state {qo,q1};

• state {q0,q1} bila memperoleh input 0 menjadi state {q0,q1}, ini diperoleh

dari δ(qo,0)={qo,q1) digabung dengan δ(q1,0)= 0, maka hasilnya

d({q0,q1},0)={q0,q1};

• state {qo,q1} bila memperoleh input 1 menjadi state (qo,q1,}, ini diperoleh

dari δ(q0,l)={q1) digabung dengan δ(q1,1)= {qo,q1}, maka hasilnya

δ({qo,q1},l)={qo,q1}.

Catatan:

Perhatikan bahwa state yang sama cukup ditulis sekali saja.

Page 24: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Kita bisa melihat hasilnya pada gambar 3.6.

Gambar 3.6 Hasil setelah penelusuran {q1} dan {qo, q1}

Catatan:

Perhatikan bahwa state q1 menerima input 0 menjadi state 0, di sini 0 kita

gambarkan juga sebagai sebuah state.

Selanjutnya, kita lihat semua state sudah kita telusuri/dirunut, tinggal

state 0. State 0 menerima input 0 atau 1 menjadi state 0, atau 8(0,0)= 0 dan

8(0,1)= 0. Hasilnya dapat kita lihat pada gambar 3.7.

Gambar 3.7 Hasil setelah semua ditelusuri

Kita ingat pada mesin Non-deterministic Finite Automata semula,

himpunan state akhir adalah {q1, maka pada Deterministic Finite Automata hasil

perubahan state-state akhir adalah semua state yang mengandung {q1}. Maka,

state akhirnya sekarang adalah state {q1} dan state {qo,q1}, atau secara formal:

F = {{q1}, {qo,q1}

Page 25: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Dengan demikian, Deterministic Finite Automata hasil ekuivalensi dengan

Non-deterministic Finite Automata pada gambar 3.3 dapat kita lihat pada gambar

3.8.

Gambar 3.8 Mesin DFA yang ekuivalen dengan NFA pada gambar 3.3

Kita bisa memeriksa apakah kedua otomata tersebut ekuivalen. Untuk

membuktikannya kita perlu memperlihatkan bahwa suatu bahasa yang diterima

oleh Non-deterministic Finite Automata juga diterima oleh Deterministic Finite

Automata ekuivalennya tersebut. Bila diketahui Non-deterministic Finite

Automata semula (gambar 3.3) menerima string '001', maka seharusnya

Deterministic Finite Automata pada gambar 3.8 juga menerima string tersebut.

Kita lihat:

δ(qo, 001) = δ({q0,ql}, 01) = δ{{ q0,ql }1) = {q0,ql}

Karena state { q0,ql } termasuk state akhir, maka berarti string tersebut diterima.

Page 26: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

NON-DETERMINISTIC FINITE AUTOMATA DENGAN ε-MOVE

4.1 NON-DETERMMISTIC FINITE AUTOMATA DENGAN ε-MOVE

Di sini kita mempunyai jenis otomata baru yang disebut Non-

deterministic Finite Automata dengan ε-move (ε di sini bisa dianggap sebagai

'empty'). Pada Non-deterministic Finite Automata dengan ε-move (transisi ε),

diperbolehkan mengubah state tanpa membaca input. Disebut dengan transisi ε

karena tidak bergantung pada suatu input ketika melakukan transisi. Contohnya

bisa dilihat pada gambar 4.1.

Gambar 4.1 Mesin NFA dengan ε-move

Penjelasan gambar 4.1:

• dari qo tanpa membaca input dapat berpindah ke q1

• dari q1 tanpa membaca input dapat berpindah ke q2

• dari q4 tanpa membaca input dapat berpindah ke q1

Salah satu kegunaan dari transisi ε ini adalah memudahkan kita untuk

mengkombinasikan finite state automata.

4.2 ε -CLOSURE UNTUK SUATU NON-DETERMMISTIC FINITE AUTOMATA

DENGAN ε -MOVE

Sekarang kita akan menambah suatu pengertian baru yang disebut ε-

closure. ε-closure adalah himpunan state-state yang dapat dicapai dari suatu state

Page 27: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

tanpa membaca input. Misalkan saja ε-closure{qo) = himpunan himpunan state-

state yang dapat dicapai dari state q0 tanpa membaca input. Maka dengan melihat

gambar 4.1, ε-closure (qo) = {qo,q1,q2}, artinya dari state tanpa membaca input

dapat mencapai state qo,q1, dan q2. ε-closure untuk state lainnya bisa dilihat

sebagai berikut.

ε-closure(qj)= lqp q2}

ε-closure(q2)= {q2}

ε-closure(q3)= (q3)

ε-closure(q4)= {qt, q2, q4i

Contoh lain kita lihat pada gambar 4.2.

Gambar 4.2 Mesin NFA dengan e-move

Dari gambar 4.2 kita ketahui ε-closure untuk setiap state adalah sebagai

berikut.

ε-closure(qo) = {qo, q1, q3)

ε-closure(q1) = {q1, q3}

ε-closure(q2) = {q2,q4}

ε-closure(q3) = {q3}

ε-closure(q4) = {q4}

Catatan:

Perhatikan bahwa pada suatu state yang tidak memiliki transisi e, maka e-

closure-nya adalah state itu sendiri.

Page 28: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

4.3 EKUIVALENSI NON-DETERMINISTIC FINITE AUTOMATA DENGAN ε -MOVE

KE NON-DETERMINISTIC FINITE AUTOMATA TANPA ε -MOVE

Dari sebuah Non-deterministic Finite Automata dengan e-move dapat kita

peroleh Non-deterministic Finite Automata tanpa ε-move yang ekuivalen.

(Dalam buku ini sebutan NFA saja mengacu kepada NFA tanpa ε-move).

Contohnya, bila kita punya NFA ε-move, seperti pada gambar 4.3.

Gambar 4.3 NFA ε –move

Gambar 4.4 NFA tanpa ε-move ekuivalen gambar 4.3

Perhatikan bahwa Non-deterministic Finite Automata ε-move semula

menerima bahasa yang memuat string 'b', selanjutnya kita lihat bahwa Non-

deterministic Finite Automata tanpa ε-move pada gambar 4.4 juga mampu

menerima bahasa yang memuat string 'b'. Maka, kita dapat menyatakan bahwa

kedua mesin tersebut ekuivalen, karena mampu menerima bahasa yang sama.

Page 29: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Tentu saja bila gambarnya tidak sesederhana itu, kita perlu melakukan

beberapa tahapan untuk mendapatkan perubahan dari Non- deterministic Finite

Automata e-move ke Non-deterministic Finite Automata tanpa ε-move. Secara

umum caranya adalah sebagai berikut.

1. Buat tabel transisi Non-deterministic Finite Automata e-move semula.

2. Tentukan e-closure untuk setiap state.

3. Carilah setiap fungsi transisi hasil perubahan dari Non-determin- istic

Finite Automata e-move ke Non-deterministic Finite Automata tanpa ε-

move (kita sebut saja sebagai δ') di mana δ' didapatkan dengan rumus:

δ(state, input) = ε_closure( δ (ε_closure(state), input) ).

4. Berdasarkan hasil no (3), kita bisa membuat tabel transisi dan diagram

transisi dari Non-deterministic Finite Automata tanpa ε-move yang

ekuivalen dengan Non-deterministic Finite Automata ε-move tersebut.

5. Jangan lupa menentukan state-state akhir untuk Non-deterministic Finite

Automata tanpa e-move tersebut, yaitu state-state akhir semula ditambah

dengan state-state yang ε_closure-nya menuju ke salah satu dari state

akhir semula. Dalam bahasa formalnya:

F'= F │q │ (ε-closure(q) ∩ F) ≠ Ø }

Misalnya: bila semula F = {q0,q3}, ε_closure (q1} = {q0,q2}, maka

Tabel transisi dari NFA ε-move pada gambar 4.3.

δ a b

qo Ø Ø

q1 q2 q3

q2 Ø Ø

q3 Ø Ø

Dari Non-deterministic Finite Automata e-move pada gambar 4.3 kita bisa

tentukan e-closure untuk setiap state (ε-closure bisa kita juga singkat sebagai

ε-cl):

Page 30: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

ε_cl(qo) = {qoq1}

ε_cl(q1) = {q,}

ε_cl(q2) = {q2}

ε_cl(q3) = {q3}

Kemudian kita cari δ dengan memanfaatkan tabel transisi dan e-closure

yang kita peroleh sebelumnya, sebagai berikut.

δ'(q0, a) = ε_closure( δ (ε_closure(q0), a))

= ε_closure( δ ({q0, q1}, a))

= ε_closure(q2)

= {q2}

δ'(q0, b) = ε _closure( δ (ε _closure(qo), b))

= ε _closure( δ ({q0, q1}, b))

= ε _closure(q3)

= {q3}

δ'(q1, a) = ε _closure( δ (e.closure(qo), a))

= ε _closure( δ ({q1}, a) )

= ε _closure(q2)

= {q2}

δ'(q1, b) = ε _closure{ δ (ε.closure(q1), b))

= ε _closure( δ {{q1}, b))

= ε _closure(q3)

= {q3}

δ'(q2, a) = ε _closure( 5 (ε_closure(q2), a))

= ε _closure( 8 ({q2}, a))

= ε _closure(0)

= Ø

Page 31: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

δ'(q2, b) = ε __closure( 8 (ε_closure(q2), b))

= ε _closure( 8 ({q2}, b))

= e_closure(0)

= Ø

δ'(q3, a) = e_closure( 8 (e_closure{q3), a))

= e_closure( 8 ({q3}, a))

= e_closure(0)

= Ø

δ'(q3, b) = e_closure( δ (e_closure(q3), b))

= e_closure( δ ({q3}, b))

= e_closure(0)

= Ø

Kita bisa melihat tabel transisi untuk NFA tanpa e-move dari hasil di atas.

δ' a b

qo q2 q3

q1 q2 q3

q2 Ø Ø

q3 Ø Ø

Akhirnya kita tentukan himpunan state akhir untuk Non-deter ministic

Finite Automata tanpa ε-move ini. Himpunan state akhir semula adalah {q3}.

Karena tidak ada state lain yang e-closure-nya memuat q3 maka himpunan state

akhir sekarang tetap {q3}.

Page 32: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

EKSPRESI REGULAR

5.1 PENERAPAN ELSPRESI REGULAR

Sebuah bahasa dinyatakan regular jika terdapat finite state automata yang

dapat menerimanya. Bahasa-bahasa yang diterima oleh suatu finite state

automata bisa dinyatakan secara sederhana dengan ekspresi regular

(regularexpression). Ekspresi regular, selanjutnya kita sebut sebagai ER,

memungkinkan menspesifikasikan atau mendefinisikan bahasa-bahasa. Ekspresi

regular memberikan suatu pola (pattern) atau template untuk untai/string dari

suatu bahasa. Untai yang menyusun suatu bahasa regular akan cocok (match)

dengan pola bahasa itu. Banyak masalah pada perancangan perangkat lunak yang

bisa disederhanakan dengan melakukan pengubahan notasi ekspresi regular ke

dalam implementasi komputer dari finite state automata yang bersangkutan.

Penerapan ekspresi regular yang tampak, misalnya pencarian (searching) untai

karakter (string) pada suatu file, biasanya fasilitas ini ada pada text editor. Dalam

kasus itu dilakukan penerapan Finite state automata pada untai-untai yang

terdapat dalam file tersebut.

5.2 NOTASI EKSPRESI REGULAR

Sekarang kita akan memperkenalkan notasi baru di sini, yaitu

‘*’, ‘

+’, ‘+’, ‘’, ‘.’:

* yaitu karakter asterisk, berarti bisa tidak muncul, bisa juga muncul berhingga

kali (0-n).

+ (pada posisi superscript /di atas) berarti minimal muncul satu kali (1-n)

+ atau berarti union.

. (titik) berarti konkatenasi, biasanya titik bisa dihilangkan, Misalnya: ab

bermakna sama seperti a.b.

Page 33: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Contoh ekspresi regular (selanjutnya kita singkat sebagai ER adalah sebagai

berikut.

• ER: ab*cc

Contoh string yang dibangkitkan: abcc, abbcc, abbbcc, abbbbcc, acc (b bisa

tidak muncul atau muncul sejumlah berhingga kali).

• ER: 010*

Contoh string yang dibangkitkan: 01, 010, 0100, 01000 (jumlah 0 di ujung

bisa tidak muncul, bisa muncul berhingga kali).

• ER: a*d

Contoh string yang dibangkitkan: d, ad, aad, aaad.

• ER: a+d

Contoh string yang dibangkitkan: ad, aad, aaad (a minimal muncul sekali).

• ER: a*b* (ingat '' berarti atau)

Contoh string yang dibangkitkan: a, b, aa, bb, aaa, bbb, aaaa, bbbb,

• ER: (ab)

Contoh string yang dibangkitkan: a, b.

• ER: (ab)*

Contoh string yang dibangkitkan: a, b, ab, ba, abb, bba, aaaa, bbbb (untai

yang memuat a atau b).

Catatan:

Perhatian bahwa notasi '' kadang dituliskan juga sebagai’+’

• ER: 01* + 0

contoh string yang dibangkitkan: 0, 01, 011, 0111, 01111, (string yang

berawalan dengan 0, dan selanjutnya boleh diikuti deretan 1).

Page 34: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

5.3 HUBUNGAN EKSPRESI REGULAR DAN FINITE STATE

AUTOMATA

Untuk setiap ekspresi regular ada satu Non-deterministic Finite Automata

dengan transisi ε (NFA e-move) yang ekuivalen. Sementara untuk setiap

Deterministic Finite Automata ada satu ekspresi regular dari bahasa yang diterima

oleh Deterministic Finite Automata. Sederhananya kita bisa membuat suatu Non-

deterministic Finite Automata e-move dari suatu ekspresi regular. Contohnya bisa

dilihat pada gambar 5.3, 5.4, dan 5.5. Yang perlu diperhatikan di situ, state akhir

akan menandakan apakah suatu input diterima atau tidak.

Gambar 5.3 NFA ε-move untuk ER: ab

Gambar 5.4 NFA ε-move untuk ER: a*b

Gambar 5.5 NFA E-move untuk ER: aub

Page 35: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Kemudian dari Non-deterministic Finite Automata E-move tersebut dapat

kita ubah ke Non-deterministic Finite Automata, dan selanjutnya ke Deterministic

Finite Automata, atau prosesnya sebagai berikut.

NFA ε-move NFA DFA

Bila ekspresi regularnya cukup sederhana kita bisa saja langsung

mengkonstruksi NFA-nya, tanpa melalui NFA ε-move. Misalkan saja NFA tanpa

e-move untuk ER: ab bisa dilihat pada gambar 5.6.

Gambar 5.6 NFA untuk ER: ab

Gambar 5.7 NFA untuk ER: a b

Contoh-contoh lain bisa dilihat pada gambar 5.8 sampai 5.15.

Gambar 5.8 NFA untuk ER: 010*

Gambar 5.9 NFA untuk ER: 0 (1 0)

Page 36: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Gambar 5.10 NFA untuk ER: 0 (1 0)*

Gambar 5.11 NFA untuk ER: 01*0

Gambar 5.12 NFA untuk ER: 0*10*

Gambar 5.13 NFA untuk ER:a*

Gambar 5.14 NFA untuk ER: a (ba)*

Gambar 5.15 NFA untuk ER: (ab)*

Page 37: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Dari sebuah finite state automata (NFA atau DFA) kita bisa menentukan

ekspresi regular yang diterima oleh otomata bersangkutan. Terdapat langkah-

langkah secara formal untuk menemukan ekspresi regular dari suatu finite state

automata, tetapi kita bisa juga secara langsung menentukan ekspresi regular-nya

dengan mengamati perilaku dari otomata tersebut.

Kita lihat dari gambar 5.16, input yang menuju pada final state (q2) adalah

0 atau 10*1, pada state q2 menerima input 1 dalam jumlah berapapun (1*) akan

tetap di q2. Dengan demikian, bisa dikatakan mesin itu menerima 01* atau

10*11*, yang dinyatakan dalam ekspresi regular:

01* u 10*11*.

Gambar 5.16 Mesin FSA

Pada gambar 5.17 kita lihat final state adalah q2 dan q3. Input yang menuju

q3 adalah ab, dengan di q3 bisa menerima a* sehingga bila digabung menjadi

aba*. Input yang menuju q2 adalah aa, selanjutnya dari q2 menerima ba* b

kembali ke q2 sehingga bila digabung menjadi aa(ba*b)*. Akhirnya kita peroleh

ekspresi regular untuk gambar 5.17: aba* u aa(ba*b)*, bisa pula dipersingkat

menjadi:

a(ba* a (ba*b)* ).

Page 38: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Gambar 5.17 Mesin FSA

Pada gambar 5.18 input yang menuju final state (q,,) adalah a(ba)*a,

karena dari q1 bila menerima (ba)* kembali ke q1 lagi. Di q2 bila menerima b*

tetap di q2. Selanjutnya menerima (aba) kembali ke q2, dan di q2 bila menerima b*

tetap di q2, atau digabung (abab*). Maka ekspresi regularnya:

a(ba)*ab*(abab*)*.

Gambar 5.18 Mesin FSA

Page 39: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

FINITE STATE AUTOMATA DENGAN OUTPUT

7.1 MESIN MOORE

Suatu keterbatasan dari finite state automata yang sudah kita pelajari

selama ini keputusannya terbatas pada diterima atau ditolak. Otomata tersebut

biasa disebut sebagai accepter, dalam hal ini finite state accepter. Kita bisa

mengkonstruksi sebuah finite state automata yang memiliki keputusan beberapa

keluar an/ouipuf, dalam hal ini otomata tersebut akan dikenal sebagai

transducer. Pada mesin Moore, output akan berasosiasi dengan state. Mesin

Moore didefinisikan dalam 6 (enam) tupel, M = (Q, Σ, δ, S, , λ ), di mana:

Q = himpunan state

Σ = himpunan simbol input

δ = fungsi transisi

S = state awal, S Q

= himpunan output

λ = fungsi output untuk setiap state.

Misalkan saja:

• 5 mod 3 = ?

input 5 dalam biner 101

bila kita masukkan 101 ke dalam mesin, urutan state yang dicapai:

q0, q2, q2, q2

Perhatikan state terakhir yang dicapai adalah q2, λ,(q2) = 2, maka 5 mod 3 = 2

• 10 mod 3 = ?

input 10 dalam biner 1010

bila kita masukkan 1010 ke dalam mesin, urutan state yang dicapai: qo, q1 q2,

q2, q1

λ(q2) = 1, maka 10 mod 3 = 1

Page 40: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

POHON PENURUN

8.1 TATA BAHASA BEBAS KONTEKS

Bila pada tata bahasa regular terdapat pembatasan pada ruas kanan atau

hasil produksinya, maka pada tata bahasa bebas konteks/eontert free grammar,

selanjutnya kita sebut sebagai CFG, tidak terdapat pembatasan hasil produksinya.

Pada aturan produksi:

a → b

batasannya hanyalah ruas kiri (a) adalah sebuah simbol variabel. Contoh aturan

produksi yang termasuk CFG:

B →CDeFg

D →BcDe

Seperti halnya pada tata bahasa regular, sebuah tata bahasa bebas konteks

adalah suatu cara yang menunjukkan bagaimana menghasilkan untai-untai dalam

sebuah bahasa. Seperti kita ketahui, pada saat menurunkan suatu string, simbol-

simbol variabel akan mewakili bagian-bagian yang belum terturunkan dari string

tersebut. Bila pada tata bahasa regular, bagian yang belum terturunkan tersebut

selalu ssjadi pada suatu ujung, pada tata bahasa bebas konteks bisa terdapat lebih

banyak bagian yang belum terturunkan itu, dan bisa terjadi di mana saja. Ketika

penurunan itu telah lengkap, semua bagian yang belum terturunkan telah diganti

oleh string-string (yang mungkin saja kosong) dari himpunan simbol terminal.

Bahasa bebas konteks menjadi dasar dalam pembentukan suatu parser/proses

analisis sintaksis.

Pohon penurunan (derivation tree / parse tree) berguna untuk

menggambarkan bagaimana memperoleh suatu string (untai) dengan cara

menurunkan simbol-simbol variabel menjadi simbol-simbol terminal. Setiap

simbol variabel akan diturunkan menjadi terminal, sampai tidak ada yang belum

tergantikan.

Page 41: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Misalnya terdapat tata bahasa bebas konteks dengan aturan produksi

(simbol awal S, selanjutnya di dalam bab ini digunakan sebagai simbol awal

untuk tata bahasa bebas konteks adalah S):

S →AB

A→aA | a

B → bB | b

Akan kita gambarkan pohon penurunan untuk memperoleh untai: 'aabbb'.

Pada pohon tersebut simbol awal akan menjadi akar Iroot). Setiap kali penurunan

dipilih aturan produksi yang menuju ke solusi. Simbol-simbol variabel akan

menjadi simpul-simpul yang mempunyai anak. Simpul-simpul yang tidak

mempunyai anak akan menjadi simbol terminal. Kalau kita baca simbol terminal

yang ada pada gambar 8.2 dari kiri ke kanan akan diperoleh untai 'aabbb'.

Gambar 8.2 Pohon penurunan untuk untai 'aabbb'

Proses penurunan atau parsing bisa dilakukan dengan cara sebagai berikut.

Penurunan terkiri (leftmost derivation): simbol variabel terkiri yang diperluas

terlebih dulu.

Penurunan terkanan (rightmost derivation)-, simbol variabel ter- kanan yang

diperluas terlebih dulu.

Misal, terdapat tata bahasa bebas konteks:

S → aAS | a

A →SbA | ba

Page 42: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Untuk memperoleh untai 'aabbaa' dari tata bahasa bebas konteks di atas

('=*' bisa dibaca 'menurunkan'):

dengan penurunan terkiri: S → aAS → aSbAS → aabAS → aabbaS

→aabbaa,

dengan penurunan terkanan: S → aAS → aAa → aSbAa → aSbbaa →

aabbaa.

Kita dapat melihat pohon penurunannya pada gambar 8.3. Meskipun

proses penurunannya berbeda, namun akan tetap memiliki pohon penurunan yang

sama.

Gambar 8.3 Pohon penurunan untuk untai 'aabbaa'

Biasanya persoalan yang diberikan berkaitan dengan pohon penurunan

adalah untuk mencari penurunan yang hasilnya menuju kepada suatu untai yang

ditentukan. Dalam hal ini, perlu untuk melakukan percobaan pemilihan aturan

produksi yang bisa menuju ke solusi. Misalkan sebuah tata bahasa bebas konteks

memiliki aturan produksi sebagai berikut.

S → aB | bA

A → a | aS | bAA

B → b | bS | aBB

Pohon penurunan untuk memperoleh 'aaabbabbba' bisa dilihat pada gambar

8.4.

Page 43: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Gambar 8.4 Pohon penurunan untuk untai 'aaabbabbba'

8.3 AMBIGUITAS

Ambiguitas/kedwiartian terjadi bila terdapat lebih dari satu pohon

penurunan yang berbeda untuk memperoleh suatu untai.

Misalkan terdapat tata bahasa bebas konteks:

S →A | B

A → a

B → a

Untuk memperoleh untai 'a' bisa terdapat dua cara penurunan berikut ini.

• S A a

• S B a

Contoh lain, terdapat tata bahasa bebas konteks:

S →SbS | ScS | a

Kita bisa menurunkan untai 'abaca' dalam dua cara berikut ini.

• S SbS SbScS SbSca Sbaca abaca.

• S ScS SbScS abScS abacS abaca.

Pohon penurunannya bisa dilihat pada gambar 8.5 dan 8.6.

Page 44: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Gambar 8.5 Pohon penurunan untuk 'abaca'

Gambar 8.6 Pohon penurunan untuk 'abaca'

Page 45: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

PENYEDERHANAAN TATA BAHASA BEBAS KONTEKS

9.1 TUJUAN PENYEDERHANAAN

Penyederhanaan tata bahasa bebas konteks bertujuan untuk melakukan

pembatasan sehingga tidak menghasilkan pohon penurunan yang memiliki

kerumitan yang tak perlu atau aturan produksi yang tidak berarti. Misalkan

terdapat tata bahasa bebas konteks (dengan simbol awal S, dalam bab ini kita

gunakan sebagai simbol awal untuk tata bahasa bebas konteks adalah S):

S → AB | a

A → a

Kelemahan tata bahasa bebas konteks di atas, aturan produksi S → AB

tidak berarti karena B tidak memiliki penurunan

Untuk tata bahasa bebas konteks berikut.

S →A

A →B

B →C

C →D

D →a | A

memiliki kelemahan terlalu panjang jalannya padahal berujung pada S → a,

produksi D → A juga menyebabkan kerumitan.

Suatu tata bahasa bebas konteks dapat disederhanakan dengan melakukan

cara berikut ini.

1. Penghilangan produksi useless (tidak berguna).

2. Penghilangan produksi unit.

3. Penghilangan produksi ε.

Selanjutnya akan kita bahas satu persatu cara-cara penyederhanaan tersebut.

9.2 PENGHILANGAN PRODUKSI USELESS

Dalam konteks ini, produksi useless didefinisikan sebagai:

Page 46: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

• Produksi yang memuat simbol variabel yang tidak memiliki penurunan yang

akan menghasilkan terminal-terminal seluruhnya (kita sebut saja sebagai

'menuju terminal'), produksi ini tidak berguna karena bila diturunkan tidak

akan pernah selesai (masih ada simbol variabel yang tersisa);

• Produksi yang tidak akan pernah dicapai dengan penurunan apapun dari

simbol awal sehingga produksi itu redundan (berlebih).

Contoh, terdapat tata bahasa bebas konteks:

S → aSa | Abd | Bde

A→ Ada

B → BBB | a

Kita bisa melihat bahwa:

• Simbol variabel A tidak memiliki penurunan yang menuju terminal, sehingga

bisa dihilangkan;

• Konsekuensi no (1), aturan produksi S à Abd tidak memiliki penurunan;

maka tata bahasa bebas konteks setelah disederhanakan menjadi:

S → aSa | Bde

B → BBB | a

Contoh, terdapat tata bahasa bebas konteks adalah sebagai berikut.

S → Aa | B

A → ab | D

B → b | E

C → bb

E → aEa

Kita bisa melihat bahwa:

1) Aturan produksi A→ D, simbol variabel D tidak memiliki penurunan;

2) Aturan produksi C → bb, bila kita coba melakukan penurunan dari simbol awal

S, dengan jalan mana pun tidak akan pernah mencapai C;

3) Simbol variabel E tidak memiliki aturan produksi yang menuju terminal (E →

aEa satu-satunya aturan produksi dari E);

Page 47: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

4) Konsekuensi no (3) Aturan produksi B → E, simbol variabel E tidak memiliki

penurunan.

maka dari tata bahasa bebas konteks di atas, produksi yang useless:

A → D

C → bb

E → aEa

B → E

maka tata bahasa bebas konteks setelah disederhanakan menjadi:

S → Aa | B

A → ab

B → b

Contoh, tata bahasa bebas konteksnya adalah sebagai berikut.

S → aAb | cEB

A → dBE eeC

B → ff

C → ae

D → h

Kita bisa melihat bahwa:

1) aturan produksi S →EB, A → dBE (E tidak memiliki penurunan); ) aturan

produksi D → h, redundan.

2) Sisa aturan produksi:

S → aAb

A → eeC

B → ff

C → ae

Kita lihat sekarang B → ff juga redundan sehingga hasil penyederhanaan

menjadi:

S → aAb

A → eeC

C→ ae

Page 48: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Contoh, tata bahasa bebas konteks adalah sebagai berikut.

S → aB

A → bcD | dAC

B → e | Ab

C → bCb j adF | ab

F → cFB

Kita bisa melihat bahwa:

• Aturan produksi A → bcD, variabel D tidak memiliki penurunan;

• Konsekuensi no (1), simbol variabel A tidak memiliki penurunan yang

menuju terminal (tinggal A → dAC);

• Konsekuensi no (2), B → Ab tidak memiliki penurunan;

• Simbol variabel F tidak memiliki penurunan yang menuju terminal;

• Konsekuensi no (4), C → adF tidak memiliki penurunan. Setelah

disederhanakan, akan menjadi:

S→aB

B → e

C → bCb | ab

Contoh, tata bahasa bebas konteksnya adalah sebagai berikut.

S→aBD

B →cD | Ab

D →ef

A→ Ed

F → dc

Kita bisa melihat bahwa:

• Aturan produksi A →Ed, E tidak memiliki penurunan;

• Aturan produksi F dc, redundan. Sisa aturan produksi:

S → aBD

B → cD | Ab

D → ef

Kita lihat sekarang, B → Ab, A tidak memiliki penurunan. Aturan produksi

setelah disederhanakan:

Page 49: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

S → aBD

B →cD

D → ef

Contoh, tata bahasa bebas konteks:

S →Abc | ab

A→ AAA | ε

Aturan produksi setelah disederhanakan:

S → Abc | ab

A→ AAA | e

Ingat A → e juga harus diperhitungkan

Catatan:

Prinsipnya setiap kali melakukan penyederhanaan kita periksa lagi aturan

produksi yang tersisa, apakah semua produksi yang useless sudah kita hilangkan.

9.3 PENGHILANGAN PRODUKSI UNIT

Produksi unit adalah produksi di mana ruas kiri dan kanan aturan produksi

hanya berupa satu simbol variabel, misalkan: A → B, C → D: Keberadaan

produksi unit membuat tata bahasa memiliki kerumitan yang tak perlu atau

menambah panjang penurunan. Penyederhanaan ini dilakukan dengan melakukan

penggantian aturan produksi unit.

Contoh tata bahasa bebas konteks:

S → Sb

S → C

C → D

C → ef

D → dd

Kita lakukan penggantian berurutan mulai dari aturan produksi yang

paling dekat menuju ke penurunan terminal-terminal ('' dibaca 'menjadi'):

• C →D C →dd

• S C S → dd | ef

Page 50: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

sehingga aturan produksi setelah penyederhanaan:

S → Sb

S → dd | ef

C →dd

C →ef

D →dd

Contoh, tata bahasa bebas konteks:

S → →→A

S → Aa

A→ B

B → C

B → b

C → D

C → ab

D→ b

Penggantian yang dilakukan:

• C → D C → b

• B → C B → b | ab, karena B -> b sudah ada, maka kita cukup tuliskan

B → ab

• A → B A → ab | b

• S → A S ab | b

Sehingga aturan produksi setelah penyederhanaan:

S → ab │ b

S →Aa

A → ab | b

B →ab

B →b

C → b

C → ab

D → b

Page 51: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Contoh, tata bahasa bebas konteks:

S →Cba | D

A → bbC

B → Sc | ddd

C→ eA | f | C

D → E | SABC

E → gh

Penggantian yang dilakukan:

• D →E menjadi D →gh

• C → C, kita hapus

• S → D menjadi S → gh | SABC

sehingga aturan produksi setelah penyederhanaan:

S → Cba | gh | SABC

A → bbC

B →Sc│ddd

C → eA│f

D → gh SABC

E → gh

9.4 PENGHILANGAN PRODUKSI ε

Produksi e adalah produksi dalam bentuk

Α → e

atau bisa dianggap sebagai produksi kosong (empty). Penghilangan produksi e

dilakukan dengan melakukan penggantian produksi yang memuat variabel yang

bisa menuju produksi ε, atau biasa disebut nullable. Prinsip penggantiannya bisa

dilihat kasus berikut ini.

S → bcAd

A→ e

Page 52: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Pada kasus di atas A nullable, serta A -> e satu-satunya pro-duksi dari A,

maka variabel A bisa ditiadakan, hasil penyederhanaan tata bahasa bebas konteks

menjadi:

S → bed

Tetapi bila kasusnya:

S → bcAd

A → bd | e

Pada kasus di atas A nullable, tapi A → ε bukan satu-satunya produksi

dari A, maka hasil penyederhanaan:

S → bcAd | bed

A→ bd

Contoh, terdapat tata bahasa bebas konteks:

S → Ab | Cd

A→ d

C→ e

Variabel yang nullable adalah variabel C. Karena penurunan C → ε

merupakan penurunan satu-satunya dari C, maka kita ganti S → Cd menjadi S →

d. Kemudian produksi C → ε kita hapus.

Tata bahasa bebas konteks setelah penyederhanaan:

S → Ab | d

A→d

Contoh, terdapat tata bahasa bebas konteks:

S →dA | Bd

A→bc

A → e

B → c

Variabel yang nullable adalah variabel A. A → ε bukan penurunan satu-

satunya dari A (terdapat A→ bc), maka kita ganti S → dA menjadi S → dA | d.

A→ ε kita hapus.

Page 53: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Setelah penyederhanaan:

S → dA | d | Bd

A → bc

B → c

Contoh, tata bahasa bebas konteks:

S → AaCD

A → CD | AB

B → b | ε

C → d | ε

D → ε

Variabel yang nullable adalah variabel B, C, D. Kemudian kita lihat dari

A → CD, maka variabel A juga nullable (A → ε). Karena D hanya memiliki

penurunan D → ε, maka kita sederhanakan dulu:

• S → AaCD S → AaC

• A CD A → C

• D → ε kita hapus

Selanjutnya kita lihat variabel B dan C memiliki penurunan e, meskipun

bukan satu-satunya penurunan, maka kita lakukan penggantian:

• A → AB A AB | A [ B

• S → AaC S → AaC | aC | Aa | a

• B → ε dan C → ε kita hapus

Setelah penyederhanaan:

S AaC │ aC J Aa │ a

A → C │ AB | A | B

B → b

C → ε

Contoh, tata bahasa bebas konteks:

S → AB A abB | aCa | ε

B → bA | BB | ε

C → E

Page 54: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Variabel yang nullable adalah A, B, C. Dari S AB, maka S juga nullable.

Kita lakukan penggantian:

• A → aCa A aa

• B → bA B bA | b

• B → BB B BB j B

• A → abB A → abB | ab

• S → AB S → AB | A | B | ε

• C → ε, B→ ε, A→ ε dihapus

Catatan:

Perhatikan bahwa untuk penggantian S → AB kita tetap mempertahankan

produksi S → e, karena S merupakan simbol awal. Ini merupakan satu-satunya

perkecualian produksi ε yang tidak dihapus, yaitu produksi ε yang dihasilkan

oleh simbol awal.

Hasil akhir penyederhanaan:

S → AB | A | B | e

A → abB | ab | aa

B → bA | b | BB | B

Contoh, tata bahasa bebas konteks:

S → aAb

A → aAb | ε

Hasil penyederhanaan:

S → aAb | ab

A → aAb | ab

Contoh, tata bahasa bebas konteks:

S → ABaC

A → BC

B →b | ε

C→ D | ε

D → d

Page 55: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Hasil penyederhanaan:

S → ABaC | BaC | AaC | ABa | aC | Aa | Ba | a

A → B | C | BC

B → b

C → D

Page 56: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

BENTUK NORMAL CHOMSKY

10.1 PENGERTIAN BENTUK NORMAL CHOMSKY

Bentuk normal Chomsky/Chomsky Normal Form (CNF) merupakan salah

satu bentuk normal yang sangat berguna untuk tata bahasa bebas konteks (CFG).

Bentuk normal Chomsky dapat dibuat dari sebuah tata bahasa bebas konteks yang

telah mengalami penyederhanaan, yaitu penghilangan produksi useless, unit, dan

e. Dengan kata lain, suatu tata bahasa bebas konteks dapat dibuat menjadi bentuk

normal Chomsky dengan syarat tata bahasa bebas konteks tersebut:

• tidak memiliki produksi useless,

• tidak memiliki produksi unit,

• tidak memiliki produksi E.

Aturan produksi dalam bentuk normal Chomsky ruas kanannya tepat

berupa sebuah terminal atau dua variabel. Misalkan:

A → BC

A → b

B → a

C → BA | d

10.2 PEMBENTUKAN BENTUK NORMAL CHOMSKY

Langkah-langkah pembentukan bentuk normal Chomsky secara umum

sebagai berikut:

Biarkan aturan produksi yang sudah dalam bentuk normal Chomsky.

Lakukan penggantian aturan produksi yang ruas kanannya memuat simbol

terminal dan panjang ruas kanan > 1.

Lakukan penggantian aturan produksi yang ruas kanannya memuat > 2

simbol variabel.

Penggantian-penggantian tersebut bisa dilakukan berkali-kali sampai

akhirnya semua aturan produksi dalam bentuk normal Chomsky.

Page 57: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Selama dilakukan penggantian, kemungkinan kita akan memperoleh

aturan-aturan produksi baru, dan juga memunculkan simbol- simbol

variabel baru.

Contoh, tata bahasa bebas konteks (kita anggap tata bahasa bebas konteks

pada bab ini sudah mengalami penyederhanaan) sebagai berikut.

S → bA j aB

A → bAA | aS | a

B → aBB j bS I b

Aturan produksi yang sudah dalam bentuk normal Chomsky adalah sebagai

berikut.

A → a

B → b

Dilakukan penggantian aturan produksi yang belum bentuk normal

Chomsky ('=>' bisa dibaca berubah menjadi);

S → bA S P1A

S → aB => S P2B

A → bAA A P1AA => A → P1P3

A → aS A P2S

B →aBB B → P2BB B → P2P4

B → bS B → P1S

terbentuk aturan produksi dan simbol variabel baru:

P1→ b

P2 → a

P3→AA

P4 → B

Hasil akhir aturan produksi dalam bentuk normal Chomsky adalah sebagai

berikut.

A → a

B → b

Page 58: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

S → P1A

S → P2B

A → P1P3

A → P2S

B → P2P4

B → P1S

P1 → b

P2 → a

P3 → AA

P4 → BB

Contoh, tata bahasa bebas konteks:

S → aB | CA

A → a | bc

B → BC | Ab

C → aB | b

Aturan produksi yang sudah dalam bentuk normal Chomsky:

S → CA

A → a

B → BC

C → b

Penggantian aturan produksi yang belum dalam bentuk normal Chomsky:

S → aB S → P1B

A → bc S → P2P3

B → Ab B → AP2

C → aB C → P1B

terbentuk aturan produksi dan simbol variabel baru:

P1 → a

P2 → b

P3 → c

Page 59: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Hasil akhir aturan produksi dalam bentuk normal Chomsky adalah sebagai berikut.

S → CA

A → a

B → BC

C → b

S → P1B

S → P2P3

B → AP2

C → P1B

P → a

P2 → b

P3 → e

Contoh, tata bahasa bebas konteks:

S → aAB | ch | CD

A → dbE | eEC

B → ff | DD

C →ADB | aS

D → i

E → jD

Aturan produksi yang sudah dalam bentuk normal Chomsky:

S → CD

B → DD

D → i

Penggantian aturan produksi:

S → AAB S → P1P2

S → CH S →P3P4

A → DBE A → P5P6

A → EC => A → P8P9

B → ff B → P10P10

C → ADB C → AP11

C → aS C → P1S

Page 60: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

E → jD E → P12D

terbentuk aturan produksi baru:

P → a

P2 → AB

P3 →c

P4 → h

P5 → D

P6 → P7E

P7 → b

P8 → e

P9 → EC

P10 → f

P11 → DB

P12 → j

Hasil akhir dalam bentuk normal Chomsky adalah sebagai berikut.

S → CD

B → DD

D → i

S → P1P2

S → P3P4

A → P5P6

A → P8P9

B → P10Pl0

C → AP11

C → P1S

E → P12D

P1 → a

P2 → AB

P3 → c

P4 → h

Page 61: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

P6 → P7E

P7 → b

P8 → e

P9 → EC

P10 → f

P11 → DB

PI2 → j

/I vi.;=v vj t z* j -r BU

Page 62: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

PENGHILANGAN REKURSIF KIRI

11.1 ATURAN PRODUKSI REKURSIF

Aturan Produksi yang rekursif memiliki ruas kanan (hasil produksi) yang

memuat simbol variabel pada ruas kiri. Sebuah aturan produksi dalam bentuk:

A→ βA

merupakan aturan produksi yang rekursif kanan β=(VT)* atau

kumpulan simbol variabel dan terminal.

Contoh aturan produksi yang rekursif kanan:

S →dS

B → adB

Produksi dalam bentuk:

A → Aβ

merupakan aturan produksi yang rekursif kiri, contohnya:

S → Sd

B → Bad

Produksi yang rekursif kanan menyebabkan pohon penurunan tumbuh ke

kanan, sebaliknya produksi yang rekursif kiri menyebabkan pohon penurunan

tumbuh ke kiri. Bisa dilihat pohon penurunan pada gambar 11.1 dari tata bahasa

bebas konteks dengan aturan produksi:

S → aAc

A → Ab | ε

Gambar 11.1 Pohon penurunan sebuah CFG yang rekursif kiri

Page 63: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Dalam banyak penerapan tata bahasa, rekursif kiri tak diinginkan. Untuk

menghindari penurunan yang bisa mengakibatkan loop kita perlu menghilangkan

sifat rekursif kiri dari aturan produksi. Penghilangan rekursif kiri di sini

memungkinkan suatu tata bahasa bebas konteks nantinya diubah ke dalam bentuk

normal Greibach.

11.2 TAHAPAN PENGHILANGAN REKURSIF KIRI

Langkah-langkah penghilangan rekursif kiri adalah sebagai berikut.

Pisahkan aturan produksi yang rekursif kiri dan yang tidak.

Contoh:

Aturan produksi yang rekursif kiri:

A → Aα1 | Aα2 | Aα3 | Aαn

Aturan produksi yang tidak rekursif kiri (termasuk produksi ε):

A → β1 | β 2 | β 3 | ........ β m

Dari situ kita bisa tentukan α1,α2, ... αn,dan β1,β2,... βm dari setiap aturan

produksi yang memiliki simbol ruas kiri yang sama

Lakukan penggantian aturan produksi yang rekursif kiri, menj adi sebagai

berikut.

1) A→ β1Z │ β1Z │….βmZ

2) Z → α1 │ α2 │ α3 │ ... αn

3) Z → α1Z │α1Z │ α1Z │ ... αnZ

Penggantian di atas dilakukan untuk setiap aturan produksi dengan simbol

ruas kiri yang sama, bisa muncul simbol variabel baru Z1 Z2, dan

seterusnya, sesuai banyaknya variabel yang menghasilkan produksi yang

rekursif kiri.

Hasil akhir berupa aturan produksi pengganti ditambah dengan aturan

produksi semula yang tidak rekursif kiri.

Contoh, tata bahasa bebas konteks:

Page 64: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

S → Sab | aSc | dd | ff | Sbd

Pertama-tama kita lakukan pemisahan aturan produksi. Aturan produksi

yang rekursif kiri:

S → Sab | Sbd

Dari situ kita tentukan:

untuk simbol ruas kiri S: α1 = ab, α2 = bd

Aturan produksi yang tidak rekursif kiri:

S → aSc | dd | ff

Dari situ kita dapatkan:

untuk simbol ruas kiri S: β1=aSc, β2=dd, β3=ff

Kita lakukan penggantian aturan produksi yang rekursif kiri. Untuk yang

memiliki simbol ruas kiri S: S → Sab | Sbd, digantikan oleh:

i. S → aScZ1 | ddZ1 | fiZ1

ii. Z1 → ab | bd

iii. Z1 → abZ1| bdZ1

Hasil akhir setelah penghilangan rekursif kiri adalah sebagai berikut.

S → aSc ] dd | ff

S → aScZ1| ddZ1 | ffZt

Z1 → ab | bd

Z1 → abZ1 | bdZj

Catatan:

Pada kasus di atas S adalah satu-satunya simbol variabel yang menghasilkan

produksi rekursif kiri.

Contoh lain, terdapat tata bahasa bebas konteks:

S → Sab | Sb | cA

A→ Aa | a | bd

Pertama-tama kita lakukan pemisahan aturan produksi

Aturan produksi yang rekursif kiri:

Page 65: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

S → Sab | Sb

A → Aa

Dari situ kita tentukan:

untuk simbol ruas kiri S: α1 = ab, α2 = b

untuk simbol ruas kiri A: α1 = a

Aturan produksi yang tidak rekursif kiri:

S → cA

A → a | bd

Dari situ kita dapatkan:

untuk simbol ruas kiri S: β1 = cA

untuk simbol ruas kiri A: β1 = a, β 2 = bd

Kita lakukan penggantian aturan produksi yang rekursif kiri: Untuk yang

memiliki simbol ruas kiri S: S → Sab | Sb, digantikan oleh:

i. S → cAZ1

ii. Z1 → ab | b

iii. Z1 → abZ1 | bZ1

Untuk yang memiliki simbol ruas kiri A:

A → Aa, digantikan oleh:

i. A→ aZ2 | bdZ2

ii. Z2 → a *

iii. Z2 → aZ2

Hasil akhir setelah penghilangan rekursif kiri adalah sebagai berikut.

S → cA

A → a | bd

S → cAZ1

Zl →ab | b

Z1→ abZ2 | bZ2

A → a Z2 | bdZ2

Z2 → a

Z2 → aZ2

Page 66: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

BENTUK NORMAL GREIBACH

12.1 PENGERTIAN BENTUK NORMAL GREIBACH

Bentuk normal Greibach merupakan bentuk normal yang memiliki banyak

konsekuensi teoretis dan praktis. Dalam bentuk normal. Greibach kita membatasi

posisi munculnya terminal- terminal dan variabel-variabel. Suatu tata bahasa

bebas konteks (CFG) dikatakan dalam bentuk normal Greibach/Greibach Normal

Form, selanjutnya kita sebut sebagai GNF, jika setiap aturan produksinya ada

dalam bentuk:

A → aa

a: simbol terminal (tunggal), a T

α: rangkaian simbol-simbol variabel (V*)

Atau dengan kata lain, suatu tata bahasa bebas konteks dalam bentuk

normal Greibach bila hasil produksinya (ruas kanan) diawali dengan satu simbol

terminal, selanjutnya bisa diikuti oleh rangkaian simbol variabel. Contoh tata

bahasa bebas konteks dalam bentuk bentuk normal Greibach:

S → a | aAB

A → aB

B → cS

Untuk dapat diubah ke dalam bentuk normal Greibach, tata bahasa semula

harus memenuhi syarat-syarat sebagai berikut.

Sudah dalam bentuk normal Chomsky.

Tidak bersifat rekursif kiri.

Tidak menghasilkan e.

Terdapat dua cara pembentukan bentuk normal Greibach, yaitu melalui

substitusi dan perkalian matriks. Pada bagian berikutnya kita membahas kedua

cara tersebut.

Page 67: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

12.2 PEMBENTUKAN BENTUK NORMAL GREIBACH DENGAN

SUBSTITUSI

Secara umum langkah-langkah untuk mendapatkan bentuk normal

Greibach adalah sebagai berikut.

1. Tentukan urutan simbol-simbol variabel yang ada dalam tata bahasa.

Misalkan, terdapat m variabel dengan urutan AJ( Ap ..., Am

2. Berdasarkan urutan simbol yang ditetapkan pada langkah (1) seluruh

aturan produksi yang ruas kanannya diawali dengan simbol variabel dapat

dituliskan dalam bentuk:

Ah→ A1

di mana h <> i (rekursif kiri sudah dihilangkan), bisa berupa simbol-

simbol variabel.

a. Jika h < i, aturan produksi ini sudah benar (tidak perlu diubah)

b. Jika h > i, aturan produksi belum benar. Lakukan substitusi berulang-

ulang terhadap Ai (ganti Ai pada produksi ini dengan ruas kanan

produksi dari variabel A.) sehingga suatu saat diperoleh produksi

dalam bentuk:

Ah→ A1 (di mana h <p)

i) Jika h = p, lakukan penghilangan rekursif kiri.

ii) Jika h < p, aturan produksi sudah benar.

3. Jika terjadi penghilangan rekursif kiri pada tahap (2b), sejumlah simbol

variabel baru yang muncul dari operasi ini dapat disisipkan pada urutan

variabel semula di mana saja asalkan ditempatkan tidak sebelum Ah (di

kiri).

4. Setelah langkah (2) & (3) dikerjakan, maka aturan-aturan produksi yang

ruas kanannya dimulai simbol variabel sudah berada dalam urutan yang

benar.

Ah→ Ay (di mana x < y).

Page 68: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Produksi-produksi yang lain ada dalam bentuk:

A→ a (a = simbol terminal)

Bx→

Bx = simbol variabel baru yang muncul sebagai akibat dari operasi

penghilangan rekursif kiri).

5. Bentuk normal Greibach diperoleh dengan cara melakukan substitusi

mundur mulai dari variabel Am, lalu Am.1A m.2... Dengan cara ini aturan

produksi dalam bentuk Ax → Ay dapat diubah sehingga ruas kanannya

dimulai dengan simbol terminal.

6. Produksi yang dalam bentuk Bx → juga dapat diubah dengan cara

substitusi seperti pada langkah (5).

Contoh (tata bahasa bebas konteks sudah dalam bentuk normal Chomsky

dan memenuhi syarat untuk diubah ke bentuk normal Greibach), simbol awal

adalah S:

S → CA

A →a | d

B → b

C →DD

D → AB

Kita tentukan urutan simbol variabel, misalnya S, A, B, C, D

(S<A<B<C<D).

Catatan:

Perhatikan bahwa urutan tersebut boleh Anda tentukan sendiri, buatlah urutan

sedemikan sehingga memudahkan untuk proses selanjutnya.

Kita periksa aturan produksi yang simbol pertama pada ruas kanan adalah

simbol variabel, apakah sudah memuhi ketentuan urutan variabel:

• S → CA (sudah memenuhi karena S<C),

• C → DD (sudah memenuhi karena C<D),

• D → AB (tidak memenuhi, karena D>A).

Page 69: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Yang belum memenuhi urutan yang telah kita tentukan adalah: D → AB,

karena ruas kiri > simbol pertama pada ruas kanan. Maka kita lakukan substitusi

pada simbol variabel A, aturan produksi menjadi:

D → aB | dB

Setelah semua aturan produksi sudah memenuhi ketentuan urutan variabel,

kita lakukan substitusi mundur pada aturan produksi yang belum dalam bentuk

normal Greibach ('=>' dibaca 'menjadi'):

C →DD C →aBD j dBD

S → CA S → aBDA | dJBDA

Perhatikan bahwa substitusi mundur dimulai dari aturan produksi yang memiliki

ruas kiri dengan urutan variabel paling akhir (kasus di atas: S<A<B<C<D, maka

C lebih dulu disubstitusi daripada S).

Hasil akhir aturan produksi yang sudah dalam bentuk normal Greibach

adalah sebagai berikut.

S → aBDA j dBDA

A →a │ d

B → b

C → aBD │dBD

D → aB I dB

Catatan:

Perhatikan bahwa setiap substitusi kita lakukan pada simbol variabel pertama

pada ruas kanan (pada aturan produksi yang belum bentuk normal Greibach

tentunya).

Prinsipnya sebagai berikut.

Biarkan aturan produksi yang sudah dalam bentuk normal Greibach.

Tentukan pengurutan simbol variabel, berdasarkan kondisi aturan produksi

yang ada buatlah urutan sedemikian sehingga memudahkan untuk proses

selanjutnya. Mulailah terlebih dahulu dari simbol awal.

Page 70: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Lakukan perubahan pada aturan produksi yang belum memenuhi

ketentuan urutan tersebut dan bila perlu selama proses itu bisa dilakukan

substitusi dan penghilangan rekursif kiri.

Lakukan substitusi mundur sedemikian rupa sehingga semua aturan

produksi akan diawali dengan tepat sebuah simbol terminal. Proses

substitusi mundur dimulai dari aturan produksMengan urutan paling akhir.

Lakukan substitusi mundur juga pada aturan produksi baru yang muncul

sebagai hasil penghilangan rekursif kiri.

Contoh lain (simbol awal A):

A→BC

B → CA | b

C → AB | a

Kita tentukan urutan simbol: A, B, C (A<B<C).

A → BC (sudah memenuhi karena A<B)

B → CA (sudah memenuhi karena B<C)

C → AB (padahal C > A sehingga harus diubah)

Pengubahan C → AB:

C →AB C BCB C → CACB | bCB

untuk C → CACB lakukan penghilangan rekursif kiri menjadi:

C → bCBZ1 | aZ1

Z1 → ACB

Z1 → ACBZ1

Kita lihat seluruh hasil produksi dari variabel C, sudah dalam bentuk

normal Greibach adalah sebagai berikut.

C → bCBZ1 | aZ1 | bCB | a

Setelah semua aturan produksi sudah memenuhi ketentuan urutan variabel,

kita lakukan substitusi mundur:

Page 71: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

B → CA B → bCBZ1A | aZ1A | bCBA | aA

A → BC A bCBZjAC | aZ1AC | bCBAC | aAC | bC

Selanjutnya lakukan pula substitusi pada aturan produksi dengan variabel

baru yang terbentuk (pada contoh ini Z1):

Z1 →ACB Z1 →bCBZ1ACCB | aZ1ACCB | bCBACCB | aACCB |

bCCB

Z1 →ACBZj Z1 → bCBZ1CCBZ1 | aZ1CCBZ1 | bCBACCBZ1 |

aACCBZ1 | bCCBZ1

Hasil akhir aturan produksi dalam bentuk bentuk normal Greibach adalah

sebagai berikut.

A →bCBZ1C | aZ1AC | bCBAC | aAC | bC

B → bCBZ1A | aZ1A | bCBA | aA | b

C → bCBZ1 | aZ1 | bCB | a

Z1→ bCBZ1CCB | aZ1ACCB | bCBACCB | aACCB | bCCB

Z1→ bCBZ1ACCBZ1 | aZ1ACCBZ1 | bCBACCBZ1 | aACCBZ1 | bCCBZ1

Page 72: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

PUSH DOWN AUTOMATA

13.1 MEKANISME KERJA PUSH DOWN AUTOMATA

Push Down Automata, selanjutnya kita sebut sebagai PDA, merupakan

mesin otomata dari bahasa bebas konteks. Bila sebuah finite state automata atau

otomata berhingga mempunyai kemampuan "memori" yang terbatas, pada

otomata push down atau Push Down Automata didefinisikan sebuah tempat

penyimpanan yang tidak terbatas berupa stock/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), selanjutnya kita sebut saja sebagai top 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 ke dalam stack dengan operasi push.

Setiap elemen stack bisa memuat satu simbol, yang pada push down automata

disebut sebagai simbol 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

Page 73: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Sebuah push down automata dinyatakan dalam 7 tupel, M= (Q, Σ, Γ, , S,

F, Z), di mana:

Q = himpunan state

Σ = himpunan simbol input

Γ = simbol-simbol tumpukan/stacfc

= fungsi transisi

S = state awal, S G Q

F = himpunan final state, F c Q

Z = simbol awal tumpukan/fop stack, Z e T

Dari komponen di atas bisa kita lihat:

definisi untuk: Q, S, S, F sama dengan yang ada pada finite state

automata;

tupel baru di situ adalah: T dan Z yang berhubungan dengan stack;

A memiliki kemiripan dengan δ pada finite state automata, dengan

beberapa perbedaan (akan dijelaskan nanti).

Push down automata bisa pula dianggap seperti finite state automata yang

dilengkapi stack. Sebuah push down automata yang menerima suatu input, selain

bisa berpindah state juga bisa melakukan operasi pada stack. Kondisi/konfigurasi

push down automata pada suatu saat akan dinyatakan dengan state dan stack.

Pada push down automata terdapat dua jenis transisi (D). Yang pertama

memakai suatu simbol input. Bergantung pada simbol input, simbol pada top

stack, dan state, terdapat sejumlah pilihan yang mungkin. Setiap pilihan terdiri

dari state berikutnya dan simbol-simbol (bisa satu, beberapa, atau kosong) untuk

mengganti simbol pada top stack. Penggantian simbol pada top stack bisa berupa

push, untuk satu atau beberapa simbol, bisa berupa pop, untuk simbol kosong.

Setelah membuat pilihan, kemudian push down automata membaca simbol

input berikutnya.

Page 74: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Jenis transisi kedua biasa disebut dengan transisi ε, mirip yang pertama,

kecuali dilakukan tanpa membaca simbol input. Transisi ini memungkinkan push

down automata memanipulasi isi stack atau berpindah state tanpa membaca

simbol input.

Bahasa yang diterima oleh suatu push down automata bisa berupa

himpunan semua input, yang mana urutan pergerakannya bisa menyebabkan push

down automata mengosongkan stack. Push down automata ini bisa disebut

sebagai PDA yang melakukan penerimaan dengan stack kosong atau PDA null

stack. Cara lain adalah melakukan mekanisme seperti bagaimana otomata

berhingga menerima input, yaitu dengan menentukan satu atau beberapa state

akhir, dan bahasa yang diterima adalah himpunan semua input yang pilihan

transisinya menyebabkan push down automata mencapai state akhir, biasa

disebut PDA final state.

Contoh sebuah PDA:

Q = {q1, q2}

Σ = {a, b}

Γ = {A, B, Z)

S = q1

Z = Z

F = {q2}

PDA tersebut memiliki fungsi transisi sebagai berikut.

A(qi,ε ,Z) = {(q2, Z)}

A(ql, a, Z) = {(q1, AZ))

A(q1, b1 Z) = {(q1 BZ)}

A(q1, a, A) = {(q1, AA)}

A(q1, b, A) = {(q1, ε)}

A(q1, a, B) = {(q1, ε)}

A(q1, b, B) = {(q1, BB)}

Page 75: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

Kita bisa membaca fungsi transisi tersebut sebagai berikut.

(q1, a, Z) = {(q1, AZ)}

mesin dengan konfigurasi:

state q1 dan top-stack Z membaca input 'a'

konfigurasi menjadi:

state q., push A ke stack, A menjadi top-stack

(q1, b, A) = {ql, ε)}

mesin dengan konfigurasi:

state q1 dan top-stack A membaca input ‘b’

konfigurasi menjadi:

state q,, A di pop, elemen di bawah A menjadi top-stack

(q1, ε, Z) = {(q2, Z)}

mesin dengan konfigurasi:

state q1 dan top-stack Z, serta tanpa membaca input (ε)

Z

A

Z

A

Z

Page 76: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

konfigurasi menjadi:

state q2, stack tidak berubah

Catatan:

Perhatikanlah kapan 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 satu symbol.

Misal ingin diketahui apakah string ‘abba’ diterima oleh PDA ini:

1. konfigurasi awal mesin: state qp top stack Z, membaca input 'a' fungsi

transisinya: (qt, a, Z) = {(q,, AZ)}

konfigurasi mesin menjadi: state q1, A di push

2. membaca input ‘b’

fungsi transisinya: (q1, b, A) = {(q1, e)}

konfigurasi mesin menjadi: state q1, top stack di pop

3. membaca input 'b'

fungsi transisinya: (q1, b, Z) = {(q1, BZ)} konfigurasi

mesin menjadi: state q1, B di push

Z

Z

A

Z

Z

B

Z

Page 77: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

4. membaca input 'a'

fungsi transisinya: (q1, a, B) = {(q1, ε)} konfigurasi mesin

menjadi: state q1 top stack di pop

5. semua input sudah selesai dibaca fungsi transisinya: A(q1, ε, Z) = {(q2, Z)}

konfigurasi mesin menjadi: state q2

state q2 berada dalam F (final state), maka 'abba' diterima oleh PDA itu

Dapat kita lihat bahwa push down automata di atas termasuk jenis push

down automata yang melakukan penerimaan dengan mencapai state akhir.

Sekarang kita lihat contoh untuk push down automata yang melakukan

penerimaan dengan jalan stack kosong. Konfigurasi PDA:

Q = (q1, q2)

Σ = {0, 1, 2}

Γ = {Z, B, G}

S = q2

Z = Z

F = Ø

Catatan:

Perhatikan untuk push down automata menerima dengan stack kosong maka

himpunan state akhir dinyatakan sebagai Ø.

Z

Z

Page 78: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

(q1, 0, Z) = {q1, BZ)}

(q1, 0, B) = {q1, BB)}

(q1, 0, G) = {q1, BG)}

(q1, 2, Z) = {q2, Z)}

(q1, 2, B) = {q2, B)}

(q1, 2, G) = {q2, G)}

(q2, 0, B) = {q2, ε)}

(q2, ε, Z) = {q2, ε)}

(q1, 1, B) = {q1, GZ)}

(q1, 1, G) = {q1, GB)}

(q1, 1, G) = {q1, GG)}

(q1, 1, G) = {q2, ε)}

Misalnya ingin diketahui apakah string '020' diterima oleh PDA ini:

1. konfigurasi awal mesin: state q1, top stack Z, menerima input '0' fungsi

transisinya: (q1, 0, Z) = {(q1, BZ)}

konfigurasi mesin menjadi: state q1B di push

2. membaca input '2'

fungsi transisinya: (q1, 2, B) = {(q2, B)}

konfigurasi mesin menjadi: state q2, stack tetap

Z

B

Z

B

Z

Page 79: Buku Automata - Bertha

Bertha MW Hutajulu

Buku Teori Bahasa dan Otomata

3. membaca input '0'

fungsi transisinya: (q2, 0, B) = {(q2, e)} konfigurasi mesin

menjadi: state q2, B di pop

4. tanpa membaca input (e)

fungsi transisinya: (q2> ε, Z) = {(q2, e)} konfigurasi mesin

menjadi: state q2> Z di pop Stack kosong.

Semua input sudah selesai dibaca. Stack kosong, berarti string tersebut

diterima oleh push down automata.

----- o O o -----

B