materi

Chapter 4: Deterministic Finite Automata (DFA) dan Non-Deterministic Finite Automata (NFA)

Konsep & Pembahasan Terperinci

1. Determinisme (DFA) vs Non-Determinisme (NFA)

  • DFA (Deterministic Finite Automaton):

    • Untuk setiap state qq dan simbol aΣa \in \Sigma, transisi δ(q,a)\delta(q, a) menghasilkan tepat satu state berikutnya.

    • Alur eksekusi bersifat deterministik: string input yang sama pada mesin yang sama pasti menghasilkan urutan lintasan yang identik dan dapat diprediksi.

  • NFA (Non-Deterministic Finite Automaton):

    • Untuk suatu state qq dan simbol aa, transisi δ(q,a)\delta(q, a) menghasilkan himpunan state (bisa kosong \emptyset, satu state, atau beberapa state sekaligus).

    • Eksekusi tidak membentuk garis lurus tunggal, melainkan pohon pelacakan eksekusi (tree of execution).


2. Tiga Cara Memandang Komputasi NFA

Bagaimana kita mengonseptualisasikan cara NFA bekerja ketika menghadapi banyak cabang pilihan?

  1. NFA adalah "Penebak Sempurna": Asumsikan mesin selalu memilih cabang transisi yang membawanya ke state Final (jika memang ada jalur sukses).

  2. NFA Menggandakan Diri (Cloning): Setiap kali menjumpai persimpangan dengan kk cabang, mesin menduplikasi dirinya menjadi kk proses independen.

  3. Komputasi Paralel: Mesin menelusuri seluruh kemungkinan konfigurasi state secara serentak (concurrently).

Kriteria Keputusan:

  • Diterima (Accept): Jika terdapat paling sedikit satu cabang di pohon eksekusi yang berhasil mencapai state Final setelah seluruh string input habis dibaca.

  • Ditolak (Reject): Jika seluruh cabang yang mungkin mengalami stuck (tidak memiliki transisi lanjutan) atau berakhir di state yang bukan Final.


3. Definisi Formal NFA

NFA didefinisikan sebagai 5-tuple:

N=(Q,Σ,δ,q0,F)N = (Q, \Sigma, \delta, q_0, F)

Struktur tuple sama dengan DFA, kecuali pada fungsi transisi δ\delta:

δ:Q×Σ2Q\delta : Q \times \Sigma \longrightarrow 2^Q

Di mana 2Q2^Q adalah powerset (himpunan kuasa) dari QQ, yaitu himpunan seluruh himpunan bagian dari QQ. Nilai δ(q,a)\delta(q, a) adalah himpunan {p1,p2,}Q\{p_1, p_2, \dots\} \subseteq Q.


Studi Kasus: NFA Bahasa Berakhiran '01' & Subset Construction

1. Desain NFA

  • Bahasa: L={w{0,1}w berakhiran 01}L = \{w \in \{0, 1\}^* \mid w \text{ berakhiran } 01\}

  • Himpunan State: Q={q0,q1,q2}Q = \{q_0, q_1, q_2\}, State Awal: q0q_0, State Final: F={q2}F = \{q_2\}

  • Tabel Transisi NFA:

StateInput $0$Input $1$
q0\to q_0{q0,q1}\{q_0, q_1\}{q0}\{q_0\}
q1q_1\emptyset{q2}\{q_2\}
q2*q_2\emptyset\emptyset

Ide non-deterministik: Di state q0q_0, mesin bebas "menebak" apakah simbol 0 yang dibacanya adalah awal dari akhiran 01 (pindah ke q1q_1), atau sekadar bagian dari prefiks awal (tetap di q0q_0).


2. Algoritma Subset Construction (Konversi NFA ke DFA)

DFA yang ekuivalen dibangun dengan menjadikan himpunan bagian state NFA sebagai state tunggal pada DFA.

  1. State Awal DFA:
A=[q0]A = [q_0]
  1. Transisi dari State A=[q0]A = [q_0]:

    • Baca 0: δ(q0,0)={q0,q1}    Bentuk state baru B=[q0,q1]\delta(q_0, 0) = \{q_0, q_1\} \implies \text{Bentuk state baru } B = [q_0, q_1]

    • Baca 1: δ(q0,1)={q0}=A\delta(q_0, 1) = \{q_0\} = A

  2. Transisi dari State B=[q0,q1]B = [q_0, q_1]:

    • Baca 0: δ(q0,0)δ(q1,0)={q0,q1}={q0,q1}=B\delta(q_0, 0) \cup \delta(q_1, 0) = \{q_0, q_1\} \cup \emptyset = \{q_0, q_1\} = B

    • Baca 1: δ(q0,1)δ(q1,1)={q0}{q2}={q0,q2}    Bentuk state baru C=[q0,q2]\delta(q_0, 1) \cup \delta(q_1, 1) = \{q_0\} \cup \{q_2\} = \{q_0, q_2\} \implies \text{Bentuk state baru } C = [q_0, q_2]

  3. Transisi dari State C=[q0,q2]C = [q_0, q_2]:

    • Baca 0: δ(q0,0)δ(q2,0)={q0,q1}={q0,q1}=B\delta(q_0, 0) \cup \delta(q_2, 0) = \{q_0, q_1\} \cup \emptyset = \{q_0, q_1\} = B

    • Baca 1: δ(q0,1)δ(q2,1)={q0}={q0}=A\delta(q_0, 1) \cup \delta(q_2, 1) = \{q_0\} \cup \emptyset = \{q_0\} = A

  4. Menentukan State Final DFA:

    Setiap state komposit yang memuat state final NFA (q2q_2) menjadi state Final DFA. Karena hanya C=[q0,q2]C = [q_0, q_2] yang memuat q2q_2, maka FDFA={C}F_{\text{DFA}} = \{C\}.

Tabel Transisi DFA Hasil Konversi:

State KompositLabel State DFAInput $0$Input $1$Status Final?
[q0][q_0]A\to ABBAABukan Final
[q0,q1][q_0, q_1]BBBBCCBukan Final
[q0,q2][q_0, q_2]C*CBBAAFinal (Accepting)

Perbandingan Konsep

ParameterDeterministic Finite Automata (DFA)Non-Deterministic Finite Automata (NFA)
Fungsi Transisiδ:Q×ΣQ\delta : Q \times \Sigma \to Q (Tepat 1 state)δ:Q×Σ2Q\delta : Q \times \Sigma \to 2^Q (Himpunan subset state)
Bentuk EksekusiLintasan sekuensial tunggalPohon percabangan (Execution Tree)
Syarat TerimaLintasan berakhir di state finalMinimal 1 cabang berakhir di state final
Kemudahan DesainCenderung kompleks & kakuSangat intuitif untuk mencocokkan pola
Implementasi KomputerSangat cepat & efisien (O(n)O(n))Perlu simulasi subset / backtracking
Daya KomputasiSetara (Bahasa Reguler)Setara (Bahasa Reguler)

Latihan Soal & Pembahasan

Level 1 - Basic

Soal 1.1

Apa yang membedakan fungsi transisi δ\delta pada DFA dengan NFA secara matematis?

Soal 1.2

Jelaskan 3 cara memandang dan menginterpretasikan cara kerja komputasi pada NFA.


Pembahasan/Jawaban

1.1 Pada DFA, δ\delta memetakan ke sebuah state tunggal (δ:Q×ΣQ\delta : Q \times \Sigma \to Q), sedangkan pada NFA, δ\delta memetakan ke himpunan bagian dari QQ (δ:Q×Σ2Q\delta : Q \times \Sigma \to 2^Q).

1.2 Tiga cara memandang komputasi NFA:

  1. NFA selalu mengambil tebakan yang benar

  2. NFA menggandakan diri (copy) pada setiap percabangan

  3. NFA menjelajahi seluruh kemungkinan secara paralel


Level 2 - Intermediate

Soal 2.1

Diberikan NFA berakhiran 01 di atas. Lacak eksekusi string w=001w = 001 menggunakan pohon eksekusi dan tunjukkan mengapa string ini diterima.


Pembahasan/Jawaban

  • Mulai di q0q_0.

  • Baca 0: Cabang terbagi menjadi {q0,q1}\{q_0, q_1\}.

  • Baca 0:

    • Dari q0q_0 dengan 0 \to cabang menjadi {q0,q1}\{q_0, q_1\}.

    • Dari q1q_1 dengan 0 \to \emptyset (stuck).

    • Total cabang aktif saat ini: {q0,q1}\{q_0, q_1\}.

  • Baca 1:

    • Dari q0q_0 dengan 1 {q0}\to \{q_0\}.

    • Dari q1q_1 dengan 1 {q2}\to \{q_2\}.

    • Total cabang aktif akhir: {q0,q2}\{q_0, q_2\}.

Karena salah satu cabang berakhir di q2Fq_2 \in F, string $001$ diterima (Accepted).


Level 3 - Advanced

Soal 3.1

Jika suatu NFA memiliki nn buah state, berapa jumlah maksimum state yang mungkin terbentuk pada DFA hasil konversi Subset Construction? Mengapa?


Pembahasan/Jawaban

Jumlah maksimum state pada DFA adalah 2n2^n state. Hal ini karena setiap state pada DFA merepresentasikan sebuah himpunan bagian (subset) dari himpunan state NFA. Powerset dari sebuah himpunan berkardinalitas nn memiliki tepat 2n2^n elemen. Meskipun dalam praktiknya banyak subset yang tidak dapat dicapai (unreachable), batas atas teoretisnya adalah eksponensial (2n2^n).


Exam Cheat Sheet

  • Pemetaan NFA: δ:Q×Σ2Q\delta : Q \times \Sigma \to 2^Q.

  • Syarat Terima NFA: δ^(q0,w)F\hat{\delta}(q_0, w) \cap F \ne \emptyset.

  • Ekuivalensi: L(MDFA)=L(MNFA)L(M_{\text{DFA}}) = L(M_{\text{NFA}}). NFA tidak lebih sakti dari DFA dalam mengenali bahasa, keduanya persis mencakup Regular Languages.

  • Tujuan NFA \to DFA: NFA untuk spesifikasi manusia (pattern matching, lexer), DFA untuk eksekusi deterministik cepat pada mesin.

  • Prinsip Subset Construction: Gabungkan state-state yang dapat dicapai secara bersamaan menjadi satu kesatuan state komposit.


Referensi & Bahan Bacaan

  1. M. O. Rabin and D. Scott. Finite Automata and Their Decision Problems (IBM Journal of Research and Development, 1959).

  2. Hopcroft, John E., Rajeev Motwani, Jeffrey D. Ullman. Introduction to Automata Theory (Section 2.3: Nondeterministic Finite Automata).

  3. Michael Sipser. Introduction to the Theory of Computation (Section 1.2: Nondeterminism).

Catatan Penutup

Bab 4 telah membuktikan bahwa non-determinisme memberikan fleksibilitas tanpa menambah batas komputasi. Pada bab berikutnya, Chapter 5: NFA dengan ε-move, kita akan melengkapi NFA dengan kemampuan transisi spontan tanpa membaca simbol masukan.