Back to IF2224 Teori Bahasa Formal dan Otomata

Topic

Questions/Cues

  • Apa itu Nondeterminism?
  • Apa beda utama NFA & DFA?
  • Bagaimana fungsi transisi NFA (δ)?
  • Bagaimana NFA memproses string?
  • Kapan NFA menerima sebuah string?
  • Apa itu Bahasa NFA (L(A))?

Reference Points

  • 2022_DFA and NFA.pdf: 7-11
  • 2019_NFA.pptx
  • 2021_Bab-2-FSA.pdf: 64-68

Konsep Kunci: Nondeterminism (Non-determinisme)

Nondeterminism adalah kemampuan sebuah mesin komputasi untuk memiliki beberapa kemungkinan langkah berikutnya pada satu titik waktu. Berbeda dengan DFA yang jalurnya sudah pasti, NFA bisa:

  1. Memiliki beberapa pilihan transisi: Dari satu state, dengan satu simbol input yang sama, NFA bisa berpindah ke beberapa state yang berbeda.
  2. Tidak memiliki transisi sama sekali: Untuk sebuah input, mungkin tidak ada panah keluar sama sekali dari state saat ini, yang menyebabkan jalur tersebut “mati” atau stuck.

Cara membayangkannya adalah seolah-olah NFA mengeksplorasi semua kemungkinan jalur secara bersamaan (paralel). Setiap kali ada pilihan, ia “mencabang” menjadi beberapa salinan dirinya, masing-masing menelusuri satu jalur.

Definisi Formal NFA

Definisi formal NFA hampir sama persis dengan DFA, yaitu sebuah 5-tuple . Perbedaan fundamentalnya hanya terletak pada fungsi transisi (δ).

  • Fungsi Transisi NFA (δ):
    • Format:
    • Output: Fungsi transisi NFA mengembalikan sebuah HIMPUNAN state (sebuah subset dari ), bukan satu state tunggal seperti pada DFA. Himpunan ini bisa berisi nol, satu, atau lebih state.
    • Notasi Formal: (di mana P(Q) adalah powerset atau himpunan kuasa dari Q).

Cara NFA Memproses dan Menerima String

Karena NFA bisa memiliki banyak jalur, cara ia menerima string pun berbeda.

Kondisi Penerimaan:

Sebuah string w diterima oleh NFA jika, setelah seluruh string dibaca, setidaknya salah satu dari semua kemungkinan jalur yang dieksplorasi berakhir di sebuah final state.

Tidak peduli jika 99 jalur lainnya “mati” atau berakhir di state non-final. Selama ada minimal satu jalur yang sukses, string tersebut diterima.

Contoh Proses: NFA untuk bahasa “semua string yang diakhiri 01”.

Misalkan kita punya NFA sederhana dengan state di mana adalah final state.

  • Dari ​ dengan input 0, NFA bisa tetap di ​ DAN pindah ke .

Jika NFA membaca string “001”:

  1. Start: State aktif adalah .
  2. Baca ‘0’:
    • Dari ​, transisi untuk ‘0’ adalah ke . State aktif sekarang: .
  3. Baca ‘0’:
    • Dari , transisi untuk ‘0’ adalah ke .
    • Dari ​, tidak ada transisi untuk ‘0’ (jalur ini mati).
    • State aktif sekarang adalah gabungannya: .
  4. Baca ‘1’:
    • Dari , transisi untuk ‘1’ adalah ke .
    • Dari ​, transisi untuk ‘1’ adalah ke .
    • State aktif sekarang adalah gabungannya: .
  5. String Habis: Himpunan state akhir adalah .
  6. Cek Final State: Apakah himpunan mengandung anggota dari ? Ya, yaitu ​.
  7. Kesimpulan: String “001” diterima.

Bahasa dari Sebuah NFA (L(A))

Bahasa dari sebuah NFA adalah himpunan semua string w yang diterimanya.

  • Definisi Formal:

Ini dibaca: “Himpunan semua string w sedemikian sehingga irisan (intersection) antara himpunan state akhir NFA () dengan himpunan final state (F) tidak kosong.”

Summary

Nondeterministic Finite Automata (NFA) adalah varian dari finite automata yang memungkinkan non-determinisme, yaitu kemampuan untuk memiliki beberapa kemungkinan transisi (atau tidak ada sama sekali) untuk sebuah input dari satu state. Perbedaan utamanya dari DFA terletak pada fungsi transisi (δ) yang mengembalikan sebuah himpunan state, bukan state tunggal. Sebuah NFA menerima string jika, dari semua jalur komputasi yang mungkin, setidaknya ada satu jalur yang berakhir di final state.