Saya memiliki masalah sederhana dalam membuat DFA yang menerima semua input yang dimulai dengan huruf ganda (aa, bb) atau diakhiri dengan huruf ganda (aa, bb), mengingat adalah set alfabet dari bahasa yang diberikan.
Saya mencoba menyelesaikannya secara tidak langsung dengan:
- Menghasilkan ekspresi reguler
- Membuat NFA-nya sesuai
- Menggunakan konstruksi powerset untuk menyimpulkan DFA
- Meminimalkan jumlah negara dalam DFA
Langkah 1: Ekspresi reguler untuk masalah yang diberikan adalah (di antara yang lainnya yang tak terhitung jumlahnya):
((aa|bb)(a|b)*)|((a|b)(a|b)*(aa|bb))
Langkah 2: NFA untuk ekspresi yang diberikan adalah:
(sumber: livefilestore.com )
Dalam bentuk Tabular, NFA adalah:
State Input:a Input:b
->1 2,5 3,5
2 4 -
3 - 4
(4) 4 4
5 5,7 5,6
6 - 8
7 8 -
(8) - -
Langkah 3: Konversikan menjadi DFA menggunakan konstruksi powerset:
Symbol, State + Symbol, State (Input:a) + Symbol, State (Input:b)
->A, {1} | B, {2,5} | C, {3,5}
B, {2,5} | D, {4,5,7} | E, {5,6}
C, {3,5} | F, {5,7} | G, {4,5,6}
(D), {4,5,7} | H, {4,5,7,8} | G, {4,5,6}
E, {5,6} | F, {5,7} | I, {5,6,8}
F, {5,7} | J, {5,7,8} | E, {5,6}
(G), {4,5,6} | D, {4,5,7} | K, {4,5,6,8}
(H), {4,5,7,8} | H, {4,5,7,8} | G, {4,5,6}
(I), {5,6,8} | F, {5,7} | I, {5,6,8}
(J), {5,7,8} | J, {5,7,8} | E, {5,6}
(K), {4,5,6,8} + D, {4,5,7} + K, {4,5,6,8}
Langkah 4: Minimalkan DFA:
Saya telah mengubah K-> G, J-> F, I-> E terlebih dahulu. Dalam iterasi berikutnya, H-> D dan E-> F. Dengan demikian, tabel terakhir adalah:
State + Input:a + Input:b
->A | B | C
B | D | E
C | E | D
(D) | D | D
(E) | E | E
Dan secara diagram terlihat seperti:
(sumber: livefilestore.com )
... yang bukan DFA yang diwajibkan! Saya sudah tiga kali memeriksa hasil saya. Jadi, di mana saya salah?
catatan:
- -> = keadaan awal
- () = keadaan akhir