0
q0 q1
Non-deterministic Finite
Automata (NFA)
Non-deterministic
◦ 1 keadaan + 1 input ≥ 1 keadaan.
◦ Atau, 1 keadaan + 1 input 0 keadaan
◦ Setiap DFA merupakan NFA.
NFA vs DFA (1)
Setiap keadaan di DFA memiliki tepat
satu anak panah transisi untuk setiap
simbol alfabet.
Pada NFA, satu keadaan dapat
memiliki nol, satu, atau lebih anak
panah untuk setiap simbol transisi.
NFA vs DFA (2)
DFA: Label transisi berupa simbol-
simbol alfabet.
NFA: Label transisi dapat berupa
simbol alfabet, dan/atau .
◦ Nol, satu, atau lebih anak panah berlabel
dapat berasal dari tiap keadaan.
Cara Kerja NFA (1)
Misal: kita berada di keadaan q1 suatu NFA
N1.
Diberikan simbol input 1.
◦ Setelah membaca input tersebut, mesin
menuju semua keadaan berikutnya yang
berlabel 1.
Kemudian mesin membaca input berikutnya.
◦ Bila keadaan berikutnya ada lebih dari satu
keadaan, ikuti semua keadaan tersebut.
◦ Bila tidak ditemukan keadaan berikutnya,
maka runtutan string tersebut mati.
Jika salah satu dari cabang urutan string
mencapai keadaan akhir/ final state/
keadaan yang diterima, NFA menerima
string yang diberikan.
Cara Kerja NFA (2)
Jika muncul keadaan dengan simbol
, maka tanpa membaca input lagi
mesin menuju ke semua keadaan
berikutnya yang dituju simbol .
NFA sebagai Komputasi
Paralel
NFA dapat dipandang sebagai bentuk
komputasi paralel
◦ beberapa ‘proses’ dijalankan bersamaan.
NFA yang bercabang/mengikuti sejumlah
pilihan berarti mengalami proses
pemisahan menjadi sejumlah ‘anak’
dengan proses yang saling terpisah.
Jika salah satu proses percabangan ini
sampai ke keadaan akhir, maka seluruh
komputasi untuk string tersebut
diterima.
Pohon Kemungkinan (1)
Salah satu cara membayangkan
komputasi NFA yakni dengan pohon
kemungkinan.
◦ Sebagai akarnya adalah keadaan awal
komputasi.
◦ Setiap titik cabang pada pohon adalah titik
cabang komputasi.
Mesin menerima masukan string jika
salah satu cabang komputasi
berakhir di keadaan akhir/ keadaan
Pohon Kemungkinan (2)
Contoh 1
Bentuk
Pohon
Kemungkinan
NFA yang menerima semua string
yang memiliki substring 11
dan 101
NFA menjadi DFA
Setiap NFA dapat diubah menjadi
suatu bentuk DFA.
Membuat NFA kadangkala lebih
mudah dibandingkan dengan
membuat DFA.
Fungsi NFA lebih mudah dipahami
daripada DFA.
0,1
M1
1 0, 1 1 0, 1
q0 q1 q2 q3
q0
M4
b a
q1 q2
a, b
a, b
Jawab: 5-Tuple NFA untuk M4
M4 = ({q0, q1, q2}, {a,b}, , q0, {q0})
= a b
q0
q0 q1 q2
q1 {q1,q2} q1,q2 b a
q2 q0
q1 q2
= stuck / die / error a, b
a, b
Contoh 5
Buatlah NFA M5 yang dapat menerima
semua string dengan akhiran 00.
Buatlah menggunakan 3 keadaan!
Jawab
NFA M5 yang dapat menerima semua
string berakhiran 00
0,1
0 0
q0 q1 q3
5–tuple NFA M5
N4 = ({q0, q1, q2}, {0,1}, , q0, {q2})
= 0 1
q0 {q0, q0
q 1}
0,1
q1 q2
q2
0 0
q0 q1 q2
Penerapan NFA: mencari kata
NFA yang mencari kata web dan ebay
pada dokumen.
Latihan
1. Gambarkan diagram transisi NFA
berikut ini. 0 1
Q = {q0, q1,q2, q3, q4} q {q0, q3} {q0, q1}
0
Σ = {0,1} q1 {} {q2}
S = q0
q2 {q2} {q2}
F = {q2, q4}
q3 {q4} {}
q4 {q4} {q4}
Latihan
2. Selidiki apakah string berikut ini
diterima oleh NFA di bawah.
Gambarkan pohon kemungkinannya.
a. 01001
b. 10101
3. Tuliskan
definisi 5-tuple
NFA tersebut.
Latihan
4. Jika = {a, b, c}, rancanglah NFA
yang menerima bahasa berikut ini.
a. String yang mengandung minimal 1
simbol a dan 1 simbol b
b. String dalam bentuk ambncp (m, n, p ≥ 0)