Saya bertanya-tanya kapan bahasa yang berisi jumlah instance yang sama dari dua substring akan teratur. Saya tahu bahwa bahasa yang mengandung jumlah 1s dan 0s yang sama tidak teratur, tetapi merupakan bahasa seperti , di mana = jumlah dari substring "001" sama dengan jumlah instance dari substring " 100 " reguler? Perhatikan bahwa string "00100" akan diterima.L { w ∣ }
Intuisi saya mengatakan itu tidak benar, tetapi saya tidak dapat membuktikannya; Saya tidak bisa mengubahnya menjadi bentuk yang bisa dipompa melalui lemma pemompaan, jadi bagaimana saya bisa membuktikannya? Di sisi lain, saya telah mencoba membangun DFA atau NFA atau ekspresi reguler dan gagal juga, jadi bagaimana saya harus melanjutkan? Saya ingin memahami ini secara umum, bukan hanya untuk bahasa yang diusulkan.
sumber
Jawaban:
Sebuah jawaban diambil dari pertanyaan.
Seperti yang ditunjukkan oleh Hendrik Jan, harus ada 0 self-loop tambahan di q5.
sumber
Ini pertanyaan jebakan. Coba buat string yang berisi dua 001 dan tidak mengandung 100, dan lihat mengapa Anda tidak bisa melakukannya. Jika X = "angka 001", dan Y = "angka 100", maka X = Y atau X = Y ± 1.
Setelah Anda menyadari triknya, sangat tidak mungkin bahasanya tidak teratur, dan kemudian membangun DFA cukup sederhana. Hanya ada 8 negara dengan transisi mereka jika simbol berikutnya adalah 0/1:
Keadaan awal adalah S0, dan S0, S1, C0, C1, C2 menerima status.
sumber