Anda di halaman 1dari 38

Teori Bahasa dan Otomata

SKS: 3

Pertemuan 3
Finite Automata

By : Iwan SW
TIK dan Waktu Penyajian
 Tinjauan Instruksional Khusus:
 Mahasiswa akan dapat menjelaskan cara kerja
 Deterministic Finite Automata (DFA),

 Non-Deterministic Finite Automata (NDFA),

 Non deterministic Finite Automata (NFA) dengan transisi


ε.
 Waktu penyajian: 3 x 150 menit
Subtopik
 Overview: Alfabet, string dan bahasa
 DFA: Definisi DFA, Bagimana DFA memproses string, Notasi-
notasi untuk DFA, Fungsi transisi yang diperluas, Bahasa dari
DFA
 NFA: Definisi NFA, Bagimana NFA memproses string, Fungsi
transisi yang diperluas, Bahasa dari NFA, Ekuivalensi DFA dan
NFA
 ε-NFA: Penggunaan transisi-ε, Notasi formal untuk ε-NFA,
Epsilon-Closure, Fungsi transisi yang diperluas dan bahasa
untuk ε-NFA, Mengeliminasi Transisi -
Konsep dalam Teori Otomata
Alphabet
 Sebuah alphabet adalah himpunan

berhingga dan tak kosong dari simbol.


Alphabet disimbolkan oleh .
 Contoh:
  = {0, 1} alphabet biner
  = {a, b,..., z}, himpunan semua huruf kecil.
 Himpunan semua karakter ASCII.
Konsep dalam Teori Otomata
(lanjutan)
String
 Sebuah string (atau word) adalah deretan simbol
berhingga yang dipilih dari alphabet.
 Contoh : 011011 dan 1111 adalah string dari
alphabet biner  = {0, 1}.
 String kosong adalah string dimana tidak ada
kemunculan simbol.
 String tersebut dinotasikan oleh .
Konsep dalam Teori Otomata
(lanjutan)
 Panjang dari string adalah banyaknya posisi untuk simbol dalam
string.
 Contoh, 01101 memiliki panjang 5.
 Umumnya panjang dari string adalah banyaknya simbol dalam
string.
 Pernyataan tersebut tidak sepenuhnya benar, sebagai contoh
terdapat 2 simbol dalam string 01101 yaitu 0 dan 1, tetapi
terdapat 5 posisi untuk simbol, dan panjangnya adalah 5.
 Notasi standar untuk panjang string w adalah |w|. Contoh: |011|
= 3 dan || = 0.
Konsep dalam Teori Otomata
(lanjutan)
 x adalah sebuah substring dari string lain y
jika ada string w dan z, keduanya dapat
berupa string kosong, sedemikian sehingga y
= wxz.
 Sebagai contoh, car adalah substring dari
carry, car, vicar.
Konsep dalam Teori Otomata
(lanjutan)
Pangkat dari Alphabet
 Jika  adalah alphabet, dapat dinyatakan himpunan
dari semua string dengan panjang tertentu dari
alphabet tersebut dengan menggunakan notasi
eksponensial.
 Kita mendefinisikan k sebagai himpunan dari string
dengan panjang k, setiap string tersebut memiliki
simbol dalam .
Konsep dalam Teori Otomata
(lanjutan), Contoh 9
 Perhatikan bahwa 0 = {}, untuk alphabet apapun.
 Bahwa  adalah string yang memiliki panjang 0. Jika  = {0, 1}
maka
1 = {0, 1}
2 = {00, 01, 10, 11}
3 = {000, 001, 010, 011, 100, 101, 110, 111} dan
seterusnya.
4 = {0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, ....
1111}
 Semua string pada alphabet  dinotasikan *.
 Contoh: {0,1}* = {, 0, 1, 00, 01, 10, 11, 000, ...} dan * = 0 
1  2  ...
Konsep dalam Teori Otomata
(lanjutan)
 Kadang-kadang kita tidak ingin memasukkan string
kosong dalam himpunan string.
 Himpunan string-string tak kosong dari alphabet 
dinotasikan +.
 Dengan demikian :
+ = 1  2  3  ...
* = +  {}.
Konsep dalam Teori Otomata
(lanjutan)
Perangkaian String (concatenation)
 Misalkan x dan y adalah string, maka xy menyatakan
perangkaian dari x dan y, bahwa string dibentuk dengan
membuat salinan dari x dan diikuti oleh salinan dari y.
 Jika x adalah string yang disusun oleh i simbol,

x = a1a2 ... ai
dan y adalah string yang disusun oleh j simbol,
y = b1b2 ... bj
maka xy adalah string dengan panjang i + j,
xy = a1a2 ... aib1b2 ... bj
 Contoh: x = 01101 dan y = 110, maka xy = 01101110 dan yx =
11001101.
 Untuk suatu string w, persamaan w = w = w dipenuhi. Bahwa 
adalah identitas untuk perangkaian.
Konsep dalam Teori Otomata
(lanjutan)
Bahasa
 Himpunan string-string yang semuanya dipilih dari *, dimana 
adalah alphabet, dan L  *, maka L adalah bahasa pada .
 Perhatikan bahwa bahasa pada  tidak harus meliputi string-
string dengan semua simbol dari .
 Dengan demikian, jika L adalah bahasa pada , diketahui bahwa
L adalah bahasa pada alphabet yang merupakan superset dari
.
 Bahasa umum dapat dipandang sebagai himpunan dari string.
Konsep dalam Teori Otomata
(lanjutan), Contoh 10
 Bahasa Inggris, yang merupakan koleksi dari kata-
kata dalam bahasa Inggris yang benar.
 Kata-kata tersebut merupakan string pada alphabet yang
mengandung semua huruf.
 Bahasa C atau bahasa pemrograman lainnya.
 Dalam bahasa tersebut, program yang benar adalah
subset dari string-string yang mungkin yang dibentuk dari
alphabet.
 Alphabet tersebut adalah subset dari karakter-karakter
ASCII.
Konsep dalam Teori Otomata
(lanjutan)
Contoh bahasa dalam teori otomata:
 Bahasa dari semua string yang berisi n buah 0 dan diikuti
oleh n buah 1, untuk n  0:
{, 01, 0011, 000111, ...}
 Himpunan string-string dari 0 dan 1 dengan banyaknya 0
sama dengan banyaknya 1.
{, 01, 10, 0011, 0101, 1001 ...}
 Himpunan bilangan biner yang memiliki nilai prima

{10, 11, 101, 111, 1011, ...}


 * adalah bahasa untuk alphabet 
  adalah bahasa kosong, merupakan bahasa pada suatu
alphabet.
 {}, bahasa yang hanya mengandung string kosong, juga
merupakan bahasa pada suatu alphabet. Perhatikan bahwa
  {}
Contoh 11
Berikut adalah contoh bahasa pada  = {a, b}:
1. L1 = {, a, aa, aab}

2. L2 = {x  {a, b}* |x| ≤ 8}


3. L3 = {x  {a, b}* |x| adalah ganjil}
4. L4 = {x  {a, b}* na(x) ≥ nb(x)}
5. L5 = {x  {a, b}* |x| ≥ 2, x diawali dan diakhiri
dengan b}
Notasi lain dari Bahasa (1)
1. Berdasarkan string-string yang dikonstruksi di dalamnya.
Contoh: L1 = {ab, bab}*  {b}{bb}*
2. Sifat atau karakteristik dari string dalam L,
Contoh: L = {byb y  {a, b}*}.
3. Definisi rekursif
Contoh: Definisi rekursif dari L*:
   L*
 Untuk suatu x  L* dan suatu y  L, xy  L*
 Tidak ada string dalam L* selain yang diperoleh
menggunakan aturan 1 dan 2.
Notasi lain dari Bahasa (2)
Definisi rekursif untuk bahasa pal dari string-string palindrom
pada :
   pal

 Untuk suatu a  , a  pal

 Untuk suatu x  , dan suatu a  , axa a  pal

 Tidak ada string dalam pal selain yang diperoleh

menggunakan aturan 1, 2 dan 3.


Notasi lain dari Bahasa (3)
Definisi rekursif dari bahasa (LAE) yang string-string di dalamnya
berupa ekspresi aljabar dengan tanda kurung penuh
(sepasang) untuk setiap operator dengan
 = {i, (, ), +, }.
 i  L
AE

 Untuk suatu x, y  LAE, (x+y) dan (xy) adalah anggota


dari LAE.
 Tidak ada string dalam LAE selain yang diperoleh
menggunakan aturan 1 dan 2.
Contoh string dalam bahasa tersebut: i, (i+i), (ii), ((i+i)i),
((i(ii))+i).
Perangkaian Bahasa
 Jika L1 dan L2 adalah bahasa, L1 dan L2  *.
Perangkaian dari L1 dan L2 dinotasikan L1L2 = {xy
| x  L1 dan y  L2}.
 Sebagai contoh, {hope, fear}{less, fully} = {hopeless,
hopefully, fearless, fearfully}.
 Untuk L adalah bahasa, L{} = {}L karena untuk
setiap x  L, x = x = x.
Pendahuluan
 Sebuah Finite Automata (FA) memiliki sebuah himpunan dari state dan
kontrolnya yang bergerak dari state ke state sebagai respon dari
adanya input eksternal.
 FA dibedakan ke dalam dua kelas, yaitu
 Deterministic FA (DFA), yaitu FA yang tidak dapat berada pada
lebih dari satu state pada suatu waktu.
 Non Deterministic FA (NFA), yaitu FA yang dapat berada pada
beberapa state pada waktu yang bersamaan.
 Pada DFA, dari suatu state ada tepat satu state berikutnya untuk setiap
input eksternal yang diterima.
 Sedangkan pada NFA, untuk setiap pasangan state input kita bisa
memiliki 0 atau lebih pilihan ke state berikutnya.
Deterministic Finite Automata (DFA)
 Deterministic Finite Automata (DFA) akan berada pada suatu
state tunggal setelah pembacaan dari serangkaian input.
 Istilah “deterministic” menunjuk kepada fakta bahwa pada setiap
input terdapat satu dan hanya satu state yang dituju oleh
automata dari state tertentu.
Definisi DFA
Suatu DFA terdiri dari :
1. Sebuah himpunan berhingga dari state dinotasikan Q.
2. Sebuah himpunan berhingga dari simbol input, dinotasikan .
3. Fungsi transisi yang memiliki argumen sebuah state dan sebuah
simbol input, serta mengembalikan sebuah state, biasanya
dinotasikan sebagai . Untuk q  Q dan a  
: Q    Q
dan (q,a) menyatakan state kemana DFA bergerak. Dalam
bentuk graf,  direpresentasikan oleh arc antara state dan label
pada arc.
Jika q adalah state, dan a adalah simbol input, maka (q,a)
adalah state p sedemikian sehingga terdapat sebuah arc yang
diberi label a dari q ke p.
Definisi DFA (2)
4. Sebuah state awal (start state), merupakan salah satu dari
state-state dalam Q.
5. Sebuah himpunan dari final state F.
Himpunan F adalah subset dari Q.

DFA seringkali dinotasikan sebagai sebuah tuple 5 elemen A =


(Q, , , q0, F), dimana
A : Nama dari DFA
Q : Himpunan state
 : Simbol-simbol input
 : Fungsi transisi
q0: Start state
F : Himpunan accepting state.
Pemrosesan String oleh DFA
 Anggaplah a1, a2, ..., an adalah sebuah rangkaian dari simbol
input.
 Dengan berawal dari start state , dengan dibacanya simbol input
a1, DFA menuju state q1. Sehingga
(q0, a1) = q1.
 Selanjutnya DFA memproses simbol input selanjutnya, yaitu a2,
dengan mengevaluasi (q1, a2) = q2.
 Dengan cara yang sama DFA akan memasuki state q3, q4, ..., qn,
sehingga
(qi-1, ai) = qi untuk setiap i.
 Jika qn  F maka input a1, a2, ..., an diterima dan jika qn  F maka
input a1, a2, ..., an ditolak.
 Bahasa dari DFA adalah semua string yang diterima oleh DFA
tersebut.
Contoh 1
 DFA berikut menerima semua string dari para 0 dan
para 1 yang memiliki urutan 01 pada suatu tempat
dalam string:
A = ({q0, q1, q2}, {0, 1}, , q0, {q1})
dimana 
(q0, 0) = q2 (q0, 1) = q0
(q2, 0) = q2 (q2, 1) = q1
(q1, 0) = (q1, 1) = q1
Notasi untuk DFA
 Selain dinyatakan dalam tuple 5-elemen,
DFA dapat dinyatakan menggunakan
 Diagram transisi, yaitu graf yang terdiri dari node
dan arc
 Tabel transisi, yaitu daftar tabular dari fungsi .
Tabel Transisi
 Tabel transisi menyatakan himpunan dari state dan alphabet input.
Sebuah diagram transisi untuk suatu DFA A = (Q, , , q0, F) adalah
sebuah graf yang didefinisikan sebagai berikut:
1. Untuk setiap state dalam Q, terdapat sebuah node.
2. Untuk setiap q  Q dan setiap simbol input a  , misalkan (q,a) = p.
Maka diagram transisi memiliki sebuah arc dari node q ke node p,
diberi label a.
Jika terdapat beberapa simbol input yang menyebabkan transisi dari q
ke p, maka diagram transisi dapat memiliki suatu arc, yang diberi label
berupa daftar dari simbol-simbol input tersebut.
3. Terdapat sebuah tanda panah menuju start state q0, yang diberi label
start. Tanda panah tersebut tidak berasal dari state-state lain.
4. Node yang menyatakan final state (yaitu dalam F) diberi tanda oleh
lingkaran ganda. State yang bukan dalam F memiliki sebuah lingkaran
tunggal.
Contoh 2
 Diagram transisi untuk DFA dalam Contoh 1
adalah
1 0

start 0 1
q0 q2 q1
0,1
Contoh 3
 Tabel transisi untuk fungsi  pada Contoh 2 adalah

0 1

 q0 q2 q0

* q1 q1 q1
q2 q2 q1

Start state diberi tanda dengan sebuah arah panah, dan final
state diberi tanda dengan sebuah tanda bintang.
Perluasan Fungsi Transisi untuk String (1)

 Secara informal DFA menyatakan sebuah bahasa, yaitu


himpunan string yang diperoleh dalam urutan transisi state dari
start state ke final state.
 Dalam diagram transisi, bahasa dari sebuah DFA adalah
himpunan label sepanjang semua path dari start state ke final
state.
 Fungsi transisi yang diperluas menjelaskan apa yang terjadi
pada DFA ketika proses berawal pada suatu state dan mengikuti
rangkaian input.
Perluasan Fungsi Transisi untuk String (2)

 Jika  adalah fungsi transisi, maka fungsi transisi


yang diperluas yang dikonstruksi dari 
dinotasikan ˆ
 Fungsi transisi yang diperluas dari sebuah fungsi
yang mengambil state q dan sebuah string w dan
mengembalikan state p.
 State p adalah state yang dicapai oleh FA ketika
berawal dari state q dan memproses rangkaian
input w.
Perluasan Fungsi Transisi untuk String (3)
 Definisikan ˆ dengan induksi pada panjang string input sebagai
berikut

 Basis :  q,    q yang berarti jika FA berada dalam state q
dan membaca tidak ada input, FA tetap dalam state q.
 Induksi : Anggap w adalah string dengan bentuk xa, a
adalah simbol terakhir dari w, dan x adalah string yang
berisi semua simbol, kecuali simbol terakhir.
 Contoh : w= 1101 dipisahkan ke dalam x = 110 dan a = 1, maka


 
 q, w      q, x , a 
 
Perluasan Fungsi Transisi untuk String (4)
 
 Untuk menghitung  q, w  pertama hitung  q, x 
(adalah state dimana FA selesai memproses
semua simbol kecuali simbol terakhir dalam w).

 Anggaplah state tersebut adalah p,  q, x  = p

Maka  q, w  adalah state yang diperoleh dengan
membuat transisi dari state p pada input a (simbol
terakhir dari w).

Atau,  q, w    p, a 
Contoh 4
 DFA berikut menerima bahasa berikut
L = ww memiliki jumlah para 0 dan para 1 yang masing-
masing adalah genap
Contoh 4 (lanjutan)
 Pemrosesan input 110101:
Bahasa dari Sebuah DFA
 Bahasa dari sebuah DFA, A = (Q, , , q0, F), dinotasikan L(A)
didefinisikan oleh

  
LA   w  q 0 , w  dalam F
 
LA    

• Dengan demikian bahasa dari A adalah himpunan string w


yang berawal dari state awal q0 ke suatu accepting state.
• Jika L adalah L(A) untuk suatu DFA A, maka dikatakan L
adalah bahasa regular.
Contoh 5
 Diberikan DFA dengan diagram transisi berikut

• String w1 = abb
diterima oleh DFA
melalui kalkulasi
berikut:
• Karena q2 dalam F =
{q2}, maka string w1
= abb dalam L(A).
Daftar Pustaka
 John E. Hopcroft, Rajeev Motwani, Jeffrey D.
Ullman. 2001. Introduction to Automata
Theory, Languange, and Computation. Edisi
ke-2. Addison-Wesley.

Anda mungkin juga menyukai