PENDAHULUAN
1.1 Pendahuluan
Ilmu komputer memiliki dua komponen utama: pertama, model
dan gagasan mendasar mengenai komputasi, kedua, teknik rekayasa untuk
perancangan sistem komputasi, meliputi perangkat keras dan perangkat
lunak, khususnya penerapan rancangan dari teori. Teori Bahasa dan
Otomata merupakan bagian pertama. Sebuah simbol adalah suatu entitas
abstrak yang tidak kita definisikan secara formal. Huruf dan digit adalah
contoh dari simbol yang sering dipakai. Sebuah string adalah suatu deretan
berhingga dari simbol-simbol. Sebagai contoh, ‘S’,’T’,’U’ adalah simbol-
simbol, dan ‘abcd’ adalah suatu string. Dalam tata bahasa bebas konteks
(context free grammar), selanjutnya kita sebut sebagai CFG, tidak terdapat
pembatasan hasil produksinya. Batasannya hanyalah ruas kiri adalah
sebuah simbol variabel. Dalam tata bahasa bebas konteks linier kanan
memiliki aturan dasar yaitu tata bahasa bebas konteks adalah ‘Linier’, jika
setiap produksi punya maksimal satu non terminal disebelah kanan.
Sedangkan tata bahasa bebas konteks adalah ‘Linier Kanan’, jika Linier
dan produksi dengan non terminal di sebelah kanan berakhir dengan non
terminal tersebut. Untuk mengoptimisasikan tata bahasa bebas konteks
linier kanan, maka diperlukan pengecekan penginputan produksi dari tata
bahasa tersebut, jika penginputan sesuai dengan aturan dari tata bahasa
bebas konteks linier kanan, maka secara otomatis kita dapat menemukan
Non-deterministic finite automata (NFA) atau tidak deterministik.
Dikatakan tidak deterministik karena setiap satu state mempunyai dua
transisi, untuk satu simbol input. Atau state yang keluar dari transisi
edgenya sama. Setelah NFA maka sebelum optimisasi kita perlu
melakukan Deterministic Finite Automata (DFA) atau deterministik.
Dikatakan deterministik karena setiap state ada maksimal satu transisi
untuk satu simbol input dan tidak punya transisi ε (epsilon). Jika DFAnya
1-1
berhasil dikerjakan maka optimisasi untuk hasil optimal. Dikatakan
optimal karena jumlah state menjadi lebih sedikit dari jumlah state NFA.
Oleh sebab itu, untuk melakukan optimisasi tata bahasa, dapat dilakukan
dengan tiga tahap yaitu pertama, membandingkan state akhir dan bukan
state akhir. Kedua, membedakan state dengan cara dua state sebelah kanan
dan dua state sebelah kiri harus mempunyai transisi untuk satu simbol
input yang sama. Ketiga, membedakan state yang memiliki transisi untuk
simbol input dan state yang tidak memiliki transisi untuk simbol input.
Jika optimisasi menghasilkan hasil yang optimal maka visualisasi gambar
sama dengan DFA.
1-2
b. Huruf a-z untuk terminal.
c. Produksi disebelah kiri selalu dimulai dengan non terminal
atau huruf besar.
d. Produksi disebelah kanan hanya ada terminal atau huruf
kecil dan non terminal atau huruf besar.
e. Tombol keyboard / untuk melanjutkan penginputan
produksi
f. Tombol keyboard @ untuk ε atau epsilon
g. Produksi tata bahasa S → aSS, T → aTaTa, R → RR
disebut tidak linier kanan.
h. Produksi tata bahasa S → aS, T → bbb disebut linier kanan
i. Jika produksi yang diinputkan tidak linier kanan maka
untuk tidak dapat melakukan visualisasi dari NFA, DFA
dan optimisasi
(3). Jika produksi yang diinputkan linier kanan maka secara otomatis
kita dapat menemukan NFA. NFA dibatasi dengan :
a. State awal
b. State akhir
c. Simbol input berupa transisi terminal dari produksi
d. Label dalam state berupa angka
e. Disimpan dalam database berupa tabel
f. Visualisasi dalam gambar
(4). Sesudah NFA ditampilkan, maka dilanjutkan dengan DFA. DFA
dibatasi dengan :
a. State awal
b. State akhir
c. Simbol input berupa transisi terminal dari produksi
d. Label dalam state berupa huruf
e. Disimpan dalam database berupa tabel
f. Visualisasi dalam gambar
1-3
(5). Apabila tata bahasa bebas konteks linier kanan, ditemukan NFA,
kemudian DFA maka kita mengoptimasi tata bahasa ini.
Optimisasi dibatasi dengan :
a. Menggunakan tabel dimana terdapat kolom dan baris.
Didalam kolom dan baris terdapat huruf besar yang
merupakan hasil dari state pada DFA
b. Pada diagonal tabel ditulis s atau sama
c. Tiga aturan pada optimisasi, yang merubah s atau sama
menjadi b atau beda.
d. Jika hasil optimisasi pada tabel menunjukkan bahwa tidak
ada s atau sama diluar diagonal maka optimal.
e. Optimal dapat dilihat pada visualisasi dalam gambar DFA.
1-4
Studi pustaka dilakukan dengan mencari, mengumpulkan, dan
mempelajari referensi-referensi yang relevan dengan pemrograman
yang menggunakan Visual Basic, sehingga dapat mengkonversi
NFA ke DFA, dan mengoptimisasikan.
(2). Pembuatan program
Langkah-langkah yang ditempuh adalah :
a. Mempelajari Inputan untuk setiap tata bahasa bebas konteks,
yang disebut sebagai produksi, yang dibatasi dengan aturan-
aturan tertentu dalam penginputannya.
b. Mempelajari pengecekan terhadap produksi tata bahasa bebas
konteks linier kanan. NFA, DFA dan optimisasi linier kanan
yang divisualisasikan dalam gambar, dengan aturannya
masing-masing.
c. Mempelajari dan menerapkan permasalahan tersebut ke dalam
bahasa pemrograman dengan metode yang telah dipilih.
d. Perancangan dan pembuatan program.
e. Menguji dan melakukan perbaikan program.
f. Menyusun laporan tugas akhir.
(3). Penyusunan laporan akhir
Laporan akhir disusun setelah tahap pengujian dan
perbaikan program. Adapun laporan akan berisi uraian secara rinci
tentang tahap-tahap penelitian.
1-5
kanan maka NFA disimpan dalam database berupa tabel, dan akan
divisualisasikan dalam gambar. Setelah NFA divisualisasikan, maka
DFA juga disimpan dalam database berupa tabel dan divisualisasikan
dalam gambar. Setelah pengecekan, NFA dan DFA, maka dilakukan
optimisasi tata bahasa bebas konteks linier kanan, yang
divisualisasikan juga dalam gambar.
1-6
Bagian terakhir dari laporan tugas akhir ini adalah Bab V sebagai
Penutup, yang akan terdiri atas kesimpulan dari hasil implementasi
program optimisasi tata bahasa bebas konteks linier kanan serta saran-
saran bagi pengembangan program di waktu yang akan datang.
1-7