Teori bahasa dan otomata merupakan bagian dari teori komputasi pada ilmu komputer.
Beberapa teori komputasi datang dari bahasa dan rekayasa sistem, terutama yang berbasiskan
matematika. Dalam hal ini penekanannya adalah pada pemecahan masalah. Melalui contoh-
contoh ilustrasi-masalah dapat dikenali latar belakang dari suatu konsep dan
hubungannya dengan definis dan teorema yang ada. Secara teoritis ilmu komputer diawali dari
sejumlah berbeda disiplin ilmu; ahli biologi mempelajari neural network, insinyur elektro
mengembangkan switching sebagai tools untuk mendesain perangkat keras, matematikawan
bekerja berdasarkan logika, dan ahli bahasa menyelidiki tata bahasa untuk bahasa alami (natural
language) Finite state automata dan ekspresi reguler awal dikembangkan berdasarkan
pemikiran neural network dan switching circuit. Finite state automata merupakan tools
yang sangat berguna dalam perancangan suatu penganalisa leksikal (lexical analyzer)
yang berguna dalam mengelompokkan karakter-karakter kedalam token-token sebagai
unit terkecil dalam mengenali pola. Jadi apa sesungguhnya teori bahasa tersebut ? Teori bahasa
merupakan suatu gagasan mendasar dalam komputasi yang menjadi tools untuk mengenali
persoalan. Gagasan dasar tersebut dimodel dengan suatu simbol-simbol yang
merepresentasikan juga suatu fungsi dari komputer digital. Teori bahasa pada awalnya lebih
diarahkan untuk mengenali suatu tata bahasa dan dapat mendefinisikan spesifikasi formal dari
tata bahasa tersebut. Sehingga pada akhirnya dapat didefinisikan langkah-langkah algoritmik
dalam pemrosesan tata bahasa.
∑ : {1,2,3,4......}
w1 = 1
w2 = 12
w3 = 11 dst
Bahasa Universal adalah suatu bahasa yang bisa mengakomodasi semua string dari suatu abjad
notasi : ∑*
contoh
∑ : {a,b,c}
∑* : {Ɛ,a,b,c,d,ab,aa,cc,....}
∑ : {2}
∑* : {Ɛ,22,2,222,2222......}
contoh sederhana
∑ : {1,2,3}
L : {1,2,3} -> apa aturannya..??
bahasa itu menggunakan aturan "satu state tunggal"
Operasi-operasi string
-> Panjang (length) dari string
notasi |w|
contoh
w1 = 1 2 1 -> |w1|= 3
w2 = aa -> |w2|=2
->Exponensial (pangkat)
misal w adalah kata
w^n = {Ɛ, jika n = 0}
{w.w^n-1 jika n > 0}
-> Exponensial (Pangkat)
misal A adalah Bahasa
A^n = {{Ɛ}, jika n=0}
{A.A^n-1 jika n > 1}
contoh
A = {A,B}
A^0 = {Ɛ}
A' = A.A^0 = {AB}.{Ɛ} = {AB}
-> Gabungan (Union)
misal A dan B adalah bahasa
A U B = {w | w € A atau w € B}
contoh
A : {a,ab,c,d}
B : {c,a,aa,dd}
A U B : {a,ab,c,d,aa,dd}
-> Irisan (Lutesectim)
misal A dan B adalah Bahasa
dari contoh Gabungan di atas maka irisannya adalah {C,A} karna {C,A} ada di A dan juga ada
di B
-> Sub bahasa
misal A dan B adalah Bahasa
A C B "dibaca A sub bahasa dari B"
jika semua kata anggota A jika merupakan anggota B
contoh
∑ : {a,b}
a C b = ..?
a : {aa,ab,aab,....}
b : {a,b,aa,bb,ab,aab...}
-> Sama (Equal)
misal A dan B adalah Bahasa
A = B jika Semua anggota A merupakan anggota B dan sebaliknya
A : {a,b}
B : {b,a}
A=B
-> Star Clousure & Plus Clousure
misal A dan B adalah Bahasa
A* ("di baca A star clousure")
Contoh
∑ : {a} "abjad"
A : {aa} "bahasa"
TEORI-TEORI
Komputasi
Komputasi sebetulnya bisa diartikan sebagai cara untuk menemukan pemecahan masalah dari data input dengan
menggunakan suatu algoritma. Hal ini ialah apa yang disebut dengan teori komputasi, suatu sub-bidang dari
ilmu komputer dan matematika. Selama ribuan tahun, perhitungan dan komputasi umumnya dilakukan dengan
menggunakan pena dan kertas, atau kapur dan batu tulis, atau dikerjakan secara mental, kadang-kadang dengan
bantuan suatu tabel. Namun sekarang, kebanyakan komputasi telah dilakukan dengan menggunakan komputer.
Teori komputasi berkaitan dengan studi bagaimana persoalan (problem) dapat diselesaikan pada sebuah model
dengan menggunakan algoritma. Model tersebut dinamakan model komputasi. Ada beberapa model yang
digunakan, namun yang paling umum dipelajari adalah mesin Turing. Sebuah mesin Turing dapat dipikirkan
sebagai komputer pribadi meja dengan kapasitas memori yang tak terhingga, namun hanya dapat diakses dalam
bagian-bagian terpisah dan diskret. Ilmuwan komputer mempelajari mesin Turing karena mudah dirumuskan,
dianalisis dan digunakan untuk pembuktian, dan karena mesin ini mewakili model komputasi yang dianggap
sebagai model paling masuk akal yang paling ampuh yang dimungkinkan. Kapasitas memori tidak terbatas
mungkin terlihat sebagai sifat yang tidak mungkin terwujudkan, namun setiap permasalahan yang
“terputuskan” (decidable) yang dipecahkan oleh mesin Turing selalu hanya akan memerlukan jumlah memori
terhingga. Jadi pada dasarnya setiap masalah yang dapat dipecahkan (diputuskan) oleh mesin Turing dapat
dipecahkan oleh komputer yang memiliki jumlah memori terbatas.
Turing Machine
Mesin Turing adalah model komputasi teoretis yang ditemukan oleh Alan Turing, berfungsi sebagai model
ideal untuk melakukan perhitungan matematis. Walaupun model ideal ini diperkenalkan
sebelum komputer nyata dibangun, model ini tetap diterima kalangan ilmu komputer sebagai model komputer
yang sesuai untuk menentukan apakah suatu fungsi dapat selesaikan oleh komputer atau tidak
(menentukan computable function). Mesin Turing terkenal dengan ungkapan " Apapun yang bisa dilakukan
oleh Mesin Turing pasti bisa dilakukan oleh komputer."
Sebuah mesin turing terdiri atas barisan sel tersusun berupa pita yang dapat bergerak maju mundur, komponen
aktif baca/tulis pita yang memiliki status perhitungan serta dapat mengubah/menulisi sel aktif yang ada di pita
tadi, dan suatu kumpulan instruksi bagaimana komponen baca/tulis ini harus melakukan modifikasi terhadap sel
aktif pada pita, serta bagaimana menggerakkan pita tersebut. Pada setiap langkah dalam komputasi, mesin ini
akan dapat mengubah isi dari sel yang aktif, mengubah status dari komponen baca/tulis, dan mengubah posisi
pita ke kiri atau ke kanan
DFA nya:
Q = {q0 , q1 , q2 , q3 }
Σ = {0,1}
S = q0
F = { q0}
fungsi transisi adalah:
δ( q0,011)= δ( q2,11) =δ( q3,1)= q2 Ditolak
δ( q0,1010)= δ( q1,010) =δ( q3,10)=δ( q2,0)= q0 Diterima
Non-deterministic Finite Automata (NFA) : dari suatu state ada 0, 1 atau lebih state berikutnya
untuk setiap simbol masukan yang diterima.
Non-Deterministic Finite Automata:
• Otomata berhingga yang tidak pasti untuk setiap pasangan state input, bisa memiliki 0 (nol) atau lebih
pilihan untuk state berikutnya.
• Untuk setiap state tidak selalu tepat ada satu state berikutnya untuk setiap simbol input yang ada.
• Dari suatu state bisa terdapat 0,1 atau lebih busur keluar (transisi)
berlabel simbol input yang sama.
• Untuk NFA harus dicoba semua kemungkinan yang ada sampai
terdapat satu yang mencapai state akhir.
• Suatu string x dinyatakan diterima oleh bahasa NFA, M= (Q, _, d, S, F) bila {x | d (S,x) memuat
sebuah state di dalam F}
Kedua finite automata di atas mampu mengenali himpunan reguler secara presisi. Dengan demikian kedua
finite automata itu dapat mengenali string-string yang ditunjukkan dengan ekspresi reguler secara tepat.
DFA dapat menuntun recognizer(pengenal) lebih cepat dibanding NDFA. Namun demikian, DFA berukuran
lebih besar dibanding NDFA yang ekivalen dengannya. Lebih mudah membangun NDFA dibanding DFA
untuk suatu bahasa, namun lebih mudah mengimplementasikan DFA dibanding NDFA.