Anda di halaman 1dari 32

NFA

Non-Deterministic Finite Automata (NFA)


DFA

 DFA (Deterministic Finite


Automata)
◦ 1 keadaan + 1 input  1 keadaan
1

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

Bagaimana cara membaca input


010110?
Simbol input

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.

(akan dipelajari pada pertemuan berikutnya)


Contoh 2
Misalkan L adalah bahasa yang terdiri
dari alfabet {0,1}, dimana L memiliki
satu simbol 1 di posisi ketiga dari
belakang (misal 000100 termasuk
dalam L, 0011 tidak termasuk dalam
L).
Buatlah NFA yang mengenali bahasa L
tersebut.
Jawab

0,1
M1
1 0, 1 1 0, 1
q0 q1 q2 q3

L memiliki simbol1 di posisi ketiga


dari belakang
(misal 000100 termasuk dalam L, 0011 tidak termasuk
dalam L)
 Salah satu cara untuk membuat
komputasi mesin M1 adalah tetap
berada pada keadaan awal, q0,
hingga bit ketiga dari belakang.
 Artinya, jika simbol input adalah 1,
maka percabangan akan menuju q1.
Keadaan q2 dan q3 digunakan untuk
memeriksa tebakan benar atau tidak.
Penambahan  pada M
 Misal kita menambahkan label  pada
anak panah dari q1 ke q2 dan dari q2
ke q3 menjadi NFA M2
 Artinya, kedua anak panah memiliki
label 0, 1, ; bukan hanya 0, 1.
 Dengan modifikasi tersebut, bahasa
seperti apakah yang akan dikenali
M2?
Contoh 3
 NFA M3 berikut
memiliki alfabet
input {0}
 Alfabet yang
memiliki hanya
satu simbol
input disebut
dengan unary
alphabet.
Keterangan NFA M3
 Mesin M3 menunjukkan kemudahan
dari penggunaan tanda panah berlabel
.
 N3 menerima semua string dalam
bentuk 0k dengan k adalah kelipatan 2
atau 3. (ingat bahwa pangkat menandakan
pengulangan, bukan tanda eksponesial).
Sebagai contoh, M3 menerima string , 00,
000, dan 000000; tidak menerima string 0
atau 00000.
Keterangan NFA M3
 Mesin M3 digunakan untuk menguji
jumlah 0 kelipatan 2 atau kelipatan 3
dengan membuat percabangan siklus
atas ataupun siklus bawah.
 Mesin M3 dapat digantikan dengan
mesin lain yang tidak memiliki  atau
NFA murni. Namun M3 menujukkan
cara termudah untuk memahami
Language yang dimaksud.
Definisi Formal NFA
 5-tuple NFA dan DFA berbeda dalam
hal fungsi transisinya.
◦ DFA,  : Q    Q
◦ NFA,  : Q    P(Q)
  adalah   {}
 P(Q) adalah himpunan bagian yang
mungkin dari Q.
◦ P(Q) disebut dengan POWER SET DARI
Q.
◦ Banyaknya P(Q) adalah 2k, dengan k =
jumlah state
5-tuple NFA
5-tuple NFA, (Q, , , q0, F).
dengan:
 Q = himpunan keadaan NFA.
  = himpunan alfabet masukan.
  = fungsi transisi = Q    P(Q).
 q0 = keadaan awal, q0  Q.
 F = himpunan keadaan akhir, F  Q.
Contoh 4
Tuliskan definisi formal NFA berikut ini.

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)

Anda mungkin juga menyukai