A. Automata.
Kata “automata” adalah bentuk jamak dari “automaton” yang berarti self-acting. Istilah
ini sudah dikenal sejak abad 17, yaitu ketika ditemukan jam mekanik. Di bidang matematika,
teori automata adalah teori tentang mesin abstrak, yaitu mesin sekuensial yang menerima
masukan dan keluaran dalam bentuk disktrit.
Status q0 diberi panah yang menunjukan status awal. Pada status ini, belum ada
koin yang dimasukan. Bila pembeli memasukan sebuah koin Rp 5, status mesin
sekarang berpindah ke q5 . bila status awal pembeli memasukan dua buah koin Rp 5,
status sistem berpindah ke status q5 lalu status q10. Jadi, pada setiap koin uang yang
dimasukan oleh pembeli, mesin menjumlahkan uang yang sudah dimasukan sampai
berjumlah Rp 15 atau lebih. Kiranya jelas, ketika mesin berada pada status q0, q5, dan
q10, tidak akan terjadi apa-apa meskipun tombol kita tekan; mesin akan
mengeluarkan sepotong coklat hanya bila kita sampai pada simpul q15. Status q15
dinyatakan dengan dua buah lingkaran yang menyatakan status akhir, yang berarti
jumlah uang yang dimasukkan untuk membeli coklat sudah mencukupi dan coklat
yang dipilih keluar dari mesin jaja. Mesin jaja ini menerima rangkaian masukan
senilai Rp 15 atau lebih, yaitu (5,5,5), (5, 10), (10, 5), (10, 10), (5,5,5,5), (5, 10, 1,10,
10, 5) dan seterusnya.
p p p
q0 q5 q10 q15
Dari contoh mesin jaja diatas, dapat dilihat bahwa kelakuan mesin bergantung pada
rangkaian masukan yang diterimanya. Untuk setiap masukan yang diterima, sistem
berpindah dari statusnya sekarang ke status berikutnya. Hal ini menunjukkan sifat
sekuensial dari mesin. Perilaku mesin automata seperti mesin jaja inilah yang
memodelkan dengan FSA.
C. Elemen FSA.
Setiap FSA memiliki :
1. Himpunan berhingga (finite) status (state),
2. Himpunan berhingga masukan tombol,
3. Fungsi transisi yang memberikan status berikutnya untuk setiap pasang status dan
sebuah simbol masukan. Untuk setiap simbol masukan terdapat tepat satu buah
transisi yang keluar dari tiap status (mungkin saja kembali ke status itu sendiri).
Satu buah status, biasanya dinyatakan dengan q0, adalah status awal (initial
state), yaitu status di FSA mulai. Beberapa status dinyatakan sebagai status akhir
(final state) atau status yang menerima (accepting state).
Model mesin FSA diperlihatkan pada gambar 4.2. Pita masukan berisi rangkaian
simbol yang dibaca oleh mesin. Kendali sistem (seperti berpindah status setelah
membaca suatu masukan) dilakukan oleh Finite State Control.
pita masukan
0 1 1 0 0 1 0
Finite State
Control
Gambar 4.2 Model mesin FSA
Beberapa FSA ada yang menghasilkan simbol-simbol keluaran, ada pula yang
tidak. Karena itu ada dua jenis FSA :
1. FSA tanpa keluaran. FSA jenis ini berfungsi untuk mengenal (recognize) string
(rangkaian simbol) yang dibaca. Sistem memberikan indikasi biner yang
menyatakan string masukan diterima (accepted) atau ditolak.
2. FSA dengan keluaran. FSA jenis ini tidak hanya mengenali string, tetapi juga
menghasilkan keluaran untuk setiap simbol masukan yang dibaca. Model FSA
dengan keluaran ditunjukkan pada Gambar 4.3. Pita keluaran menampung
keluaran yang diberikan oleh mesin.
pita masukan
0 1 1 0 0 1 0
Finite State
Control
0 1 1 0 0 1 0
pita keluaran
Pada bab ini kita hanya meninjau FSA tanpa keluaran. Sifat-sifat mesin FSA
tanpa keluaran adalah sebagai berikut :
1. Pita masukan (input tape) berisi rangkaian simbol (string) yang berasal dari
himpunan simbol alfabet.
2. Setiap kali membaca sebuah simbol, posisi read head akan berada pada simbol
berikutnya.
3. Setiap saat, FSA berada pada satu status tertentu.
4. Pita masukan bersifat read only (hanya bias dibaca).
Untuk setiap mesin FSA, diagram transisi dinyatakan sebagai gaf berarah.
Simpul pada graf menyatakan status mesin FSA. Sisi pada graf menyatakan transisi
dari status p ke status q terhadap simbol masukan yang dibaca, a. setiap sisi ini
dilabeli dengan simbol masukan yang dibaca dari pita. FSA dikatakan menerima
string x jika runtutan transisi yang bersesuaian dengan simbol x bermula dari status
awal dan berakhir di status akhir. Gambar 4.4. adalah contoh sebuah diagram
transisi. Status awal adalah q0, sedangkan status akhir juga q0.
Ada dua macam FSA :
1. Deterministic Finite Automata (DFA)
2. Nondeterministic Finte Automata (NFA)
Pada DFA, untuk satu simbol masukan, hanya ada sebuah transisi dari suatu
status ke status yang lain. Sedangkan pada NFA, dimungkinkan 0 atau lebih dari satu
buah transisi untuk satu simbol masukan ang sama.
1 1 0
q1 q3 q4
0
1 0 1
0 1
start
0
q0 0
q2
D. Pohon Penurunan.
Pohon penurunan dari tata bahasa G = (Vn, Vt, P, S) adalah sebuah pohon yang
memiliki karakteristik sebagai berikut :
1. Akarnya (root node) adalah simbol awal S
2. Jika suatu simpul (node) merupakan simbol non terminal (misalnya X) maka
simpul-simpul A1, A2, A3, …, An adalah anak-anak dari simpul X jika terdapat
aturan produksi berbentuk X A1A2A3An di mana A1,A2,A3, …,An (Vn U
Vt)
3. Jika suatu simpul merupakan simbol non terminal (misalnya X) dan simpul
tersebut hanya mempunyai satu anak yaitu , maka X harus merupakan
salah satu anggota dari aturan produksi.
N
N
D
N D
N
D
1
N D
N D 1
3
N D
3
D 2
D 2
2
Perhatikanlah bahwa akar dari pohon di atas adalah N, yaitu simbol awal dari
tata bahasa G1. Simpul-simpul daunnya adalah 2, 2, 3, dan 1 yang jelas merupakan
anggota dari simbol terminal. Anak-anak dari simpul N adalah simpul N dan D
karena terdapat aturan produksi dalam P dari tata bahasa G1 yang berbentuk N
ND! Pohon penurunan pada gambar 4.5 adalah pohon penurunan untuk kalimat
2231. Hal ini bisa kita lihat dengan cara mengkatenasi seluruh simpul daun mulai
dari kiri ke kanan.
Jika kita mengetahui langkah penurunan dari suatu kalimat maka kita juga dapat
membuat pohon penurunan untuk kalimat tersebut dengan cara sebagai berikut : Kita
dapat menuliskan langkah penurunan kalimat 2231, yaitu
N => ND => NDD => NDDD => DDDD => 2DDD => 22DD => 223D => 2231
Untuk membuat pohon penurunan kalimat 2231, pertama-tama kita gambarkan
simpul akar yaitu N :
N
Kemudian, dari langkah penurunan N => ND kita tahu bahwa N diturunkan menjadi
ND menggunakan aturan produksi nomor 2 sehingga kita peroleh :
N
N N
D
N
Kemudian, dari langkah penurunan ND => NDD kita tahu bahwa N diturunkan
kembali menjadi ND menggunakan aturan produksi nomor 2 sehingga kita peroleh :
N
N
D
N
N
D
N
Dari langkah penurunan NDD => NDDD kita tahu bahwa N diturunkan menjadi ND
kembali menggunakan aturan nomor 2 sehingga kita peroleh :
N
N
D
N D
N
D
N D
N D
N D
Dari langkah penurunan NDDD => DDDD kita tahu bahwa N diturunkan menjadi D
menggunakan aturan nomor 1 sehingga kita peroleh :
N
N
D
N D
N
D
N D
N D
N
D
D
D
Dari langkah penurunan DDDD => 2DDD kita tahu bahwa D yang pertama
diturunkan menjadi 2 menggunakan aturan nomor 3 sehingga kita peroleh :
N
N
N
D
N D
N
D
N D
N D
N D
D
D
2
N
N
D
N D
N
D
1
N D
N D 1
3
N D
3
D 2
D 2
2
N
N
D
N D
N
D
1
N D
N D 1
3
N D
3
D 2
D 2
2
N
N
D
N D
N
D
1
N D
N D 1
3
N D
3
D 2
D 2
2
Langkah penurunan : “N 2 => ND => NDD => NDDD”. Dengan cara yang sama
seperti di atas, keadaan pohon sekarang :
N
N
N
D
N D
N
D
1
N D
N D 1
3
N D
3
D 2
D 2
2
2
Langkah penurunan : “N => ND => NDD => NDDD => DDDD”. Dengan cara yang
sama seperti di atas, keadaan pohon sekarang : Demikian seterusnya sampai seluruh
simpul yang merupakan daun dari pohon tersebut telah ditandai.
Langkah penurunan yang dihasilkan dari cara di atas adalah langkah penurunan dari
kiri ke kanan (leftmost derivation) karena kita selalu memilih simbol non terminal
paling kiri untuk diturunkan. Selain langkah penurunan dari kiri ke kanan, terdapat
pula langkah penurunan dari kanan ke kiri. Langkah penurunan dari kiri ke kanan
atau dari kanan ke kiri lebih banyak digunakan dalam metode parsing karena
sistematis.
4.7. Ringkasan
FSA adalah sebuah mesin hipotetis untuk mengidentifikasi bahasa reguler.
Terdapat tiga metode untuk membuat FSA berdasarkan ekspresi reguler yaitu metode
hafalan, metode NFA, dan metode transisi . Jika ekspresi reguler cukup sederhana,
kita bisa menghafalkan DFA yang ekivalen. Jika ekspresi reguler agak rumit, kita
harus mengkonstruksi NFA terlebih dahulu, kemudian mengubahnya menjadi DFSA.
Jika ekspresi reguler sangat rumit, kita harus mengkonstruksi FSA bertransisi ,
kemudian mengubah menjadi NFA, kemudian mengubahnya lagi menjadi DFA. Jika
kita sulit mengkonstruksi ekspresi reguler untuk bahasa tertentu, maka DFA harus
dibuat menggunakan metode analisis yang lain.
Terdapat dua jenis tata bahasa reguler yaitu tata bahasa reguler linier kiri dan
tata bahasa reguler linier kanan. Perbedaan antara tata bahasa reguler linier kiri
dengan linier kanan terletak pada posisi simbol non terminal dalam aturan
produksinya. Simbol non terminal pada tata bahasa linier kiri berada pada posisi
paling kiri sedangkan pada tata bahasa linier kanan berada pada posisi paling kanan.
Untuk setiap tata bahasa reguler terdapat ekspresi reguler yang ekivalen. Demikian
juga sebaliknya.