Anda di halaman 1dari 15

MAKALAH TEORI BAHASA DAN OTOMATA

DETERMINISTIK FINITE AUTOMATA (DFA) dan NON-DETERMINISTIK


FINITE AUTOMATA (NFA)

























Nama : ALFIANDRI
NIM : 121051128
Hari Kuliah : RABU
Kelas : B





Institut Sains dan Teknologi AKPRIND Yogyakarta
Teknologi Industri / Teknik Informatika
2013/2014
KATA PENGANTAR
Puji syukur penulis panjatkan kehadirat Allah SWT, yang telah memberikan
berkat , karunianya dan kekuatan kepada penulis sehingga makalah Teori bahasa dan
otomata yang berjudul deterministik finite automata (DFA) dan non-deterministik finite
automata (NFA) .Makalah ini disusun bertujuan agar dapat menambah pengetahuan
dan wawasan mahasiswa dalam belajar sebuah pemahaman di mata pelajaran teori
bahasa dan otomata,
Dalam Penulisan makalah ini penulis merasa masih banyak kekurangan-
kekurangan baik pada teknis penulisan maupun materi,. Dengan demikian kritik dan
saran dari semua pihak sangat membantu penulis yang di harapkan demi
penyempurnaan pembuatan makalah ini.

Dengan demikian, semoga dengan mempelajari makalah ini, mahasiswa akan
mampu menghadapi masalah atau kesulitan yang timbul dalam belajar Teori bahasa
dan otomata , dengan harapan semoga masiswa mampu dalam memecahkan soal-soal
yang mengenai dfa dan nfa.








Yogyakarta,19 April 2014


Penulis




BAB 1
PENDAHULUAN
A. Latar Belakang
Dalam hierarki kelas-kelas bahasa menurut Chomsky, kelas bahasa yang paling
sederhana adalah kelas bahasa reguler (regular languages). Bahasa reguler dapat
dengan tepat dideskripsikan dengan menggunakan finite automata (FA); dengan kata lain
bahasa yang dapat diterima oleh suatu finite automata adalah bahasa reguler.
Finite automata merupakan mesin abstrak yang berupa sistem model matematika
dengan masukan dan keluaran diskrit yang dapat mengenali bahasa paling sederhana
(bahasa reguler) dan dapat diimplementasikan secara nyata di mana sistem dapat berada
di salah satu dari sejumlah berhingga konfigurasi internal disebut state. Banyak model
perangkat keras dan perangkat lunak yang menggunakan finite automata sebagai
penerapannya. Beberapa contoh penerapan finite automata dalam perangat keras dan
perangkat lunak adalah dalam perancangan dan pemantauan perilaku rangkaian digital,
scanning dokumen teks dalam halaman web guna menemukan kesamaan kata, frase
dan bentuk lain (Hopcroft et al., 2007).
Terdapat dua jenis finite automata, yaitu deterministik finite automata (DFA) dan non-
deterministik finite automata (NFA). Perbedaan di antara kedua jenis finite automata
tersebut terletak pada kontrol terhadap finite automata tersebut (Hopcroft et al., 2007).
Deterministik finite automata (DFA) bersifat deterministik, yang berarti bahwa automata
tersebut tidak dapat berada di lebih dari satu state pada saat yang bersamaan,
sedangkan non-deterministik finite automata (NFA) bersifat non-deterministik, yang berarti
bahwa automata tersebut dapat berada di beberapa state pada saat yang bersamaan
atau dengan kata lain NFA dapat menebak di state mana dia berikutnya akan berada
(Hopcroft et al., 2007).
Ada banyak bahasa yang apabila digunakan akan membuat NFA lebih mudah
dibangun dibandingkan jika dibangun menggunakan DFA. Suatu bahasa yang dibangun
menggunakan NFA ternyata tidak lebih powerful dibandingkan dengan ketika dibangun
menggunakan DFA. Setiap bahasa yang dapat dideskripsikan oleh suatu NFA ternyata
dapat pula dideskripsikan oleh satu DFA. Bukti bahwa DFA dapat melakukan apa saja
yang dapat dilakukan NFA melibatkan suatu konstruksi yang disebut dengan subset
construction. Subset construction adalah prosedur untuk mentransformasikan suatu
NFA menjadi DFA (Hopcroft et al., 2007). Jumlah state yang dimiliki oleh DFA maupun
oleh NFA kurang lebih sama pada kebanyakan kasus tetapi berbeda dalam jumlah
transisi yang dimiliki oleh keduanya. Pada sebagian kecil kasus, untuk membuat
suatu DFA yang mengungkapkan bahasa yang sama dengan suatu NFA dengan
jumlah state n, bisa jadidalam kasus terburukdiperlukan 2
n
state (Hopcroft et al.,
2007).
Hopcroft et al. (2007) menyatakan bahwa salah satu bentuk perluasan dari finite
automata adalah finite automata dengan transisi epsilon (). NFA yang memiliki (-NFA)
memungkinkan NFA tersebut untuk menerima transisi atau string kosong. Lebih lanjut
efeknya pada NFA adalah memungkinkan terjadinya transisi spontan tanpa menerima
simbol masukan. Seperti halnya sifat non-deterministik pada finite automata,
penambahan transisi ini tidak memperluas kelas bahasa yang dapat diterima oleh
suatu finite automata. Perluasan ini hanya akan memberikan kemudahan dalam
membangun suatu automata.
DFA hasil transformasi dari suatu NFA bukanlah suatu DFA yang minimal. Untuk
suatu DFA, dapat menemukan DFA yang ekuivalen yang memiliki jumlah state yang
lebih sedikit atau sama dengan semua DFA yang menerima bahasa yang sama
(Hopcroft et al., 2007).
Selain itu juga, untuk membantu mahasiswa dan dosen dalam hal pengujian DFA dan
NFA maka dibuatlah sebuah compiler yang dapat menunjukkan perubahan suatu finite
automata dari suatu bentuk representasi ke bentuk representasi yang lain.


B. Rumusan Masalah
1. Apa perbedaan DFA dan NFA
2. Apa ekivalensi DFA dan NFA
3. Penjelasan Konversi dari NFA ke DFA
4. Fungsi transisi

C. Manfaat
Penulisan makalah ini memiliki manfaat sebagai berikut
1. Bagi penyusun, makalah ini dapat dijadikan pembelajaran dalam menulis
makalah yang baik dan menambah pengetahuan tentang materi yang ditulis.
2. Bagi pembaca, makalah ini dapat dijadikan bahan pembelajaran terhadap mata
kuliah terkait.





























BAB II
PEMBAHASAN

A. Perbedaan DFA dan NFA

FA dibagi menjadi 2, yaitu :
Jenis FA Definisi Bentuk Transisi
1. DFA(Deterministic
Finite Automata)
FA di dalam menerima
input mempunyai tepat
satu busur keluar

2. NFA(Non Deterministic
Finite Automata)
FA di dalam menerima
input mempuyai lebih
dari satu busur keluar
atau tidak punya busur
keluar.


Graph Transisi DFA





a b
q0 q0 q2
q1 q2 q2
q2 q2 q2



Graph Transisi NFA






a
q0 {q1,q3]
q1 q2
q2 -
q3 -

Perbedaan NFA & DFA
DFA Untuk sebuah state yang berlaku bias di tentukan tepat satu
state berikutnya
= (s,w) = Q F
Dibaca transisi dari state awal dengan inputan string w
dengan hasil state Q anggota F
S = state awal
W = string
Q = state initial
F = final state
NFA = (s,w) = Q F
Dibaca transisi dari state awal dengan inputan string w
dengan hasil state Q anggota F
S = state awal
W = string
Q = state initial
F = final state
Dari suatu state bias terdapat 0,1 atau lebih busur (transisi)
berlabel input yang sama

= (s,w) = {s} dimana (s,w) memuat suatu state di dalam F
contoh DFA

mesin DFA
disebut DFA karena setiap inputan state menerima tepat 1 state berikutnya

Q = {q0,q1,q2}
= {0,1}
S = {q0}
F = {q1,q2}

= fungsi transisi
(q0,0) = q1
(q0,1) = q2
(q1,0) = q1
(q1,1) = q1
(q2,0) = q2
(q2,1) = q2

Membuat table transisi
0 1
q0 q1 q2
q1 q1 q1
q2 q2 q2


contoh NFA

mesin NFA

Q = {q0,q1}
= {0,1}
S = {q0}
F = {q1}

= fungsi transisi
(q0,0) = q1
(q0,1) =
(q1,0) = q1
(q1,1) = q1

Membuat table transisi
0 1
q0 q1
q1 q1 q1

disebut NFA karna ada state yang kosong ""

B. Ekivalensi DFA dan NFA
Suatu DFA dapat dipandang sebagai kasus khusus (subset) dari NFA.
Jelas bahwa kelas bahasa yang diterima oleh DFA juga akan diterima oleh DFA
Namun ternyata DFA juga dapat mensimulasikan NFA; yaitu untuk setiap NFA
kita dapat membuat DFA yang ekivalen
Dapat dibuktikan bahwa DFA dan NFA adalah ekivalen, sehingga dapat disebut
FA saja

Simulasi NFA oleh DFA
Cara simulasi NFA oleh DFA adalah dengan membuat state DFA
berkorespondensi dengan set state di NFA
DFA yang dibentuk mencatat semua state yang mungkin pada NFA setelah
membaca input tertentu



C. Konversi dari NFA ke DFA
Apabila dimiliki suatu FSA, misalnya M = (S, , , S
0
dan F) yang merupakan suatu
NFA, maka selalu akan dapat dibuat FSA baru yang merupakan DFA yang akan
mengenali string yang sama dengan NFA.
Misalkan DFA baru tersebut adalah M*={S*, *, *, S
0
* dan F*} dimana:
* = ; S
0
* = S
0

S* = himpunan state yang baru
* = fungsi transisi yang baru
F* = himpunan final state yang baru
DFA hasil konversi NFA berbeda dalam himpunan state, fungsi transisi dan final
statenya.
DFA hasil konversi NFA berbeda dalam himpunan state, fungsi transisi dan final
statenya.
Himpunan state yang baru merupakan gabungan dari next-state yang membentuk
himpunan state lebih dari satu.
Final state yang baru adalah gabungan next state-next state apabila ia mengandung
satu atau lebih final state.
Untuk proses konversi NFA ke DFA dapat dilakukan dengan membuat diagram
pohon transisi.
Selanjutnya dapat disusun diagram pohon transisi sbb:




Gambar Proses Konversi
Pohon transisi diperoleh dengan menggabungkan next-state yang mungkin lebih
dari satu menjadi suatu himpunan-next state yang pada gilirannya dianggap sebagai
suatu state baru. Misal apabila pada state S0 diberi masukan 0 maka ada dua next-
state yang mungkin, yaitu S0 dan S1, ini dihimpun menjadi satu himpunan, yaitu
{S0,S1}. Jika dilanjutkan {S0,S1} dapat masukan 0 maka next-state nya menjadi
himpunan {S0,S1,S2) dst.
Hasil akhir yang diperoleh:
M*=(S*,*,*,S
0
* dan F*)
Dengan:
S*={{S0}, {S0,S1} dan {S0,S1,S2}}
F*={{S0,S1,S2}}
*=seperti terlihat dalam diagram pohon .
D. Fungsi transisi
Mesin M = (Q, , q0, , A)
Fungsi Transisi (q, a) menyatakan state mesin M ketika pada state q
menerima simbol input a
Fungsi Transisi *(q, x) menyatakan state akhir dari suatu mesin M, ketika
menerima input string x dari state q
Definisi *
Jika didefinisikan pada Q x , maka * didefinisikan pada Q x *
Pada mesin M, definisi fungsi transisi yang
diperluas:
*: Q x * Q
Secara rekursif adalah sebagai berikut:
1. Untuk setiap q Q, *(q, ) = q
2. Untuk setiap y *, a , and q Q, *(q,
ya) = (*(q, y), a)
Contoh
Suatu mesin M: (q) a (q1) b (q2) c (q3) *(q, abc) = (*(q, ab), c) =
((*(q,a), b, c)
= ((*(q, a), b, c)) = ((( *(q,), a), b), c)
= (((q, a), b, c)) = ((q1, b), c)
= (q2, c) = q3
Penggunaan Fungsi Transisi yang diperluas
Fungsi ini dapat digunakan untuk menyatakan dengan tepat apa artinya bagi sebuah
FA menerima sebuah string:
M = (Q, , q0, , A) adalah sebuah FA. Sebuah string x * diterima oleh M jika
*(q0, x) A. x ditolak oleh M jika tidak diterima. Bahasa yang diterima atau dikenali
oleh M adalah bahasa L(M) = { x | x diterima M}. Jika L adalah suatu bahasa dalam *,
L diterima atau dikenali oleh M jika L = L(M)










BAB III
PENUTUP

A. Kesimpulan
(DFA) Deterministic Finite Automata.
Terdiri dari 1 transisi dari suatu state pada 1 simbol masukan.
(NFA) Non-Deterministik Finite Automata.
Terdiri lebih dari 1 transisi dari suatu state dimungkinkan pada simbol masukan yang
sama.
DFA dapat menuntun recognizer (pengenal) lebih cepat dibanding NFA.
Namun demikian, DFA berukuran lebih besar dibanding NFA yang ekivalen
dengannya. Lebih mudah membangun NFA dibanding DFA untuk suatu bahasa,
namun lebih mudah mengimplementasikan DFA dibanding NFA.




Daftar Pustaka
http://jarvis91.blogspot.com/2013/05/teori-bahasa-dan-otomata.html
http://kur2003.if.itb.ac.id/file/Fungsi%20Transisi%20+%20Ekivalensi%20DFA-NFA.pdf
http://tbouad.files.wordpress.com/2010/02/pertemuan-4-dfa-dan-nfa-compatibility-
mod.pdf
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=
0CCcQFjAA&url=http%3A%2F%2Ftbouad.files.wordpress.com%2F2010%2F02%2Fpertemuan-
4-dfa-dan-nfa-compatibility-mod.pdf&ei=K2heU_kJ0cqsB-
HJgMAP&usg=AFQjCNF8Sg5aJwXmmf2CZ9e_rC1oVmoHkw