b belajar.myudak

Deterministic Finite Automata (DFA)

Definisi formal 5-tuple, cara membaca diagram transisi, merancang DFA, dan simulasi langkah demi langkah.

dasar #DFA#automata#bahasa reguler

Slide[kulon] DFA

Latihan UTS & UAS ↓

Finite automaton adalah model mesin paling sederhana: mesin dengan memori terbatas (sejumlah state) yang membaca string simbol demi simbol, lalu di akhir memutuskan menerima atau menolak string itu. Himpunan semua string yang diterima disebut bahasa dari automaton tersebut.

Definisi formal

DFA adalah 5-tuple M=(Q,Σ,δ,q0,F)M = (Q, \Sigma, \delta, q_0, F):

SimbolArti
QQhimpunan state yang berhingga
Σ\Sigmaalfabet, himpunan simbol input
δ:Q×Σ→Q\delta : Q \times \Sigma \to Qfungsi transisi: dari state mana, membaca simbol apa, pindah ke state mana
q0∈Qq_0 \in Qstate awal
F⊆QF \subseteq Qhimpunan state akhir (accepting/final)

Deterministic berarti untuk setiap pasangan (state, simbol) ada tepat satu state tujuan. Tidak ada pilihan, tidak ada transisi kosong (ε\varepsilon).

String ww diterima jika setelah membaca seluruh ww dari q0q_0, mesin berhenti di salah satu state di FF.

Coba simulasikan

Pada diagram, panah tanpa asal menandai state awal, dan lingkaran ganda menandai state akhir. Tekan “Baca simbol” untuk berjalan satu langkah. Tabel transisinya juga bisa diedit.

Simulator DFA
010101q0q1q2
Tabel transisi δ (bisa diedit)
state01F
→q0
q1
q2
contoh:
110

q0

Membaca simbol ke-1 dari 3…

Merancang DFA: langkah praktis

  1. Tentukan informasi minimal yang perlu diingat setelah membaca sebagian string. Setiap kemungkinan informasi = satu state.
  2. Tentukan state awal (informasi saat belum membaca apa pun) dan state akhir.
  3. Untuk setiap state dan setiap simbol, tentukan state berikutnya. Jangan lupa: semua pasangan harus terdefinisi. Jika perlu, tambahkan dead state (trap) yang tidak pernah keluar.
  4. Uji dengan beberapa string, termasuk string kosong ε\varepsilon.

DFA dalam kode

DFA mudah sekali diimplementasikan, cukup tabel dan satu loop. Inilah inti dari lexer pada compiler dan mesin regex sederhana.

Coba jalankan

Batas kemampuan DFA

DFA hanya bisa mengenali bahasa reguler. Bahasa seperti {anbn∣n≥0}\{a^n b^n \mid n \ge 0\} (sejumlah a diikuti b yang sama banyaknya) tidak reguler. Untuk mengingat nn yang bisa sebesar apa pun dibutuhkan memori tak terbatas, padahal state DFA berhingga. Ini dibuktikan formal dengan pumping lemma. Bahasa seperti itu butuh mesin yang lebih kuat: pushdown automata (punya stack).

Cek pemahaman
  1. 1. Pada DFA, untuk setiap state dan simbol terdapat…

  2. 2. DFA "habis dibagi 3" membaca string "1001" (= 9). Berakhir di state…

  3. 3. Bahasa mana yang TIDAK bisa dikenali DFA?

Latihan UTS & UAS