Teori Bahasa Automata Dan Komputasi
Teori Bahasa Automata Dan Komputasi
Teori Bahasa Automata Dan Komputasi
TEORI BAHASA AUTOMATA DAN KOMPUTASI Komputasi merupakan penegtahuan yang sangat penting karena membahas mengenai bagaimana cara pembuatan mesin yang mampu melakukan proses proses intel Ilmu informatika / komputer memiliki dua komponen utama, yaitu : 1. Model dan gagasan dasar mengenai komputer 2. Teknik Rekayasa untuk perancangan sistem komputer meliputi perangkat keras (hardware) dan perangkat lunak (software). Teori bahasa otomata termasuk dalam bagian pertama dari dua komponen utama ilmu komputer diatas. Teori bahasa otomata diterapkan pada perancangan digit, pembuatan bahasa pemrograman dan kompilator. Model yang digunakan pada teori otomata adalah model mesin stste (state machine model) atau model transisi state (state transition model) . Terdapat tiga topik utama pada teori otomata, yaitu : 1. Finite automata (FA) atau disebut finite state automata (FSA). FSA terbagi menjadi dua yaitu : deterministic automata (DFA) dan nondeterministic automata (NDFA). Finite automata tidak memiliki memori sementara, contoh sistem yang meniru otomata ini adalah vending machine. 2. Pushdown automata (PDA) terbagi menjadi dua yaitu : deterministic pushdown automata (DPDA atau DPA) dan nondeterministic automata (NDPA). Pushdown automata memiliki memori sementara dengan mekanisme LIFO (last in, firs out, yaitu mekanisme stack). Contoh otomata ini adalh bahasa pemrograman yang memiliki kemampuan komputasi menengah. 3. Turing machine (TM) memiliki memori dengan mekanisme pengaksesan acak (random access memory). Contoh otomata ini adalah algoritma yang memiliki kaempuhan komputasi paling tinggi. Gagasan dasar finite automata adalah sangat umum yaitu sistem pada satu saat berada da salah satu state dari jumlah stste, bergerak diantara state state itu secara dapat diprediksi yang bergantung pada masukan ke sistem. II. MATEMATIKA DASAR Himpunan merupakan kumpulan dari elemen elemen. Notasi yang digunakan adalah yang berarti elemen, sedangkan yang bukan merupakan himpunan, notasi : . Himpunan juga tidak memperhatikan urutan. Misalnya : Z = {1,2,3} X = {1,2,4}
Y = {4,2,1} Maka : 1X 3X X=Y XZ Himpunan bagian (subset) : A B ; A himpunan bagian dari B bila tiap elemen A adalah elemen B A B ; A himpunan bilangan asli dari B bila tiap elemen A adalah elemen B, tapi himpunan A tidak sama dengan B atau bila A B dan A B Misalnya : P = {1,2,3} Q = {1,2,3,4} R = {1,2,3} Maka : Dapat dilihat P Q atau P Q Perhatikan untuk P R dan R P maka didapatkan P = R atau R = P Himpunan kosong adalah himpunan yang tidak mempunyai anggota. Himpunan selalu mempunyai himpunan kosong sebagai himpunan bagiannya. Himpunan kosong dinotasikan dengan . Terdapat tiga operasi himpunan yang dapat dianalogikan dengan operasi operasi aritmatika penjumlahan, perkalian dan pengurangan, operasi operasi tersebut adalah sebagai berikut : 1. Gabungan (union) dinyatakan dengan Misalnya : A = {1,2,3} B = {2,4} P=AB Maka P = {x | x A atau x B} Hasil P = {1,2,3,4} Operasi gabungan dianalogikan dengan penjumlahan, kadang dinotasikan sebagai berikut : A B, dengan A B atau A + B
2. Irisan (intersection) dinyatakan dengan Misalnya : A = {1,2,3} B = {2,4} P=AB Maka P = {x | x A dan x B} Hasil P = {2} Operasi irisan bias dianalogikan dengan perkalian, kadang dinotasikan sebagai berikut : A B, dengan A B atau A . B 3. Komplemen, komplemen dari suatu himpunan adalah semua elemen yang tidak menjadi elemen himpunan tersebut. Misalnya : A = {1,2,3} B = {2,4} C = {10,11} Maka A B = {1,3} BC= B A = {4} Relasi adalah aksi menghubungkan dua objek, satu objek dengan objek yang lainnya. Fungsi disebut sebagai pemetaan / transformasi. Fungsi f merupakan suatu jenis spesial dari relasi dimana pemetaan dilakukan ke satu dan hanya satu. Kita dapat menulis fungsi dengan menggunakan notatasi berikut : f : A B Graph adalah himpunan simpul yang dihubungkan dengan busur busur. Graph berisi dua tuple (V, E) yaitu kumpulan simpul V dan kumpulan busur E. Kita dapat mempunyai simpul tanpa busur, tetapi tidak ada busur tanpa simpul. Kita gambarkan simpul dengan lingkaran dan busur dengan garis yang mengfhubungkan lingkaran lingkaran tersebut Tree (pohon) merupakan graph terhubung tanpa sirkuit. Dalam sebuah tree, setiap pasang simpul terhubung hanya oleh satu lintasan. Ada bebrapa istilah khusus dalam tree sebagai berikut : Root/akar : suatu simpul tertinggi Leaf/daun : simpul yang tidak memiliki anak lagi Branch/cabang : simpul simpul selain daun III. DASAR TEORI BAHASA Simbol adalah suatu entitas abstrak yang tidak kita definisikan secara formal. Huruf dan digit adalah contoh dari simbol yang sering digunakan. Abjad (alphabet) adalah sebuah himpunan berhingga tak kosong dari simbol simbol, notasi : Misalnya : = {a,b,c,d,.. z}
a artinya a adalah sebuah simbol didalam 1 artinya 1 bukan sebuah simbol didalam String (untaian / kata) adalah suatu deret berhingga dari simbol simbol, sedangkan panjang string adalah jumlah simbol yang membentuk string tersebut. Jika a,b adalah simbol simbol maka abab adalah string. Maka panjang stringya adalah 4. Misalnya : diketahui ={a,b} maka string yang bisa terjadi adalah a, ab, aa, aaa, bbb, aab, dst String kosong adalah baris yang kosong dari simbol simbol, notasi : , didefinisikan panjangnya = 0 atau = 0. Bahasa (Language) adalah suatu kumpulan dari string. Kita dapat mempunyai sebuah bahasa yang tidak terdiri dari string string yaitu bahasa kosong, notasi : . Bahasa kosong berbeda dengan bahasa yang terdiri dari string kosong. Bahasa Universal (universal language) dari adalah bahasa yang terdiri dari semua string berdasarkan suatu abjad. Notasi : * Misalnya : Jika = {a}, Maka * = { ,a,aa,aaa,aaaa,} Untuk abjad apa saja, * bersifat tak berhingga karena abjad abjadnya tdk kosong. Bahasa dapat mempunyai karakteristik sebagai berikut : a. Finite (berhingga) b. Infinite (tak berhingga) Terdapat dua cara menspesifikan bagasa dimana memenuhi syarat tersebut yaitu : Grammar yaitu sistem pembangkit. Grammar lebih berfungsi untuk membangkitkan string yang akan memenuhi syarat syarat yang ditentukan bahasa. Bila kita hendak membuat pernyataan IF THEN bahasa pascal, maka kita harus mengikuti grammar IF THEN di bahasa pascal. Recognizer atau Finite Automata atau Otomata yaitu bila menggunakan prosedur yang saat diberikan masukan string berhingga akan berhenti dan menyatakan ya dengan sejumlah berhingga komputasi jika string tersebut merupakan elemen bahasa.
Translator adalah program yang membaca program yang ditulis dalam suatu bahasa (disebut source language = bahasa sumber) dan menterjemahkan ke suatu program target yang ekivalen dalam bahasa lain (disebut bahasa target). Translator untuk bahasa assembly disebut assembler. Transalator untuk bahasa tingkat tinggi disebut kompilator. Tata bahasa (grammar) bisa didefinisikan secara formal sebagai kumpulan dari himpunan himpunan variabel, simbol simbol terminal, simbol awal, yang dibatasi oleh atutan aturan produksi. Noam Chomsky melakukan penggolongan tingkat bahasa menjadi empat yang disebut Hirarki Chomsky, Penggolongan tersebut dapat 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 simbol variabel yang bila ada terletak di posisi paling kanan Bebas Konteks / Context Free / Tipe 2 Push Down Automata (PDA) berupa sebuah simbol variabel Context Sensitive / Tipe 1 Linier Bounded Automata | | | | Unrestricted / Phase Structure / Natural Language / Tipe 0 Mesin Turing Tidak ada batasan Catatan : Exp : T a dibaca T variabel menghasilkan a terminal E T | T + E dibaca E variabel menghasilkan T variabel atau T variabel T + E TATA BAHASA : TIPE O / UNRESTRICTED : Dimana tidak ada batasan pada aturan produksinya. Misalnya : Abc De CONTEXT SENSITIVE : panjang string pada ruas kiri panjang ruas kanan (| | | |) Misalnya : Ab DeF CD eF Kita ketahui |S| = 1, sedang || = 0, menurut aturan context sensitive aturan produksi itu tidak diperkenankan, tetapi disini kita buat suatu pengecualian, sehingga S dianggap memenuhi context sensitive grammar. Batasan context sensitive biasanya turut digunakan dalam proses analisisi semantic pada tahapan kompilasi BEBAS KONTEKS : batasannya bertambah lagi dengan ruas kiri haruslah tepat satu simbol variabel. Misalnya : B CDeFg D BcDe BAHASA REGULAR : batasannya bertambah dengan ruas kanan maksimal memiliki sebuah simbol variabel yang terletak dipaling kanan. Misalnya : A e A efg A efgH CD dibaca menghasilkan | dibaca atau Simbol terminal biasanya dinyatakan dengan huruf kecil Simbol non terminal / variabel biasanya dinyatakan dengan huruf besar/kapital
Ekspresi regular merupakan penyederhanaan dari bahasa bahasa regular. Arti dan notasi ekspresi regular adalah sebagai berikut : Notasi *, + , + atau , . * yaitu karakter asterisk artinya bias tidak muncul, bias juga muncul berhingga kali (0 s/d n) + yaitu penutup plus atau plus clouse artinya minimal muncul satu kali (1 s/d n) + atau yaitu union atau gabungan Berarti concatenation (perangkaian) biasanya bias dihilangkan, misalnya a.b bias ditulis ab.
Misalnya : 1. ER : ab*cc String yang bisa dibangkitkan / muncul = acc, abcc, abbcc, abbbcc, abbbbcc (b bisa tidak muncul atau muncul sekali hingga berkali kali) 2. ER : 010+ String yang bisa dibangkitkan / muncul = 010, 0100, 01000, 010000 (0 minimal muncul sekali hingga berkali kali) 3. ER : (a b) String yang bisa dibangkitkan / muncul = a, b 4. ER : (a b)* String yang bisa dibangkitkan / muncul = a, b, aa, bb, aaa, bbb, ab, abb, aab 5. ER : a* b* String yang bisa dibangkitkan / muncul = a, aa, aaa, b, bb, bbb 6. ER : 01* + 0 String yang bisa dibangkitkan / muncul = 0, 01,011, 0111, 01111 Finite otomata adalah model matematika yang memiliki fungsi fungsi dari komputer digital yaitu menerima input dan menghasilkan output. Otomata merupakan suatu sistem yang terdiri atas sejumlah berhingga state. Input pada mesin otomata dianggap sebagai bahasa yang harus dikenali oleh mesin. Selanjutnya mesin otomata membuat keputusan membuat keputusan yang mengidentifikasikan apakah input ini diterima atau tidak, sehingga mesin otomata dapat dipakai untuk menghasilkan bahasa yang aturannya ditentukan oleh bahasa tersebut. Contoh sistem dengan state berhingga adalah sebagai berikut : Sistem elevator/lift Mesin untuk mengeluarkan minuman kaleng (vending machine) Pengatur lampu lalu lintas ( Trafic light regulator) dll.
Finite automata adalah recognizer yang paling sederhana. Pada model recognizer, recognizer membaca string sebagai masukan dan mengeluarkan : YA jika string tersebut termasuk didalam bahasa
TIDAK jika sstring masukan tidak termasuk didalam bahasa. Bila mesin otomata diatas mendapatkan untaian / string input : ada diterima adu diterima add ditolak Sebuah string input diterima bila mencapai state akhir (final state) yang digambarkan dengan lingkaran ganda Mesin otomata diatas memiliki 6 state yaitu {q0,q1,q2,q3,q4,q5} State awal = {q0} State akhir ={q3, q4} Himpunan untai input = {a,d,u}
Finite State Automata (otomata dengan state berhingga) merupakan suatu model matematika dari suatu sistem yang menerima input dan menghasilkan output. Memiliki state yang banyak berhingga dan dapat berpindah pindah dari suatu state ke state lain. Perubahan state ini dinyatakan dengan fungsi transisi. FSA tidak memiliki tempat penyimpanan sehingga kemampuan mengingatnya terbatas Keterangan : Lingkaran menyetakan state/kedudukan Label pada lingkaran adalah nama state tersebut Busur menyatakan transisi yaitu perpindahan kedudukan/state Lingkaran didahului sebuah busur tanpa label menyatakan state awal Lingkaran ganda menyatakan state akhir/final
Secara formal FSA dinyatakan dengan 5 tuple atau M = (Q, , ,S,F) dimana : Q = Himpunan state/kedudukan = Abjad, himpunan symbol input/masukan = Fungsi transisi, =Q X S = State awal / kedudujan awal, S Q F = Himpunan state akhir, F Q Dari gambar diatas maka : Q = {genap, ganjil} = {0,1} S = genap F = {ganjil}
Fungsi transisi :
(genap,0) = genap (genap,1) = ganjil (ganjil,0) = ganjil (ganjil,1) = genap Tabel transisi : 01 genap genap Ganjil Ganjil ganjil genap
Jika mesin mendapat input 1101 urutan state menjadi : Genap 1 ganjil 1 genap 0 genap 1 ganjil, maka diterima oleh mesin Jika mesin mendapat input 101 urutan state menjadi : Genap 1 ganjil 0 ganjil 1 genap, maka ditolak oleh mesin FSA dibagi menjadi dua yaitu : DFA (Deterministic Finite Automata) NDFA/NFA (Non Deterministic Finite Automata