Anda di halaman 1dari 41

Teknik Informatika

2014
Ir. Ahmad Haidaroh, M.Kom.
Definisi
• Mesin abstrak berupa
sistem model
matematika dengan
masukan dan keluaran
diskrit yang dapat
mengenali bahasa
paling sederhana
(bahasa reguler) dan
dapat
diimplementasikan
secara nyata.
Jenis FSA
• Deterministik (DFSA/DFA)
pada setiap input, hanya ada satu keadaan
(state) tujuan dari keadaan saat ini.
• Nondeterministik (NFSA/NFA)
pada setiap input terdapat lebih dari satu
keadaan tujuan dari keadaan saat ini.
D-FSA/DFA
1. Himpunan keadaan (Q).
2. Himpunan simbol input ()
3. Fungsi transisi (), memuat satu keadaan asal
dan satu simbol input dan satu keadaan tujuan.
4. Keadaan awal (q0)merupakan salah satu dari
Q.
5. Himpunan keadaan final atau yang diterima,
dinotasikan dengan F (FQ)
5-TUPLE D-FSA

DFSA A, terdiri atas 5 tuple, yaitu:

A = (Q, , , q0, F)
1. Himpunan keadaan (Q).
2. Himpunan simbol input ()
3. Fungsi transisi (), memuat satu keadaan asal dan satu simbol
input dan satu keadaan tujuan.
4. Keadaan awal (q0)merupakan salah satu dari Q.
5. Himpunan keadaan final atau yang diterima, dinotasikan dengan
F (FQ)
Notasi Lain DFSA
1. Diagram Transisi / State Diagram
• Tiap keadaan merupakan simpul
• Tiap keadaan q  Q dan tiap simbol a  , dituliskan
sebagai (q,a) = p. Artinya, diagram transisi memiliki
panah dari q ke p, yang berlabel a.
• Keadaan awal (q0) ditandai dengan adanya panah
tanpa sumber.
• Simpul yang menjadi keadaan final ditandai dengan
lingkaran bergaris tepi ganda
Notasi Lain DFSA
2. Tabel Transisi
• Representasi daftar dari suatu fungsi
• Baris menunjukkan keadaan dan kolom
menunjukkan input.
• Isi dari baris menunjukkan keadaan q dan isi dari
kolom input a menunjukkan keadaan (q,a)
Contoh: A = (Q, , , q0, F)
DFSA yang dapat menerima string berakhiran 01
A = ({q0, q1, q2}, {0,1}, , q0, {q2})
dengan fungsi transisi  diberikan dalam bentuk
tabel:  0 1
 q0 q1 q0
q1 q1 q2
* q2 q2 q1

1 0 0
1

0 1
q0 q1 q2

State Diagram
0
Contoh DFSA :
M = (Q, , , s, F), dimana :

Q = {q0, q1}, Tabel Transisi Tabel Transisi


 = {a,b}, q  (q, )  a b
S = q0 ,
q0 a q0 atau q0 q0 q1
F = {q0}
q0 b q1 q1 q1 q0
q1 a q1
q1 b q0

a a Jika M diberi input aabba, dengan state awal (q0, aabba),


maka :
(q0,aabba) ├M (q0,abba)
q0 b q1 ├M (q0,bba)
├M (q1,ba)
├M (q0,a)
b ├M (q0,e)
Karena (q0,aabba) ├*M (q0,e), jadi aabba diterima oleh M
Diagram State
Contoh: DFSA yang dapat menerima semua
string berakhiran 01
0,1

0 1
q0 q1 q2

11101, lakukan
Contoh : diberikan input pada mesin DFSA 010111, lakukantracer
tracer: :
,11101)
(q0,010111) ├M (q0,10111)
,1101)
├M (q0,0111)
,101)
├M (q0,111)
,01)
├M (q01,11)
,1)
├M (q02,1)
,e)
Karena berhenti di├Mq(q
2, 0maka
,e) 11101 diterima oleh mesin DFSA
Karena berhenti bukan di q2, maka 010111 tidak diterima oleh mesin DFSA
DFA nya
Tabel Transisi
Q = {q0 , q1 , q2 , q3 }
 0 1
 = {0,1}
S = q0 q0 q2 q1
F = { q0} q1 q3 q0
q2 q0 q3
q3 q1 q2

Contoh : diberikan string 011 dan 1010,


buktikan bahwa string tersebut diterima
atau ditolak !

(q0,011) = (q2,11) = (q3,1) = q2 Ditolak

(q0,1010) = (q1,010)
= (q3,10)
=(q2,0)
State Diagram = (q0,e) Diterima
Perluasan Fungsi Transisi untuk String
• DFSA mendefinisikan bahasa sebagai
himpunan semua string yang hasilnya dalam
bentuk urutan transisi keadaan dari keadaan
awal sampai keadaan final (yang diterima)
Perluasan Fungsi Transisi untuk String (lanj.)
• Fungsi Transisi Diperluas
• Mendeskripsikan yang terjadi ketika suatu keadaan
dimulai dan sembarang urutan input diikuti.
• Jika  adalah fungsi transisi, maka fungsi transisi
diperluas dinotasikan dengan 𝛿
• Fungsi transisi diperluas merupakan fungsi saat
keadaan q untuk masukan berupa string w, dan
menghasilkan keadaan p (keadaan yang dicapai
otomaton ketika memulai di keadaan q dan memproses
urutan input w)
Definisi Formal dari Fungsi Transisi Diperluas


Definisi Formal dari Fungsi Transisi Diperluas

Induksi: Misal w adalah string yang berbentuk xa;


yakni a merupakan simbol terakhir dari w, dan x
merupakan string selain simbol terakhir.

Maka: 𝛿(q,w) = (𝛿(q,x), a)


• Untuk memproses 𝛿(q,w), pertama proses dahulu 𝛿(q,x),
hasilnya adalah keadaan yang otomaton tempati setelah
memproses semua simbol selain simbol terakhir dari w.
• Misal, keadaan ini adalah p, yakni 𝛿(q,x) = p
• Maka 𝛿(q,w) adalah yang kita peroleh dengan melakukan
transisi dari keadaan p dengan input a (simbol terakhir dari
w)
Contoh
Desain suatu DFSA yang dapat menerima bahasa:

L = {w | w memiliki jumlah 0 ganjil dan jumlah 1 ganjil}


Bahasa dari DFSA
Bahasa dari DFSA A = (Q, , , q0, F), dinotasikan
dengan L(A), didefinisikan sebagai

L(A) = {w | 𝛿(q0,w) berakhir di F}

Bahasa dari A merupakan himpunan semua string


w yang memiliki keadaan awal q0 dan berakhir di
keadaan final (yang diterima)

Jika L adalah L(A) dari suatu DFSA, maka L


adalah bahasa reguler
Nondeterministik Finite State Automata
(NFSA)
• Suatu NFSA memiliki kelebihan yakni berada di
beberapa keadaan pada saat yang sama.
• Kelebihan ini sering diekspresikan sebagai
kemampuan untuk “menebak” sesuatu mengenai
inputnya.
• Tiap NFSA menerima suatu bahasa yang juga
dapat diterima oleh suatu DFSA.
• NFSA lebih sederhana daripada DFSA.
NFSA (lanj.)
• NFSA dapat selalu diubah ke DFSA, namun
menghasilkan jumlah keadaan baru yang
jumlahnya eksponensial (kasus yang jarang
terjadi)
• Perbedaan antara DFSA dan NFSA adalah jenis
fungsi transisinya ()
• Pada NFSA,  merupakan fungsi yang memuat satu
keadaan, dan simbol input (seperti fungsi transisi
DFSA), namun menghasilkan himpunan nol atau lebih
dari satu keadaan (daripada menghasilkan tepat satu
keadaan, seperti yang harus dilakukan DFSA)
Contoh: NFSA yang dapat menerima semua
string berakhiran 01
0,1

0 1
q0 q1 q2
Definisi Formal NFSA
5-tuple NFSA dituliskan sebagai
A = (Q, , , q0, F)

• Q adalah himpunan terbatas atas keadaan


•  adalah himpunan terbatas atas simbol input
• q0  Q adalah keadaan awal
• F (F  Q) adalah himpunan keadaan final (yang
diterima)
•  (fungsi transisi) adalah fungsi yang mengandung
satu keadaan dari Q dan simbol input dalam  untuk
menuju ke beberapa keadaan dalam Q.
Definisi Formal NFSA (lanj.)

Satu-satunya perbedaan antara NFSA dan DFSA


adalah banyaknya hasil yang diperoleh dari 
Contoh: NFSA yang dapat menerima semua
string berakhiran 01
A = ({q0, q1, q2}, {0,1}, , q0, {q2})
Dengan fungsi transisi () diberikan dalam bentuk
tabel:
0 1 Lebih dari 1 State
 q0 {q0,, q1} {q0}
q1  {q2}
* q2  
Tidak ada state
0,1 tujuan

0 1
q0 q1 q2
Fungsi Transisi Diperluas
Basis: 𝜹(q,) = {q}
Tanpa mendapat simbol input, kita tetap berada di keadaan semula.

Induksi:
• Misalkan w adalah string dalam bentuk xa; dengan a merupakan
symbol terakhir dari w dan x suatu string yang ada dalam w selain
symbol terakhir.
• Misalkan 𝛿(q,x) = {p1, p2, …, pk}
• Bila
𝒌

𝜹 𝒑𝒊, 𝒂 = {𝒓𝟏, 𝒓𝟐, … , 𝒓𝒎}


𝒊=𝟏
• Maka: 𝛿(q,w) = {r1, r2, …, rm}
• Kita kerjakan 𝛿 (q,w) dengan mengerjakan 𝛿 (q,x) kemudian ikut
itransisi dari keadaan yang dihasilkan ke keadaan yang berlabel a.
Contoh: NFSA yang dapat menerima semua
string berakhiran 01
0,1

0 1
q0 q1 q2

Untuk w = 00101
1. 𝛿(q0,) = {q0}
2. 𝛿(q0,0) = {q0,0} = {q0, q1}
3. 𝛿(q0,00) = {q0,0}  {q1,0} = {q0, q1}   = {q0, q1}
4. 𝛿(q0,001) = {q0,1}  {q1,1} = {q0}  {q2} = {q0, q2}
5. 𝛿(q0,0010) = {q0,0}  {q2,0} = {q0, q1}   = {q0, q1}
6. 𝛿(q0,00101) = {q0,1}  {q1,1} = {q0}  {q2} = {q0, q2}
Bahasa NFSA
Bahasa suatu NFSA A = (Q, , , q0, F) dinotasikan
dengan L(A) yang didefinisikan sebagai

L(A) = {w | 𝜹(q0,w)  F   }

Bahasa dari A merupakan himpunan string w *


sehingga 𝛿(q0,w) mengandung setidaknya satu
keadaan yang diterima.

Meskipun w dapat menuju suatu keadaan yang tidak


diterima atau tidak menuju kesuatu keadaan
manapun, tidak menghalangi w untuk diterima oleh
NFSA.
Ekivalensi DFSA dan NFSA
• Setiap bahasa yang dapat dideskripsikan oleh
NFSA, dapat dideskripsikan pula oleh suatu
DFSA.
• Pada prakteknya, DFSA memiliki jumlah keadaan
yang sama dengan NFSA, meskipun transisinya
lebih banyak.
• Pada kasus tertentu, DFSA dapat memiliki 2n
keadaan (untuk NFSA dengan n keadaan)
Bukti: DFSA dapat melakukan semua
yang dilakukan NFSA
Pembuktian melibatkan konstruksi yang disebut
konstruksi himpunan bagian karena melibatkan
pembuatan semua himpunan bagian dari
himpunan dari keadaan–keadaan NFSA.

Dari NFSA ke DFSA


• dimiliki NFSA N = (QN, , N, q0, FN)
• Tujuannya untuk membuat DFSA D = (QD, , D,
{q0}, FD) sehingga L(D) = L(N)
Konstruksi Himpunan Bagian
• Input alfabetnya sama
• Himpunan keadaan awal di D merupakan himpunan yang
memuat keadaan awal dari N.
• QD merupakan himpunan dari himpunan bagian dari QN, yakni
QD merupakan himpunan pangkat dari QN. Jika QN memiliki n
keadaan, QD memiliki 2n keadaan. Tidak semua keadaan dapat
diakses dari keadaan awal.
• Fd merupakan himpunan dari himpunan bagian S dari QN
sehingga S  FN  . Sehingga FD merupakan semua
himpunan dari keadaan N yang memuat setidaknya satu
keadaan yang diterima dari keadaan N.
• Untuk tiap himpunan S  QN dan untuk tiap simbol input a 
D(S,a) = 𝑝∈𝑆 𝛿𝑁 (𝑝, 𝑎)
• Untuk menghitung D(S,a), dilihat semua keadaan p dalam S,
perhatikan perubahan keadaan N dari p ketika diberikan input
a, dan ambil gabungan dari keseluruhan keadaan tersebut.
Contoh
0,1

0 1
q0 q1 q2

QN = {q0, q1, q2}, maka QD = {, {q0}, {q1}, {q2}, {q0,


q1}, {q0,q2}, {q1,q2},{q0,q1,q2}} sehingga QD memiliki
8 keadaan (tiap keadaan berkaitan dengan
himpunan bagian dari QN)
Contoh (lanj.)
0,1

0 1
q0 q1 q2

0 1
  
 {q0} {q0, q1} {q0}
{q1}  {q2}
* {q2}  
{q0, q1} {q0, q1} {q0, q2}
* {q0, q2} {q0, q1} {q0}
* {q1, q2}  {q2}
* {q0,q1,q2} {q0, q1} {q0, q2}
Contoh: dengan nama baru
• Catatan: keadaan D berkaitan dengan himpunan
bagian dari keadaan N, namun kita dapat
notasikan keadaan D menggunakan A – F.
0 1 0 1
   A A A
 {q0} {q0, q1} {q0}  B E B
{q1}  {q2} C A D
* {q2}   * D A A
{q0, q1} {q0, q1} {q0, q2} E E F
* {q0, q2} {q0, q1} {q0} * F E B
* {q1, q2}  {q2} * G A D
* {q0,q1,q2} {q0, q1} {q0, q2} * H E F
Transformasikan
NFSA berikut
menjadi DFSA.
Langkah ke–1
Membuat state DFSA
Himpunan state yang
baru :

Q’ = {, {1}, {2}, {3},


{1,2}, {1,3}, {2,3},
{1,2,3}}
Tadinya Himpunan
State yg lama : {1,2,3}
Langkah ke–2
Membuat Initial State DFSA
Initial state yang baru
untuk start :

q0’= {1,3}
Langkah ke – 3.
Membuat Final State DFSA
Final state yang baru :

F’= {{1}, {1,2}, {1,3},


{1,2,3}}

Semua yg dimulai
dari 1.
Langkah ke–4
Membuat Diagram Transisi DFSA
= a b
  
1
1  2
2 2,3 2,3 b a
3 1  
1,2 2,3 2,3
2 3
1,3 1 2 a, b
2,3 1,2,3 2,3
a, b
1,2,3 1,2,3 2,3
a b
Langkah ke–5   
1  2
Penghapusan State tak-perlu 2 2,3 2,3
3 1,3 
1,2 2,3 2,3
1,3 1,3 2
2,3 1,2,3 2,3
1,2,3 1,2,3 2,3
Langkah ke–5
Penghapusan state tak-perlu

Hapus state yg tidak bisa dicapai dari state awal (1,3)


Langkah ke–5
Penghapusan state tak-perlu
Langkah ke–5
Penghapusan state tak-perlu
a

Hasil akhir lintasan

Anda mungkin juga menyukai