Apakah bahasa reguler ditutup dengan penambahan?

10

Khususnya yang saya maksud dengan penambahan adalah, kita mendefinisikan sebagai alfabet . Mengingat bahasa biasa dan di bawah beberapa alfabet , lihat . { 0 , 1 , 2 , . . . , i } A B Σ i A × BΣi{0,1,2,...,i}ABΣiA×B

Untuk setiap pasangan yang dipesan , tentukan "jumlah" dari pasangan yang dipesan ini sebagai , di mana dan adalah angka dalam basis i. Leading 0's diabaikan, jadi ada di depan setiap string yang diterima. Ini berarti didefinisikan sebagai 0.a + b a b 0 ϵ(a,b)A×Ba+bab0ϵ

Bahasa adalah himpunan string yang mewakili semua jumlah yang mungkin.A+B

Sejauh ini, saya tahu:

  • Ini benar di unary ( ).Σ1
  • Ini berlaku untuk setiap bahasa reguler berhingga dan , karena bahasa berhingga apa pun adalah reguler dan terbatas.B A + BABA+B
  • Bahasa = ss adalah kelipatan n dalam basis b bawah adalah biasa untuk setiap . Ini berarti bahasa apa pun dari formulir juga dapat ditambahkan, seperti , yang juga teratur. Namun ada bahasa seperti = ss dimulai dan diakhiri dengan 1} yang tidak sesuai dengan kriteria ini, jadi ini tidak menjelaskan semua bahasa biasa. { | } Σ b b > = 1 C n C i + C j = C i + j D { |Cn{|}Σbb>=1CnCi+Cj=Ci+jD{|
Phylliida
sumber
2
Tidak benar bahwa jika A teratur di basis 2, itu juga biasa di basis 3, pertimbangkan, misalnya, kekuatan 2.
domotorp
Begitu ya, kamu benar. Saya mengedit pertanyaan sesuai. Saya mencoba membuktikannya, dan itu kelihatannya benar, dan kemudian saya salah memahami apa itu homomorfisme dan menganggap itu benar. Tapi tidak, maaf soal itu. Jika suatu bahasa beraturan dalam basis b ^ a untuk beberapa a> 1 juga suatu bahasa biasa dalam basis lain b ^ (ac) untuk setiap 1 <= c <a. (jadi misalnya, jika bahasa biasa di basis 8, itu juga biasa di basis 4 dan 2, cukup dengan mensimulasikan basis-8 dfa).
Phylliida
"Ini menyiratkan ϵ didefinisikan sebagai 0". Saya tidak mengerti apa artinya itu. Jika 0 dan ϵ sama, maka semua 0 dapat dihapus, dan interpretasi angka tidak lagi berfungsi.
babou
Intinya adalah bahwa jika string kosong ϵ berada dalam pasangan yang diurutkan, itu menambahkan 0 ke string lain. Juga untuk string apa pun yang diberikan yang memiliki 0s terkemuka mereka dapat dihapus. Apa artinya ini adalah bahwa 000101 sama dengan 101, misalnya. Inilah yang saya maksudkan, jika ϵ muncul dalam sebuah string dengan sendirinya , maka nilainya setara dengan jumlah dengan 0, atau 00, atau 000 sendiri . Jika string-string itu berada dalam string lain, semua taruhan dimatikan, dan penggantian ini tidak lagi berlaku.
Phylliida

Jawaban:

14

Iya itu mereka.

Pertama, pertimbangkan alfabet yang simbol adalah tiga kali lipat dari angka (ditumpuk satu di atas satu sama lain ke tumpukan tiga digit). Atas alfabet ini, kita dapat mendefinisikan bahasa biasa A ′ di mana string yang dibentuk oleh paling atas dari tiga digit milik A , bahasa reguler B ′ di mana string yang dibentuk oleh tengah dari tiga digit milik B , dan bahasa biasa C di mana dua string teratas menjumlahkan ke bawah. A dan B hanya menggunakan automata yang dimodifikasi untuk A dan B , sedangkan CΣi3AABBCABABC menggunakan fakta bahwa Anda dapat melakukan penambahan dengan memindai kanan-ke-kiri dengan hanya menyimpan satu digit carry sebagai status.

Kemudian adalah (dengan penutupan di bawah persimpangan) bahasa biasa yang mengenali tumpukan tiga string, satu di A , satu di B , dan yang ketiga dalam jumlah. Homomorfisme yang melepaskan dua digit teratas dari tumpukan yang hanya menyisakan yang di bawah membawa ke bahasa yang Anda inginkan, dan hasilnya mengikuti dengan penutupan di bawah homomorfisme.ABCAB

David Eppstein
sumber
Sangat mengagumkan. Saya tidak menyadari Anda bisa menggunakan tumpukan itu dengan cara itu. Terima kasih!
Phylliida
Memang ini sedikit rapuh karena dalam kasus ini hanya berisi jumlah string dengan ukuran yang sama, namun, karena kita dapat "mensimulasikan" jumlah string dengan ukuran berbeda dengan menambahkan angka nol ke kiri, dan mudah untuk memodifikasi dfa menjadi dfa lain yang mengenali 0 * di depan semua string yang menerima (setelah Anda membuat dfa penjumlahan untuk mengenali C dengan homomorfisme).
Phylliida
Saya kira kunci terbesar adalah bahwa A dan B harus "dimodifikasi secara teknis" dengan cara yang sama untuk menjadi 0 * A dan 0 * B, dan sekali kita melakukan itu sudah cukup untuk, untuk setiap pasangan a dan b, temukan jumlah 0 * a + 0 * setelah kedua nilai memiliki 0s yang cukup untuk mencocokkan ukuran, dan kemudian hasilnya dapat dilucuti dari 0s sesuai kebutuhan karena C dimodifikasi dengan cara yang sama. Apakah itu tersirat, atau apakah ada cara yang lebih sederhana untuk melihat bahwa saya hilang?
Phylliida
Ya, ada beberapa teknis yang melibatkan padding tetapi mereka tidak benar-benar mengubah ide dasar jadi saya menghilangkannya.
David Eppstein
Keren, itu masuk akal.
Phylliida
9

ABMAMBabMAMBMAMB

domotorp
sumber