A. PENGANTAR
Teori komputasi adalah cabang ilmu komputer teoritis. Teori koputasi berkaitan
dengan studi bagaimana persoalan (problem) dapat diselesaikan pada sebuah model
dengan menggunakan algoritma. Model tersebut dinamakan modul komputasi. Salah satu
bagian dari teori komputasi ialah teori otomata(automata theory). Teori otomata mengacu
pada defenisi dan sifat- sifat model komputasi.
Berikut ini adalah beberapa pengertian dasar istilah yang sering digunakan dalam
teori komputasi
Simbol adalah sebuah entitas abstrak (seperti halnya pengertian titik dalam geometri).
Sebuah huruf atau sebuah angka adalah contoh simbol.
String adalah deretan terbatas (finite) simbol-simbol. Sebagai contoh, jika a, b, dan c
adalah tiga buah simbol maka abcb adalah sebuah string yang dibangun dari ketiga
simbol tersebut.
Jika u adalah sebuah string maka panjang string dinyatakan sebagai |u| dan
didefinisikan sebagai cacahan (banyaknya) simbol yang menyusun string tersebut.
Sebagai contoh, jika u = abcb maka |u|= 4.
String hampa adalah sebuah string dengan nol buah simbol. String hampa dinyatakan
dengan simbol ε (atau ^) sehingga |ε|= 0. String hampa dapat dipandang sebagai
simbol hampa karena keduanya tersusun dari nol buah simbol.
Alfabet adalah hinpunan hingga (finite set) simbol-simbol
B. SEJARAH OTOMATA
Seorang ilmuwan, David Hilbert dalam teori sistem logika matematika atau formal
telah mencoba menciptakan algoritma umum untuk pembuktian (seluruh) persoalan
matematika secara otomatis, yaitu mampu menentukan salah benarnya sembarang prosisi
matematika.. Tahun 1931, KurtGdel mempublikasikan teori ketidaklengkapan dimana
membuktikan prosedur/algoritma yang dikehendaki David Hilbert tersebut tidak akan
pernah ada. KurtGdel membangun rumus di kalkulus predikat yang diterapkan pada
bilangan bulat yang memiliki pernyataan-pernyataan definisi yang tidak dapat dibuktikan
maupun dibantah di dalam sistem logika yang mungkin dibangun manusia.
Sekitar tahun 1950-an, Noam Chomsky menciptakan model matematika sebagai
sarana untuk mendeskripsikan bahasa. Noam Chomsky mengemukakan perangkat format
disebut grammar untuk memodelkan properti-properti bahasa. Tata bahasa (grammer) bisa
didefinisikan secara, formal sebagai kumpulan dari himpunan-himpunan variabel, symbol-
simbol, terminal, simbol awal, yang dibatasi oleh aturan-aturan produksi
C. OTOMATA (AUTOMATA)
Otomata adalah mesin abstrak yang dapat mengenali (recognize), menerima (accept) dan
membangkitkan (generate) sebuah kalimat dalam bahasa tertentu. Otomata merupakan
mesin yang sekuensial (otomatis), yang menerima input dan mengeluarkan output,
keduanya dalam bentuk diskrit. Adapun sifat – sifat Otomata sebagai berikut :
1. Kelakuan mesin bergantung pada rangkaian masukan yang diterima mesin tersebut.
2. Setiap saat, mesin dapat berada pada satu status tertentu dan dapat berpindah ke status
baru karena adanya perubahan input.
3. Rangkaian input(diskrit) pada mesin otomata dapat dianggap sebagai bahasa yang harus
“dikenali” oleh sebuah otomata. Setelah pembacaan input selesai, mesin otomata
kemudian membuat “keputusan”.
– Jika switch berada pada state “off” dan setelah tombol ditekan maka state
berubah menjadi “on”
– Jika switch berada pada state “on” dan setelah tombol ditekan maka state
berubah menjadi “off”.
Eksekusi
Pada gambar di atas, 𝑞1 menuju 𝑞1 operasinya 𝑙𝑎𝑚𝑑𝑎 pada 𝑡𝑜𝑝 𝑠𝑡𝑎𝑐𝑘 di 𝑝𝑜𝑝
dan di 𝑝𝑢𝑠ℎ 𝑎, maka kondisi 𝑠𝑡𝑎𝑐𝑘 berisi 𝑎 𝑎 $ .
Eksekusi
Cek inputan 𝑎 pada state
Pada gambar di atas, 𝑞1 menuju 𝑞1 operasinya 𝑙𝑎𝑚𝑑𝑎 pada 𝑡𝑜𝑝 𝑠𝑡𝑎𝑐𝑘 di 𝑝𝑜𝑝
dan di 𝑝𝑢𝑠ℎ 𝑎, maka kondisi 𝑠𝑡𝑎𝑐𝑘 berisi 𝑎 𝑎 𝑎 $ .
Eksekusi
Pada gambar di atas, 𝑞1 menuju 𝑞2 operasinya 𝑎 pada 𝑡𝑜𝑝 𝑠𝑡𝑎𝑐𝑘 di 𝑝𝑜𝑝 dan
di 𝑝𝑢𝑠ℎ 𝑙𝑎𝑚𝑑𝑎, maka kondisi 𝑠𝑡𝑎𝑐𝑘 berisi 𝑎 𝑎 $ .
Eksekusi
Pada gambar di atas, 𝑞2 menuju 𝑞2 operasinya 𝑎 pada 𝑡𝑜𝑝 𝑠𝑡𝑎𝑐𝑘 di 𝑝𝑜𝑝 dan
di 𝑝𝑢𝑠ℎ 𝑙𝑎𝑚𝑑𝑎, maka kondisi 𝑠𝑡𝑎𝑐𝑘 berisi $ atau 𝑠𝑡𝑎𝑐𝑘 𝑎𝑤𝑎𝑙
Eksekusi pada 𝑠𝑡𝑎𝑡𝑒 𝑞2 𝑚𝑒𝑛𝑢𝑗𝑢 𝑞3
pada eksekusi 𝑞2 𝑚𝑒𝑛𝑢𝑗𝑢 𝑞3 terdapat operasi 𝑙𝑎𝑚𝑑𝑎 maka langsung
melakukan operasi $ pada 𝑠𝑡𝑎𝑐𝑘 di 𝑝𝑜𝑝 dan di 𝑝𝑢𝑠ℎ $, maka isi 𝑠𝑡𝑎𝑐𝑘 menjadi
𝑠𝑡𝑎𝑐𝑘 𝑎𝑤𝑎𝑙, $.
PDA di atas dengan 𝑖𝑛𝑝𝑢𝑡𝑎𝑛 = {𝑎 𝑎 𝑎 𝑏 𝑏 𝑏} dapat terselesaikan dan
menuju ke 𝑠𝑡𝑎𝑡𝑒 𝑎𝑘ℎ𝑖𝑟, maka inputan di terima.
D. Bahasa
Bahasa adalah kumpulan kalimat yang mengandung arti.
𝑚𝑖𝑠𝑎𝑙𝑘𝑎𝑛 ∶ 𝐴 = {𝑎, 𝑏, 𝑐}, maka berikut adalah contoh – contoh bahasa pada alfabet A:
𝐿1 = {𝑎, 𝑎𝑎𝑎, 𝑏𝑐, 𝑎𝑐, 𝑎𝑏𝑐, 𝑐𝑎𝑏}
𝐿2 = {𝑎𝑏𝑎, 𝑎𝑎𝑏𝑎𝑎}
𝐿3 = {}
1. Operasi String
Misalkan p = abc , q = 123
Konkatenasi (Penyambungan)
Adalah penyambungan dua buah string . sehingga
𝑐𝑜𝑛𝑐𝑎𝑡𝑒(𝑝𝑞) = 𝑎𝑏𝑐123
Bahasa Universal dari Σ
Adalah bahasa yang terdiri dari semua string berdasarkan suatu abjad Σ.
Dinotasikan Σ ∗
𝑐𝑜𝑛𝑡𝑜ℎ ∶ Σ = {1}, 𝑚𝑎𝑘𝑎 Σ ∗ = {𝜀, 1, 11, 111, 1111, … }
Prefix
Adalah operator yang menghasilkan string dengan menghilangkan nol atau lebih
symbol – symbol paling belakang dari sebuah string.
𝐶𝑜𝑛𝑡𝑜ℎ ∶ 𝑎𝑏𝑐, 𝑎𝑏, 𝑎, 𝜀, 𝑎𝑑𝑎𝑙𝑎ℎ 𝑐𝑜𝑛𝑡𝑜ℎ 𝑝𝑟𝑒𝑓𝑖𝑥(𝑝)
ProferPrefix
Adalah operator yang menghasilkan string dengan menghilangkan satu atau lebih
symbol – symbol paling belakang dari suatu string.
𝑐𝑜𝑛𝑡𝑜ℎ ∶ 𝑎𝑏, 𝑎, 𝑑𝑎𝑛 𝜀 𝑎𝑑𝑎𝑙𝑎ℎ 𝑠𝑒𝑚𝑢𝑎 𝑃𝑟𝑜𝑝𝑒𝑟𝑃𝑟𝑒𝑓𝑖𝑥(𝑝)
Postfix
Adalah operator yang menghasilkan suatu string dengan menghilangkan nol atau
lebih symbol – symbol paling depan string tersebut.
𝑐𝑜𝑛𝑡𝑜ℎ ∶ 𝑎𝑏𝑐, 𝑏𝑐, 𝑐 𝑑𝑎𝑛 𝜀 𝑎𝑑𝑎𝑙𝑎ℎ 𝑠𝑒𝑚𝑢𝑎 𝑃𝑜𝑠𝑡𝑓𝑜𝑥(𝑝)
ProperPostfix
Adalah operator yang menghasilkan string dengan menghilangkan satu atau lebih
symbol – symbol paling depan dari suatu string.
𝑐𝑜𝑛𝑡𝑜ℎ ∶ 𝑏𝑐, 𝑐 𝑑𝑎𝑛 𝜀 𝑎𝑑𝑎𝑙𝑎ℎ 𝑠𝑒𝑚𝑢𝑎 𝑃𝑟𝑜𝑝𝑒𝑟𝑃𝑜𝑠𝑡𝑓𝑖𝑥(𝑝)
Head
Adalah operator yang menghasilkan string yang merupakan symbol paling depan
dari suatu string.
𝑐𝑜𝑛𝑡𝑜ℎ ∶ 𝑎 𝑎𝑑𝑎𝑙𝑎ℎ ℎ𝑒𝑎𝑑(𝑝)
Tail
Adalah operator yang menghasilkan string dengan menghilangkan symbol paling
depan dari suatu string.
𝑐𝑜𝑛𝑡𝑜ℎ ∶ 𝑏𝑐 𝑎𝑑𝑎𝑙𝑎ℎ 𝑡𝑎𝑖𝑙(𝑝)
Substring
Adalah operator yang menghasilkan string dengan menghilangkan nol atau lebih
symbol – symbol dan/ atau symbol – symbol paling belakang dari suatu string.
𝑐𝑜𝑛𝑡𝑜ℎ ∶ 𝑎𝑏𝑐, 𝑎𝑏, 𝑏𝑐, 𝑎, 𝑏, 𝑐 𝑑𝑎𝑛 𝜀 𝑎𝑑𝑎𝑙𝑎ℎ 𝑠𝑒𝑚𝑢𝑎 𝑆𝑢𝑏𝑠𝑡𝑟𝑖𝑛𝑔(𝑝)
ProperSubstring
Adalah operator yang menghasilkan string dengan menghilangkan satu atau lebih
symbol – symbol dan/ atau symbol – symbol paling belakang dari suatu string.
𝑐𝑜𝑛𝑡𝑜ℎ ∶ 𝑎𝑏, 𝑏𝑐, 𝑎, 𝑏, 𝑐 𝑑𝑎𝑛 𝜀 𝑎𝑑𝑎𝑙𝑎ℎ 𝑠𝑒𝑚𝑢𝑎 𝑃𝑟𝑜𝑝𝑒𝑟𝑆𝑢𝑏𝑠𝑡𝑟𝑖𝑛𝑔(𝑝)
Subsequence
Adalah operator dengan menghilangkan nol atau lebih symbol-simbol dati string
tersebut.
𝑐𝑜𝑛𝑡𝑜ℎ ∶ 𝑎𝑏𝑐, 𝑎𝑏, 𝑏𝑐, 𝑎𝑐, 𝑎, 𝑏, 𝑐 𝑑𝑎𝑛 𝜀 𝑎𝑑𝑎𝑙𝑎ℎ 𝑐𝑜𝑛𝑡𝑜ℎ 𝑆𝑢𝑏𝑠𝑒𝑞𝑢𝑒𝑛𝑐𝑒(𝑥)
ProperSubsequence
Adalah operator dengan menghilangkan satu atau lebih symbol-simbol dati string
tersebut.
𝑐𝑜𝑛𝑡𝑜ℎ ∶ 𝑎𝑏, 𝑏𝑐, 𝑎𝑐, 𝑎, 𝑏, 𝑐 𝑑𝑎𝑛 𝜀 𝑎𝑑𝑎𝑙𝑎ℎ 𝑐𝑜𝑛𝑡𝑜ℎ 𝑆𝑢𝑏𝑠𝑒𝑞𝑢𝑒𝑛𝑐𝑒(𝑥)
Alternation
Adalah pilihan satu di antara dua buah string.
𝑐𝑜𝑛𝑡𝑜ℎ ∶ 𝑎𝑙𝑡𝑒𝑟𝑛𝑎𝑡𝑒(𝑝𝑞) = 𝑎𝑏𝑐 𝑎𝑡𝑎𝑢 123
E. NFA
Definition 1: Nondeterministic Finite Automaton memilik 5 – tuple
(𝑆, 𝐼, 𝑇, 𝐹, ∑), dimana
1. 𝑆 adalah himpunan dari state.
2. 𝐼 ⊆ 𝑆 adalah himpunan dari initial state.
3. 𝑇 adalah fungsi transisi 𝑇 ∶ 𝑆 × ∑ → 𝑃(𝑆), dimana 𝑃(𝑆) adalah power
set dari 𝑆.
4. 𝐹 adalah subset dari 𝑆 yang disebut himpunan accepting states.
5. ∑ adalah alphabet yang diberikan.
Contoh 1.1:
Alfabet = {𝑎}.
NFA dalam menerima input, dapat mempunya lebih dari satu busur keluar
ataupun tidak punya busur keluar .
Contoh 1.2. NFA menerima semua string {0,1} yang mengandung
mengandung 1 pada posisi ketiga dari terakhir, atau posisi
kedua dari terakhir.
Gambar 1.2 , contoh NFA
Gambar 3.a. rejection pilihan pertama Gambar 3.b. rejection pilihan pertama
Contoh : diberikan inputan 𝑀 = {𝑎, 𝑎}, cek apakah diterima atau tidak,
berdasarkan gambar 4.
𝐹 = {𝑞0 , 𝑞5 }
𝛿 ∗ (𝑞0 , 𝑎𝑎) = {𝑞4 , 𝑞5 }
Karena 𝑞5 merupakan salah satu dari state akhir, maka 𝑎𝑎 ∈ 𝐿(𝑀).
Gambar 4. Contoh untuk L(M)