Anda di halaman 1dari 16

Deterministic Finite Automaton(DFA)

Nama Kelompok :
1. Asrori Abdihi
2. Rahma Ria Aini
3. Nova Aulia Lestari
4. Utari Suliastika
5. Vina Sriwahyuni Ramadani
6. Windi Sari
PENDAHULUAN

Deterministic Finite Automata (DFA) adalah salah satu jenis dari Finite Automata (FA) yang berguna sebagai pengenal Bahasa Regular.
Karakteristik kunci dari DFA ini adalah tidak membolehkan membaca satu atau lebih dari satu transisi untuk satu simbol masukan berisi string
berupa karakter/abjad, yang sama. Dengan kata lain untuk masukan simbol yang sama DFA tidak bisa mentransisikannya ke beberapa state yang
berbeda. Jika digunakan tabel transisi untuk merepresentasikan fungsi transisi DFA, maka masing-masing isian di tabel transisi adalah satu state
tunggal (berhingga) dan dapat berpindah ke state lain berdasarkan input dan fungsi transisi. Konsekuensinya, pada DFA lebih mudah
menentukan apakah suatu string masukan diterima, karena hanya terdapat paling banyak satu jalur dari state awal. Arah pergerakan (head) dari
state awal hingga state akhir hanya bisa maju saja (ke kanan). Jika jalur simbol masukan dimisalkan sebagai „pita‟, maka setelah membaca satu
simbol pada pita, kepala pita akan maju ke posisi simbol berikutnya dengan kata lain bersifat otomatis. DFA tidak bisa mengingat, DFA hanya
bisa membaca atau mengingat state terkini.
• Kelebihan dan Kekurangan Deterministic Finite Automaton (DFA)

Setiap hal pasti punya kelebihan dan kekurangan, begitu juga algoritma DFA ini. salah satu kelemahannya di
bandingkan algoritma lain seperti Knuth-Morris-Pratt (KMP) adalah masih membaca karakter-karakter (symbol-simbol) yang
sebenarnya lebih baik dilewatkan saja karena tidak mengarah ke solusi. Namun Algoritma ini juga memiliki kelebihan,
dimana kelebihan DFA di bandingkan dengan algoritma lainnya adalah dalam meminimumkan pembacaan source. Sangat
bagus apabila yang akan dibaca berasal dari source yang susah di baca. Karena proses pembacaan dengan menggunakan DFA
hanya dilakukan sekali lewat saja (maksimal sebanyak karakter).
Penjelasan Mengenai Cara Kerja

Deterministic Finite Automaton disingkat menjadi “DFA” dan juga biasa dikenal sebagai Deterministic Finite Acceptor
(DFA), Deterministic Finite State Machine (DFSM), atau Deterministic Finite State Automaton (DFSA).
DFA merupakan teori komputasi dan cabang dari ilmu komputer teoritis. DFA adalah Finite-state Machine atau mesin
keadaan terbatas yang menerima atau menolak string dari simbol dan hanya menghasilkan perhitungan unik dari otomata
untuk setiap string yang di masukan.
Otomata berhingga deterministic atau DFA (Deterministic Finite Automata) adalah FSA(finite state automata) yang
memiliki stata penerima tepat satu stata untuk setiap simbol masukan.
Contoh Kasus
Penulis memberikan contoh untuk DFA F(K,VT,M,S,Z) , dimana:
 K = {S, A, B}
 VT = {a, b}
 S = {S}
 Z = {B}

M diberikan dalam tabel berikut:

FA-TRANSISI
Ilustrasi graf untuk DFA F adalah sebagai berikut:

Ilustrasi graf untuk DFA F

Apabila stata awal S diberi masukan a maka akan bergerak ke stata A, stata A diberi masukan b maka akan bergerak
ke stata B (stata penerima). Yang artinya DFA tersebut apabila diberi masukan string ab maka masukan tersebut diterima.
Lalu masukan apalagi yang diterima?
Bagaimana jika kita tulis DFA tersebut menggunakan Bahasa C untuk mengetahaui kalimat apa saja yang diterima.
Tulis header yang akan kita gunakan, yaitu:
1 #include <stdio.h>
2 #include <stdbool.h>

1. Pertama kita deklarisan dulu DFA sebagai integer dengan nilai 0.

int dfa = 0;

2. Buat fungsi pertama yaitu apabila Stata S diberi masukan a maka akan bergerak ke stata selanjutnya stata A dengan
menukar nilai DFA menjadi 1 dan apabila diberi masukan selain a maka nilai DFA tetap 0.

void S(char c)
{
if ( c == 'a' )
dfa = 1;
else
dfa = 0;
}
3. Buat fungsi selanjutnya yaitu apabila stata A diberi masukan b maka akan bergerak ke stata selanjutnya (stata B) dengan
mengubah nilai DFA menjadi 2 dan apabila diberi masukan selain a maka nilai-nilai DFA tetap 1.

void Stata1(char c)
{
if (c == 'b' )
dfa = 2;
else
dfa = 1;
}

4. Fungsi terakhir adalah apabila stata B diberi masukan a maka akan kembali ke stata B dengan menukar nilai DFA menjadi 1
dan apabila diberi masukan selain a maka nilai-nilai DFA tetap 2.

void Stata2(char c)
{
if (c == 'a' )
dfa = 1;
else
dfa = 2;
}
5. Selanjutnya deklarasikan nilai int DFA serta string untuk menampung pergerakan sebagai nilai tukar DFA.

int diterima(char str[])


{
int i, len = strlen(str);
for ( i=0; i < len; i++) {
if (dfa == 0)
S(str[i]);
else if (dfa == 1)
Stata1(str[i]);
else if (dfa == 2)
Stata1(str[i]);
else
return 0;
}
6. Buat Fungsi stata penerima, yaitu stata B (2).

if(dfa == 2) {
return 1;
else
return 0;
}
7. Buat fungsi utama untuk membaca string dan memproses string tersebut apakah diterima atau tidak berdasarkan fungsi yang
telah kita buat sebelumnya.

int main()
{
char str[10];
printf("Masukan Kalimat: ");
gets(str);
if (diterima(str))
printf("\nDiterima\n");
else
printf("Ditolak\n");
return 0;
}
Program:
#include <stdio.h>
#include <string.h>
int dfa = 0;
void S(char c)
{
if ( c == 'a' )
dfa = 1;
else
dfa = 0;
}
void Stata1(char c)
{
if (c == 'b' )
dfa = 2;
else
dfa = 1;
}
void Stata2(char c)
{
if (c == 'a' )
dfa = 1;
else
dfa = 2;
}
int diterima(char str[])
{
int i, len = strlen(str);
for ( i=0; i < len; i++) {
if (dfa == 0)
S(str[i]);
else if (dfa == 1)
Stata1(str[i]);
else
return 0;
}
if(dfa == 2)
return 1;
else
return 0;
}
int main()
{
char str[10];
printf("Masukan Kalimat: ");
gets(str);
if (diterima(str))
printf("\nDiterima\n");
else
printf("Ditolak\n");
return 0;
Output 1:

Output 2:
• Kesimpulan

DFA adalah mesin status yang terdiri dari status dan transisi yang dapat menerima atau menolak string terbatas, yang
terdiri dari serangkaian simbol, dan membandingkannya dengan bahasa yang telah ditentukan di seluruh kumpulan karakter
yang telah ditentukan. Kami menggunakan lingkaran untuk mewakili keadaan, dan mengarahkan panah untuk mewakili
transisi. Setiap negara bagian harus memiliki setiap simbol yang keluar dari negara bagian, atau tidak akan ditetapkan sebagai
DFA.
• Daftar Pustaka

Hariyanto, Bambang, 2004, Teori Bahasa, Otomata, dan Komputasi serta terapannya, Informatika Bandung, Bandung.

https://ichi.pro/id/pengantar-deterministic-finite-automata-dfa-71102215461013

https://www.belajarcpp.com/artikel/penjelasan-dan-contoh-program-dfa-deterministic-finite-automaton-dengan-bahasa-c/

Anda mungkin juga menyukai

  • Modul 1
    Modul 1
    Dokumen43 halaman
    Modul 1
    Vina SriWahyuni Ramadani030
    Belum ada peringkat
  • Bhs Inggris
    Bhs Inggris
    Dokumen6 halaman
    Bhs Inggris
    Vina SriWahyuni Ramadani030
    Belum ada peringkat
  • Game Design Document (GDD)
    Game Design Document (GDD)
    Dokumen4 halaman
    Game Design Document (GDD)
    Vina SriWahyuni Ramadani030
    Belum ada peringkat
  • Format Laporan Game
    Format Laporan Game
    Dokumen3 halaman
    Format Laporan Game
    Vina SriWahyuni Ramadani030
    Belum ada peringkat
  • 04 Materi
    04 Materi
    Dokumen5 halaman
    04 Materi
    Vina SriWahyuni Ramadani030
    Belum ada peringkat
  • 01 Materi
    01 Materi
    Dokumen7 halaman
    01 Materi
    Vina SriWahyuni Ramadani030
    Belum ada peringkat
  • 03 Materi
    03 Materi
    Dokumen11 halaman
    03 Materi
    Vina SriWahyuni Ramadani030
    Belum ada peringkat
  • Game Design
    Game Design
    Dokumen29 halaman
    Game Design
    Vina SriWahyuni Ramadani030
    Belum ada peringkat
  • 02 Materi
    02 Materi
    Dokumen11 halaman
    02 Materi
    Vina SriWahyuni Ramadani030
    Belum ada peringkat
  • Proposal Masjid
    Proposal Masjid
    Dokumen6 halaman
    Proposal Masjid
    Vina SriWahyuni Ramadani030
    Belum ada peringkat