Anda di halaman 1dari 21

CSH2B3 / TEORI BAHASA DAN

AUTOMATA
4. Non-deterministic Finite Automata

Intelligent, Computing, and Multimedia

1 9/9/2018
Finite Automata
Suatu model komputer dengan jumlah memory yang sangat
terbatas (Model komputasional yang paling sederhana)

Jenis :
– Deterministik Finite Automata
 “Deterministik”  setiap input alphabet/simbol dari
suatu state hanya akan bertransisi ke satu state lain.
 Atau dengan kata lain deterministik tidak ambigu dalam
menentukan next state.
– Non-Deterministik Finite Automata
 “Non-Deterministrik”  setiap input alphabet/simbol dari
suatu state mungkin akan bertransisi ke lebih dari satu
state lain.
Contoh Non-Deterministik
Lihat bahwa dari q0, akan muncul kerancuan jika
menerima input 0 (akan ke q0 atau q1).
Non-Deterministik Finite Automata[1] - Sifat
NFA memiliki kemampuan untuk berada di satu state pada
saat yang bersamaan.

NFA selalu menerima bahasa yang di terima oleh DFA.

Sebagaimana DFA, NFA menerima secara tepat bahasa


Reguler. Hal ini dikarenaakan NFA dan DFA berada pada
kelas bahasa yang sama. (Lihat hirarki Chomsky).

NFA sering kali lebih ringkas dibanding DFA.


Non-Deterministik Finite Automata[1] -
Informal
Terdiri dari Finite State
Satu initial State
Minimal satu final state.
Terdiri dari Finite Symbol (alphabet)
Himpunan fungsi transisi .
Perbedaan NFA dan DFA tertelak pada aturan transisi
dimana pada suatu state saat menerima alphabet, bisa
ke nol, satu, dua atau lebih state yang lain.
NFA sebagai Acceptor.
Katakanlah kita punya mesin sebelumnya (mesin
yang menerima string berakhiran 01).
Lihat 00101 diterima oleh mesin itu.
Definisi Formal NFA [1]
Suatu NFA dapat didefinisikan secara formal sebagai 5-tuple
berikut :
A = (Q, , ,q0,F)
Dimana :
1. Q adalah himpunan terbatas dari states,
2.  himpunan terbatas alphabet,
3. : Q ×  Q fungsi transisi, dinotasikan ke
(q,a) p
dan p adalah himpunan state hasil transisi.
4. q0Q adalah start state, dan
5. F Q adalah himpunan accept states (atau final states).
Definisi Formal NFA [1]
Pada kasus di atas dapat didefinisikan :
({q0, q1, q2}, {0, 1}, , q0, {q2})
dan  dideskripsikan sbg

0 1
q0 {q0, q1} {q0}

q1 {} {q2}
q2 {} {}
Fungsi Transisi yang Diperluas
Fungsi tansisi yang ada di definisi formal dapat
diperluas menjadi bentuk yang menerima
beberapa input sekaligus. [Ullman]
Perluasan aturan transisi itu terangkum dalam :
1. ’ (q0, λ) = {q0}
2. ’ (q0, 0) = {q0, q1}
3. ’ (q0, 00) = ’ (q0, 0)  ’ (q1, 0) = {q0, q1}  {} =
{q0, q1}
4. ’ (q0, 001) = …
5. ’ (q0, 0010) = …
6. ’ (q0, 00101) = …
Bahasa dari NFA
Jika A = (Q, , ,q0,F) adalah NFA, maka L(A) =
{w | ’ (q0, w)  F ≠ {} }
Sehingga L(A) adalah himpunan untaian string w
dari * sehingga ’ (q0, w) memuat sedikitnya
satu final / accepted state.
Ekuivalensi DFA dengan NFA [1]
Pada banyak bahasa, kita lebih mudah membangun ke
dalam NFA, bila dibandingkan DFA.
Ada Fakta mengejutkan, untuk setiap NFA selalu bisa di
deskripsikan oleh satu bentuk DFA.
Jumlah state yang dimiliki NFA kira-kira sama dg jumlah
state DFA.
Di kasus yang paling buruk, jumlah state DFA adalah 2n,
dari n state di NFA.
Ekuivalensi DFA dengan NFA [2]
Jika kita memiliki NFA N= (QN, , N,q0,FN), maka kita bisa
membangun L(D) = L(N), dengan DFA D= (QD, , D, {q0},
FD)
QD adalah powerset dari QN. Lihat jumlah state QD adalah 2n
jika kita memiliki n state di QN. (kadang tidak semua state
di pakai)
FD adalah himpunan himpunan bagian S dari QN, sehingga S
 FN = {}. FDadalah seluruh himpunan state N yang
memasukkan setidaknya satu accepted state N.
Ekuivalensi DFA dengan NFA [3]
Dari definisi-definisi di atas, kita dapatkan aturan
transisi berikut ini :
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
Ekuivalensi DFA dengan NFA [4]
Dari semua state yang didapat, hanya ada 3 state
saja yang bisa di capai yakni B, E, dan F.
Untuk menghindari pembuatan transisi yang tidak
pernah dicapai, dapat dilakukan dengan “Lazy
Evaluation”
Ekuivalensi DFA dengan NFA [5]
’ ({q0}, 0) = {q0, q1}, dan ’ ({q0}, 1) = {q0}

’ ({q0, q1}, 0) = {q0, q1}, dan ’ ({q0, q1}, 1) = {q0 , q2}

’ ({q0, q2}, 0) = {q0, q1}, dan ’ ({q0, q2}, 1) = {q0}

1 0

0 1
B E F

0
1
Latihan [1]

Cari padanan DFA untuk NFA String berakhiran


010 berikut ini
0, 1

0 1 0
q0 q1 q2 q3
Latihan [2]
Ubah NFA berikut menjadi Deterministik Finite
Automata, dan gambar state diagram yang
dihasilkan.

r
0 1
0
0 1
p q t
0
0, 1
s
Latihan [3]
Bila kita memiliki mesin M1 dan M2 seperti di
bawah, maka tentukan hasil operasi :
– M1 ˚ M2
– M2 U M1
– M2*

0, 1 0, 1
a b c d
1 0
M1 M2
Latihan [4]
Yang menjadi pembeda antara deterministik dan
non deterministik adalah :
a. Ada/tidak transisi epsilon.
b. Fully Defined.
c. Ambigu / tidak dalam menentukan next state.
d. a, b, dan c benar.
e. b, dan c benar.
Latihan [5]
Jika kita memiliki mesin seperti gambar di bawah, maka
pada saat kita definisikan sebagai tupple (Q, , ,q0,F) akan
kita dapatkan:
a. Q : {q0, q1, q2}
b.  : {0, 1}.
c. q0 sebagai initial state.
d. q2 sebagai final state.
e. semua jawaban benar.
THANK YOU
9/9/2018
21

Anda mungkin juga menyukai