Home > Java > DFA(Deterministic Finite Automata) Simulator

DFA(Deterministic Finite Automata) Simulator

December 21st, 2008

Topik ini aku tulis cuma pengen mereview tugas kuliahku beberapa hari yang lalu yaitu akudiberikan tugas untuk membuat sebuah DFA Simulator.

Sebenarnya topik yang membahas tentang DFA sudah sangat banyak sekali bertebaran di Internet, jadi aku cuma mengulas sedikit dan langsung ke intinya saja.

Sebagaimana kita tahu, DFA mempunyai ciri :
1. Tiap stata tidak boleh memiliki nilai transisi kosong.
2. Terdiri dari 1 transisi dari suatu stata pada 1 simbol masukan.

DFA terdiri 5 tupel (Q, Σ, δ, q0, F) yang terdiri dari:

1. Himpunan Hingga Stata (Q)
2. Himpunan Hingga Simbol Masukan (Σ)
3. Fungsi Transisi (δ : S × Σ → S)
4. Stata Awal (q0 ∈ Q)
5. Himpunan Stata Penerima (F ⊆ Q)

Disini aku asumsikan DFA dengan simbol M, dan berikut contoh sederhana dari DFA:
M = (S, Σ, T, s, A) dimana,

- S = {S1, S2}
- Σ = {0,1}
- s = S1
- A = {S1}
- T didefinisikan oleh tabel transisi berikut:

0 1
S1 S2 S1
S2 S1 S2

Sehingga diagram stata untuk  M jika digambarkan menjadi:

diagram stata

Suatu masukan diterima jika simbol masukan tersebut berhenti pada stata penerima.

Contoh kalimat yang diterima: 1010

Baiklah berikut ini DFA simulator sederhana dan sifatnya masih hardcode dan statis yang aku bikin dengan pemrograman JAVA, untuk mengimplementasikan contoh diatas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class DFA {
    public static void main(String[] args) {
        String input = "1010";
        String[] status = { "terima", "tolak" };
        int[][] next = { { 1, 0 },
                         { 0, 1 },
                       };
        int stata = 0;
 
        for (int i = 0; i < input.length(); i++) {
            stata = next[stata][Integer.parseInt(
				    String.valueOf(input.charAt(i)))];
        }
        System.out.println(status[stata]);
    }
}

Pada kode diatas Himpunan Hingga Stata direpresentasikan dalam bentuk index array, untuk index 0 merupakan stata S1 dan index 1 merupakan stata S2. Sedangkan Himpunan Hingga Simbol Masukan direpresentasikan dalam bentuk angka 0 dan 1.

Untuk versi lebih dinamis dari simulator diatas silahkan unduh disini

Java ,

  1. sin
    December 30th, 2008 at 13:32 | #1

    koq 5-tupelsnya pake bahasa indonesia(jadi binggung)
    di kampus saya pake bahasa ingg, jadi 5 tupels terdiri dr:
    1.input symbol(A)
    2.internal states(S)
    3.accepting states(Y)
    4.initial states(So)
    5.transition function(F)
    jadi agak sedikit pusing kalau dijadiin bahasa indonesia :mrgreen:

  2. December 31st, 2008 at 11:09 | #2

    @sin :
    Hahaha…, Saya emang sengaja pake bahasa indonesia supaya pembaca yang kurang dlm bahasa inggris juga bisa memahami. Sebenernya klo Anda betul2 paham konsep DFA pastinya gak bakal bingung lagi utk memahami 5 tupel tadi walaupun udah diubah kedalam bahasa lain.

  1. No trackbacks yet.
:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
Enter this code