Apakah bahasa kata yang mengandung angka sama dengan 001 dan 100 teratur?

14

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 }LL{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.

Ben Elgar
sumber
2
Mengapa Anda tidak bisa menjawab solusi Anda sendiri?
Yuval Filmus
1
@YuvalFilmus Ada penundaan bagi pengguna dengan reputasi rendah untuk menjawab pertanyaan mereka sendiri (8 jam jika perwakilan <100).
Gilles 'SANGAT berhenti menjadi jahat'
1
Mungkin harus ada loop tambahan pada q 5 ? 0q5
Hendrik Jan
1
Contoh serupa dari fenomena ini, tetapi untuk substring "01" dan "10" dibahas di situs saudari kita. Membuktikan suatu bahasa adalah teratur atau tidak teratur . Jawabannya memiliki komentar yang sama seperti yang dibuat oleh wanita dalam komentarnya: "Yaitu, transisi 01 tidak dapat diikuti oleh transisi lain tanpa 10 transisi yang mengintervensi .". 0110
Hendrik Jan

Jawaban:

3

Sebuah jawaban diambil dari pertanyaan.

Seperti yang ditunjukkan oleh Hendrik Jan, harus ada 0 self-loop tambahan di q5.

otomat

Juho
sumber
ini adalah konstruksi, bukan bukti
vzn
di kelas CS untuk masalah sederhana terkadang hanya DFA yang diberikan, tetapi tidak membuktikan bahwa ia benar-benar menerima bahasa. Anda harus [entah bagaimana] menunjukkan untuk setiap string input yang berfungsi dengan benar. "bagaimana cara kerjanya?"
vzn
2
q5q2
3

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:

State S0: Input is empty. -> S1/C0

State S1: Input is 0. -> C2/C0

State A: Y = X + 1, input ends in 00. -> A/C0

State B0: X = Y + 1, input ends in 1. -> B1/B0

State B1: X = Y + 1, input ends in 10. -> C2/B0

State C0: X = Y, input ends in 1. -> C1/C0

State C1: X = Y, input ends in 10. -> A/C0

State C2: X = Y, input ends in 00. -> C2/B0

Keadaan awal adalah S0, dan S0, S1, C0, C1, C2 menerima status.

gnasher729
sumber