TEORI BAHASA DAN OTOMATA
Teori Bahasa
- Teori bahasa membicarakan bahasa formal (formal language), terutama untuk kepentingan perancangan kompilator (compiler) dan pemroses naskah (text processor).
- Bahasa formal adalah kumpulan kalimat. Semua kalimat dalam sebuah bahasa dibangkitkan oleh sebuah tata bahasa (grammar) yang sama.
- Sebuah bahasa formal bisa dibangkitkan oleh dua atau lebih tata bahasa berbeda.
- Dikatakan bahasa formal karena grammar diciptakan mendahului pembangkitan setiap kalimatnya.
- Bahasa Natural/manusia bersifat sebaliknya; grammar diciptakan untuk meresmikan kata-kata yang hidup di masyarakat. Dalam pembicaraan selanjutnya ‘bahasa formal’ akan disebut ‘bahasa’ saja.
Otomata (Automata)
- Otomata adalah mesin abstrak yang dapat mengenali (recognize), menerima (accept), atau membangkitkan (generate) sebuah kalimat dalam bahasa tertentu.
Beberapa Pengertian Dasar :
·
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 w adalah sebuah string maka panjang string dinyatakan sebagai ïwï dan didefinisikan sebagai cacahan (banyaknya) simbol yang menyusun
string tersebut. Sebagai contoh, jika w =
abcb maka ïwï= 4.
·
String
hampa adalah sebuah string dengan nol buah simbol. String hampa dinyatakan
dengan simbol e (atau ^)
sehingga ïeï= 0. String
hampa dapat dipandang sebagai simbol hampa karena keduanya tersusun dari nol
buah simbol.
·
Alfabet
adalah hinpunan hingga (finite set)
simbol-simbol TEORI BAHASA AUTOMATA
Operasi Dasar String
Diberikan dua
string : x = abc, dan y = 123
·
Prefik string w adalah string yang dihasilkan dari string
w dengan menghilangkan nol atau lebih simbol-simbol paling
belakang dari string w tersebut.
Contoh : abc, ab, a, dan e adalah semua Prefix(x)
·
ProperPrefix
string w adalah string yang
dihasilkan dari string w dengan
menghilangkan satu atau lebih simbol-simbol
paling belakang dari string w
tersebut.
Contoh : ab, a, dan e adalah semua ProperPrefix(x)
·
Postfix
(atau Sufix) string w adalah string
yang dihasilkan dari string w dengan
menghilangkan nol atau lebih
simbol-simbol paling depan dari string w
tersebut.
Contoh : abc, bc, c, dan e adalah semua Postfix(x)
·
ProperPostfix
(atau PoperSufix) string w adalah
string yang dihasilkan dari string w
dengan menghilangkan satu atau lebih
simbol-simbol paling depan dari string w
tersebut.
Contoh : bc, c, dan e adalah semua ProperPostfix(x)
·
Head string w adalah simbol paling depan dari string
w.
Contoh : a adalah Head(x)
·
Tail string w adalah string yang dihasilkan dari
string w dengan menghilangkan simbol
paling depan dari string w tersebut.
Contoh : bc adalah Tail(x)
·
Substring string w adalah string yang dihasilkan dari
string w dengan menghilangkan nol atau lebih simbol-simbol paling
depan dan/atau simbol-simbol paling belakang dari string w tersebut.
Contoh : abc, ab, bc,
a, b, c, dan e adalah semua Substring(x)
·
ProperSubstring string w adalah string yang dihasilkan dari
string w dengan menghilangkan satu atau lebih simbol-simbol paling
depan dan/atau simbol-simbol paling belakang dari string w tersebut.
Contoh : ab, bc, a,
b,
c, dan e adalah semua Substring(x)
·
Subsequence string w adalah string yang dihasilkan dari
string w dengan menghilangkan nol atau lebih simbol-simbol dari string
w tersebut.
Contoh : abc, ab, bc,
ac, a, b, c, dan e adalah
semua Subsequence(x)
·
ProperSubsequence string w adalah string yang dihasilkan dari
string w dengan menghilangkan satu atau lebih simbol-simbol dari
string w tersebut.
Contoh : ab, bc, ac,
a, b, c, dan e adalah semua Subsequence(x)
·
Concatenation adalah
penyambungan dua buah string. Operator concatenation adalah concate atau tanpa lambang apapun.
Contoh : concate(xy) = xy = abc123
·
Alternation
adalah pilihan satu di antara dua buah string. Operator
alternation adalah alternate atau ½.
Contoh : alternate(xy) = x½y = abc atau 123
·
Kleene Closure : x* = e½x½xx½xxx½… = e½x½x½x½…
·
Positive Closure : x = x½xx½xxx½… = x½x½x½…
Beberapa Sifat Operasi
·
Tidak selalu berlaku : x = Prefix(x)Postfix(x)
·
Selalu berlaku : x = Head(x)Tail(x)
·
Tidak selalu berlaku : Prefix(x) = Postfix(x) atau Prefix(x) ¹ Postfix(x)
·
Selalu
berlaku : ProperPrefix(x) ¹ ProperPostfix(x)
·
Selalu berlaku : Head(x) ¹ Tail(x)
·
Setiap Prefix(x), ProperPrefix(x), Postfix(x),
ProperPostfix(x), Head(x), dan Tail(x) adalah Substring(x),
tetapi tidak sebaliknya
·
Setiap Substring(x) adalah Subsequence(x), tetapi tidak sebaliknya
·
Dua sifat aljabar concatenation
:
¨
Operasi concatenation bersifat
asosiatif : x(yz) = (xy)z
¨
Elemen identitas operasi
concatenation adalah e : ex = xe = x
·
Tiga sifat aljabar alternation
:
¨
Operasi alternation bersifat
komutatif : x½y = y½x
¨ Operasi alternation bersifat
asosiatif : x½(y½z) = (x½y)½z
¨
Elemen identitas operasi
alternation adalah dirinya sendiri : x½x = x
·
Sifat distributif concatenation
terhadap alternation : x (y½z) = xy½xz
·
Beberapa kesamaan :
¨
Kesamaan ke-1 : (x*)* = x*
¨ Kesamaan ke-2 : e½x = x½e = x*
¨ Kesamaan ke-3 : (x½y)* = e½x½y½xx½yy½xy½yx½… = semua string yang merupakan
concatenation dari nol atau lebih x, y, atau keduanya. TEORI BAHASA AUTOMATA
GRAMMAR DAN BAHASA
Konsep Dasar
· Anggota alfabet dinamakan simbol terminal.
· Kalimat adalah deretan hingga simbol-simbol
terminal.
· Bahasa adalah himpunan kalimat-kalimat.
Anggota bahasa bisa tak hingga kalimat.
· Simbol-simbol berikut adalah simbol terminal :
ü huruf kecil, misalnya :
a, b, c, 0, 1, ..
ü simbol operator, misalnya : +, -, dan ´
ü simbol tanda baca, misalnya : (, ), dan
;
ü string yang tercetak tebal, misalnya : if, then, dan else.
· Simbol-simbol berikut adalah simbol non terminal /Variabel :
ü huruf besar, misalnya : A, B, C
ü huruf S sebagai simbol awal
ü string yang tercetak miring, misalnya : expr
· Huruf yunani melambangkan string yang
tersusun atas simbol-simbol terminal atau simbol-simbol non terminal atau
campuran keduanya, misalnya : a, b, dan g.
· Sebuah produksi dilambangkan sebagai a ® b, artinya :
dalam sebuah derivasi dapat dilakukan penggantian simbol a dengan simbol
b.
· Derivasi adalah proses pembentukan sebuah
kalimat atau sentensial. Sebuah derivasi dilambangkan sebagai : a Þ b.
· Sentensial adalah string yang tersusun atas
simbol-simbol terminal atau simbol-simbol non terminal atau campuran keduanya.
· Kalimat adalah string yang tersusun atas
simbol-simbol terminal. Kalimat adalah merupakan sentensial, sebaliknya belum
tentu..
C. Mesin Pengenal Bahasa
Untuk setiap kelas bahasa Chomsky, terdapat
sebuah mesin pengenal bahasa. Masing-masing mesin tersebut adalah :
Kelas Bahasa
|
Mesin Pengenal Bahasa
|
Unrestricted
Grammar (UG)
|
Mesin Turing (Turing Machine), TM
|
Context
Sensitive Grammar (CSG)
|
Linear
Bounded Automata, LBA
|
Context
Free Gammar (CFG)
|
Pushdown Automata, PDA
|
Regular
Grammar, RG
|
Finite State Automata, FSA
|
FINITE STATE AUTOMATA (FSA)
· FSA didefinisikan sebagai pasangan 5 tupel
: (Q, ∑, δ, S, F).
Q : himpunan hingga state
∑ : himpunan hingga simbol input (alfabet)
δ : fungsi transisi,
menggambarkan transisi state FSA akibat pembacaan simbol input.
Fungsi transisi ini biasanya diberikan dalam bentuk tabel.
S Î Q : state AWAL
F Ì Q : himpunan state AKHIR
Contoh : FSA untuk mengecek parity ganjil TEORI BAHASA AUTOMATA
Q ={Gnp, Gjl} diagram transisi
|
tabel transisi
δ
|
0
|
1
|
Gnp
|
Gnp
|
Gjl
|
Gjl
|
Gjl
|
Gnp
|
S = Gnp, F = {Gjl}
· Ada dua jenis FSA :
·
Deterministic finite automata (DFA)
·
Non deterministik finite automata.(NFA)
- DFA : transisi state FSA akibat pembacaan
sebuah simbol bersifat tertentu.
δ : Q ´ ∑® Q
- NFA : transisi state FSA akibat pembacaan
sebuah simbol bersifat tak tentu.
δ : Q ´ ∑ ® 2Q
DFA :
Q = {q0, q1, q2}
δ diberikan dalam
tabel berikut :
∑= {a, b}
|
δ
|
a
|
b
|
S = q0
|
q0
|
q0
|
q1
|
F = {q0, q1}
|
q1
|
q0
|
q2
|
|
q2
|
q2
|
q2
|
Kalimat yang
diterima oleh DFA : a, b, aa, ab, ba, aba, bab, abab, baba
Kalimat yang
dittolak oleh DFA : bb, abb, abba
DFA ini menerima
semua kalimat yang tersusun dari simbol a dan b yang tidak mengandung substring
bb.
Contoh :
Telusurilah,
apakah kalimat-kalimat berikut diterima DFA di atas :
abababaa è diterima
aaaabab è diterima
aaabbaba è
ditolak
Jawab :
i)
δ (q0,abababaa) Þ δ (q0,bababaa) Þ δ (q1,ababaa) Þ
δ (q0,babaa) Þ δ (q1,abaa) Þ δ (q0,baa) Þ δ (q1,aa) Þ
δ (q0,a) Þ q0
Tracing berakhir di q0 (state AKHIR) Þ kalimat abababaa diterima
ii) δ (q0, aaaabab) Þδ (q0,aaabab) Þδ (q0,aabab) Þ
δ (q0,abab) Þ δ (q0,bab) Þ δ (q1,ab) Þ δ (q0,b) Þ q1
Tracing berakhir di q1 (state AKHIR) Þ kalimat aaaababa diterima
iii) δ (q0, aaabbaba) Þ δ (q0, aabbaba) Þ δ (q0, abbaba) Þ
δ (q0, bbaba) Þ δ (q1,baba) Þ δ (q2,aba) Þ δ (q2,ba) Þ δ (q2,a) Þq2
Tracing berakhir di q2 (bukan state AKHIR) Þ kalimat aaabbaba ditolak
Kesimpulan :
sebuah kalimat diterima oleh DFA di atas jika
tracingnya berakhir di salah satu state AKHIR.
NFA :
Berikut ini sebuah contoh NFA (Q, ∑, δ, S, F). dimana :
Q = {q, q, q,q, q} δ diberikan dalam tabel berikut :
∑= {a, b,c}
|
δ
|
a
|
b
|
c
|
S = q
|
q
|
{q, q}
|
{q, q}
|
{q, q}
|
F = {q}
|
q
|
{q, q}
|
{q}
|
{q}
|
|
q
|
{q}
|
{q, q}
|
{q}
|
|
q
|
{q}
|
{q}
|
{q, q}
|
|
q
|
Æ
|
Æ
|
Æ
|
kalimat yang diterima NFA di atas : aa, bb, cc, aaa, abb, bcc, cbb
kalimat yang tidak diterima NFA di atas : a, b, c, ab, ba, ac, bc
Sebuah kalimat di terima NFA jika :
· salah satu
tracing-nya berakhir di state AKHIR, atau
· himpunan state
setelah membaca string tersebut mengandung state AKHIR
Contoh :
Telusurilah, apakah kalimat-kalimat berikut diterima NFA di atas :
ab, abc, aabc, aabb
Jawab :
1. δ(q,ab) Þ δ(q,b) È δ(q ,b) Þ {q, q} È {q} = {q, q, q}
Himpunan state TIDAK mengandung state AKHIR Þ kalimat ab tidak diterima
2. δ(q,abc) Þ δ(q,bc) È δ(q ,bc) Þ { δ(q,c) È δ(q,c)}Èδ(q, c)
{{ q, q}È{ q}}È{ q} = {q, q, q,q}
Himpunan state TIDAK
mengandung state AKHIR Þ kalimat abc tidak diterima
3. δ(q,aabc) Þ δ(q,abc) È δ(q ,abc)Þ{ δ(q,bc) È δ(q ,bc)} È
δ (q ,bc) Þ{{ δ(q, c) È δ(q,c)} È δ(q, c)} È δ(q, c) Þ
{{{ q, q}È { q}} È {q}} È {q} = {q, q, q,q}
Himpunan state
TIDAK mengandung state AKHIR Þ kalimat aabc tidak diterima
4. δ(q,aabb) Þ δ(q,abb) È δ(q ,abb)
Þ { δ(q,bb) È δ(q ,bb)} È δ (q ,bb)
Þ{{ δ(q, b) È δ(q,b)} È δ(q, b)} È δ(q, b)
Þ{{{ q, q}È { q, q}} È {q}} È {q} = {q, q, q, q}
Himpunan state
mengandung state AKHIR Þ kalimat aabb diterima