Back to IF2224 Teori Bahasa Formal dan Otomata

Soal 1: Desain DFA

Rancanglah sebuah Deterministic Finite Automaton (DFA) dengan yang menerima bahasa :

Sertakan:

a. Deskripsi state yang kamu gunakan.

b. Diagram transisi DFA.

Jawaban:

a. Deskripsi State:

  • : State awal. Belum melihat ‘101’ dan state aman (simbol terakhir bukan ‘1’ atau ‘10’).

  • : Belum melihat ‘101’, tapi string sejauh ini diakhiri ‘1’. Potensi awal ‘101’.

  • : Belum melihat ‘101’, tapi string sejauh ini diakhiri ‘10’. Potensi kedua ‘101’.

  • : Trap state. Sudah melihat substring ‘101’. String pasti ditolak.

b. Diagram Transisi:


graph LR
q0 -- 0 --> q0;
q0 -- 1 --> q1;
q1 -- 0 --> q2;
q1 -- 1 --> q1;
q2 -- 0 --> q0;
q2 -- 1 --> q3;
q3 -- 0 --> q3;
q3 -- 1 --> q3;

classDef final stroke:#000,stroke-width:4px;
class q0,q1,q2 final;

  • Start State:
  • Final States: (Semua state kecuali trap state)

Soal 2: Konversi ε-NFA ke DFA

Diberikan -NFA berikut:

  • Transisi :

    State
    B
    C

Konversikan -NFA ini menjadi DFA yang ekuivalen menggunakan algoritma subset construction dengan ECLOSE. Tunjukkan langkah-langkahnya (perhitungan ECLOSE dan transisi DFA) dan tabel transisi DFA hasil akhirnya.

Jawaban:

  1. Hitung ECLOSE untuk setiap state:

    • ECLOSE(A) = {A, B} (A bisa ke B via epsilon)

    • ECLOSE(B) = {B}

    • ECLOSE(C) = {C, D} (C bisa ke D via epsilon)

    • ECLOSE(D) = {D}

  2. Subset Construction:

    • Start State DFA: . Tandai sebagai state baru yang belum diproses.

    • Proses :

      • Input ‘a’:

        • , . Gabungan = .

        • .

      • Input ‘b’:

        • , . Gabungan = .

        • . Kita sebut state baru ini . Tandai belum diproses.

    • Proses :

      • Input ‘a’:

        • , . Gabungan = .

        • . Kita sebut state baru ini . Tandai belum diproses.

      • Input ‘b’:

        • , . Gabungan = .

        • . Kita sebut state baru ini . Tandai belum diproses.

    • Proses :

      • Input ‘a’:

        • . Gabungan = .

        • .

      • Input ‘b’:

        • . Gabungan = .

        • .

    • Proses : (Trap state kosong)

      • .

      • .

  3. Tentukan Final States DFA: State DFA adalah final jika mengandung setidaknya satu final state NFA asli ().

    • : Tidak mengandung D Non-Final.

    • : Mengandung D Final.

    • : Mengandung D Final.

    • : Tidak mengandung D Non-Final.

  4. Tabel Transisi DFA Hasil Akhir:

    StateabFinal?
    Tidak
    Ya
    Ya
    Tidak

    (State bisa diganti nama, misal P={A,B}, Q={C,D}, R={D}, T=∅)

Soal 3: Konversi DFA ke Regular Expression (State Elimination)

Konversikan DFA berikut menjadi Regular Expression menggunakan metode State Elimination. Eliminasi state dalam urutan: q1. Tunjukkan langkah-langkahnya.

  • = Start State

  • Transisi :

    State01

Jawaban:

  1. Gambar Awal (Generalized NFA): Tambahkan Start state baru (S) dan Final state baru (F).

    • S q0

    • q0 q0

    • q0 q1

    • q1 q1

    • q1 q2

    • q2 q0

    • q2 q2

    • q2 F

  2. Eliminasi q1: Kita perlu mencari jalur yang melewati q1 dan menggantinya dengan transisi langsung.

    • Jalur: q0 q1 q2

    • Transisi masuk ke q1 (dari q0): 0

    • Loop di q1: 0*

    • Transisi keluar dari q1 (ke q2): 1

    • RE untuk jalur q0 q2 via q1: 0 0* 1

    • Update Graf: Hapus q1. Tambahkan/update transisi dari q0 ke q2 dengan RE baru ini.

    Graf setelah eliminasi q1:

    • S q0

    • q0 q0

    • q0 q2 (Transisi baru/bypass)

    • q2 q0

    • q2 q2

    • q2 F

  3. Eliminasi q0: (Tersisa S, q2, F)

    • Jalur: S q0 q2

    • Transisi masuk ke q0 (dari S):

    • Loop di q0: 1*

    • Transisi keluar dari q0 (ke q2): 00*1

    • RE untuk jalur S q2 via q0:

    • Update Graf: Hapus q0. Tambahkan/update transisi dari S ke q2.

    Graf setelah eliminasi q0:

    • S q2

    • q2 q2 (Loop baru: q2 q0 q2)

    • q2 q2

    • q2 F

  4. Eliminasi q2: (Tersisa S, F)

    • Jalur: S q2 F

    • Transisi masuk ke q2 (dari S): 1*00*1

    • Loop di q2: Ada dua loop, 1 dan 0 1* 00* 1. Jadi loop totalnya adalah (1 + 0 1* 00* 1)*.

    • Transisi keluar dari q2 (ke F):

    • RE Final (S F): (1*00*1) (1 + 0 1* 00* 1)* \epsilon

    • RE Final (disederhanakan): (1*00*1)(1 + 01*00*1)*

Soal 4: Product Automaton dan Ketercakupan (Containment)

Diberikan dua DFA berikut, (menerima ) dan (menerima ):

DFA : (, , )

Stateab
BA
BB

DFA : (, , )

Stateab
QP
RP
RR

Gunakan metode Product Automaton untuk menentukan apakah .

a. Tuliskan definisi state final untuk Product Automaton yang akan menguji (yaitu, menguji apakah ).

b. Gambarkan bagian yang relevan (reachable) dari diagram transisi mulai dari start state.

c. Berdasarkan diagram, apakah ? Jelaskan mengapa.

Jawaban:

a. Definisi State Final untuk Uji :

Sebuah state di adalah state final jika adalah final state di DAN adalah state non-final di .

Dalam kasus ini, state final adalah state di mana , yaitu hanya state (B, P).

b. Diagram Transisi Product Automaton (Reachable States):

  • Start State: (A, P)

  • STATE FINAL PRODUK!

graph LR
	AP -- a --> BQ[("B, Q")];
	AP -- b --> AP;
	BQ -- a --> BR[("B, R")];
	BQ -- b --> BP[("(B, P)")];
	BR -- a --> BR;
	BR -- b --> BR;
	BP -- a --> BQ;
	BP -- b --> BP;

classDef final stroke:#f00,stroke-width:4px,fill:#f9f;
class BP final;

c. Kesimpulan:

Tidak, tidak termuat dalam ().

Alasan: Karena ada state final dalam product automaton yang dapat dicapai (reachable) dari start state, yaitu state (B, P). Ini berarti ada setidaknya satu string (contoh: “ab”) yang diterima oleh (berakhir di B) tetapi tidak diterima oleh (berakhir di P, yang non-final). Ini menunjukkan bahwa .

Soal 5: Konversi RE ke ε-NFA

Buatlah -NFA yang ekuivalen dengan Regular Expression berikut menggunakan aturan konstruksi standar (Thompson’s construction):

Gambarkan diagram transisinya.

Jawaban:

Kita bangun secara bertahap:

  1. Automaton untuk ‘a’:

    (q1) — a (q2)

  2. Automaton untuk ‘b’:

    (q3) — b (q4)

  3. Automaton untuk ‘ab’ (Konkatenasi 1 dan 2): Hubungkan q2 ke q3 dengan . Start=q1, Final=q4.

    (q1) — a (q2) — (q3) — b (q4)

  4. Automaton untuk ‘(ab)*’ (Star pada 3): Tambah start baru (q0) dan final baru (q7).

    • q0 q1 (ke start ‘ab’)

    • q0 q7 (langsung ke final, untuk )

    • q4 q1 (loop kembali ke start ‘ab’)

    • q4 q7 (keluar dari loop ke final)

Diagram parsial:

graph TD
	q0 -->|ε| q1;
	q0 -->|ε| q7;
	q1 -->|a| q2;
	q2 -->|ε| q3;
	q3 -->|b| q4;
	q4 -->|ε| q1;
	q4 -->|ε| q7;
  1. Automaton untuk ‘c’:

    (q5) — c (q6)

  2. Automaton untuk ‘(ab) + c’ (Union 4 dan 5):* Tambah start baru (S) dan final baru (F).

    • S q0 (start dari ‘(ab)*’)

    • S q5 (start dari ‘c’)

    • q7 F (final dari ‘(ab)*’)

    • q6 F (final dari ‘c’)

    Diagram Transisi Final:

    graph TD
    		S -->|ε| q0;
    		S -->|ε| q5;
    
    		subgraph "(ab)*"
    				q0 -->|ε| q1;
    				q0 -->|ε| q7;
    				q1 -->|a| q2;
    				q2 -->|ε| q3;
    				q3 -->|b| q4;
    				q4 -->|ε| q1;
    				q4 -->|ε| q7;
    		end
    
    		subgraph "c"
    				q5 -->|c| q6;
    		end
    
    		q7 -->|ε| F((F));
    		q6 -->|ε| F((F));
    
    	 classDef start fill:#9cf,stroke:#333,stroke-width:2px;
    	 class S start;
    	 classDef final stroke:#000,stroke-width:4px;
    	 class F final;
    
    
    • Start State: S

    • Final State: F