Non-deterministic Finite Automata (NFA)

Download Report

Transcript Non-deterministic Finite Automata (NFA)

Yenni Astuti
Version 1.0.0
Pertemuan ke-3 dan ke-4
• DFA (Deterministic Finite Automata)
– 1 keadaan + 1 input  1 keadaan
1
0
q0
Week-5
NFA
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.
Week-5
NFA
NFA vs DFA
1
• Setiap keadaan di DFA memiliki tepat satu
anak panah transisi untuk setiap simbol
alfabet.
• Otomata NFA melanggar aturan DFA. Keadaan q1
memiliki satu anak panah transisi untuk simbol 0,
namun untuk simbol 1, anak panahnya ada dua.
– Keadaan q2 punya satu anak panah untuk simbol 0,
namun tidak memiliki anak panah untuk 1.
– Pada NFA, satu keadaan dapat memiliki nol, satu,
atau lebih anak panah untuk setiap simbol
transisi.
Week-5
NFA
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.
Week-5
NFA
Cara Kerja?
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.
Week-5
NFA
Cara Kerja?
2
• Jika muncul keadaan dengan simbol , maka
tanpa membaca input lagi mesin menuju ke
semua keadaan berikutnya yang dituju simbol
.
Week-5
NFA
Komputasi Paralel?
• NFA dapat dipandang sebagai bentuk komputasi
paralel, yakni 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.
Week-5
NFA
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 yang diterima.
Week-5
NFA
Pohon Kemungkinan
Week-5
NFA
2
Contoh
1
Bagaimana cara membaca input 010110?
Week-5
NFA
Simbol input
Bentuk
Pohon
Kemungkinan
Week-5
NFA
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.
Week-5
NFA
Contoh
2
Misalkan A adalah bahasa yang terdiri dari
semua string {0,1}.
A memiliki satu 1 di posisi ketiga dari
belakang (misal 000100 termasuk dalam
A, 0011 tidak termasuk dalam A)
Bentuk NFA N2 yang mengenali A, seperti berikut:
Week-5
NFA
NFA N2
0,1
q0
1
q1
0, 1
q2
1
0, 1
q3
A memiliki satu 1 di posisi ketiga dari
belakang
(misal 000100 termasuk dalam A, 0011 tidak termasuk dalam A)
Week-5
NFA
Cara Membuat N2
• Salah satu cara untuk membuat
komputasi NFA N2 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.
Week-5
NFA
NFA N2 menjadi DFA
• Telah dikatakan, setiap NFA dapat
diubah menjadi DFA ekivalennya.
• Kadangkala, DFA ekivalen punya lebih
banyak keadaan dibanding NFA.
• DFA terkecil untuk A memiliki 8
keadaan.
Week-5
NFA
DFA dari N2
0
0
q000
0
0
q100
q110
q010
1
1
0
0
1
1
q001
q101
1
0
0
1
1
q011
1
q111
Penambahan  pada N2
• Misal kita menambahkan label  pada anak
panah dari q1 ke q2 dan dari q2 ke q3 dari
Mesin N2.
• Artinya, kedua anak panah memiliki label 0, 1,
; bukan hanya 0, 1.
• Dengan modifikasi tersebut, Language seperti
apakah yang akan dikenali N2?
• Modifikasikan juga DFA N2!
Week-5
NFA
Unary Alphabet
• NFA N3 berikut
memiliki alfabet
input {0}
• Alfabet yang
memiliki hanya
satu simbol
input disebut
dengan unary
alphabet.
Week-5
NFA
Keterangan NFA N3
• Mesin N3 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, N3 menerima string , 00, 000, dan 000000;
tidak menerima string 0 atau 00000.
Week-5
NFA
Keterangan NFA N3
• Mesin N3 digunakan untuk menguji jumlah 0
kelipatan 2 atau kelipatan 3 dengan membuat
percabangan siklus atas ataupun siklus
bawah.
• Mesin N3 dapat digantikan dengan mesin lain
yang tidak memiliki  atau NFA murni. Namun
N3 menujukkan cara termudah untuk
memahami Language yang dimaksud.
Week-5
NFA
Latihan NFA
• Buatlah NFA N4 yang dapat menerima string ,
a, baba, dan baa; namun tidak menerima
string b, bb, dan babba.
• Buatlah menggunakan 3 keadaan!
Mesin ini akan kita gunakan nanti untuk mengilustrasikan prosedur
pengubahan NFA ke DFA.
Week-5
NFA
NFA N4 yang dapat menerima string , a, baba, dan
baa; namun tidak menerima string b, bb, dan
babba.

q0
b

q1
a, b
a, b
Week-5
NFA
a
q2
q0
Label  dapat diletakkan
sebelum keadaan q0. Jika 
tidak dituliskan juga tidak
jadi masalah karena semua
anak panah sebelum
keadaan awal (start state)
artinya input 
5-Tuple NFA N4
N4 = ({q0, q1, q2}, {a,b}, , q0, {q0})
=
a
b

q0
q0
q1
q2
q1
q1,q2
q1,q2

q2
q0


 = stuck / die / mati
Week-5
NFA
Buatlah NFA N5 yang dapat
menerima semua string
dengan akhiran 00.
Buatlah menggunakan 3 keadaan!