Apakah bahasa ini dikenali oleh 3 simbol TM di O (n log n)?


10

Saya bermain dengan pertanyaan yang sangat menarik dan masih terbuka " Alfabet mesin Turing single-tape " (oleh Emanuele Viola) dan muncul dengan bahasa berikut:

L={x{0,1}n s.t. |x|=n=2m and count1(x)=km;n,m,k1}

di mana adalah jumlah s dalam string x.count1(x)1

Misalnya, jika x = 01101111 maka n = 8, m = 3, k = 2; jadixL

Bisakah L dikenali oleh Mesin Turing dengan satu pita dan 3 simbol alfabet dalam langkah ? {ϵ,0,1}O(nlogn)

Jika kita menggunakan 4 simbol jawabannya adalah ya:

  • periksa apakah mengganti s dengan dan s dengan dan sekaligus simpan s di sebelah kanan;|x|=2m0ϵ12m 1
  • kemudian menghitung jumlah s modulo di .2mO(nlogn)

Sebagai contoh:

....01101111....... input x  (|x| = 8 = 2^3)
000.021.1212.0001.. div 2, first sweep (000. can safely be used as a delimiter)
000.022.1222.00011. div 2, second sweep
000.022.2222.000111 div 2, third sweep --> m = 3 (= log(n) )
000..22.2222....111 cleanup (original 1s are preserved as 2)
000..22.2221102.... start modulo m=3 calculation
000..22.2210022.... mod 3 = 2
000..22.2000222.... mod 3 = 0
000..22.0012222.... mod 3 = 1
000..20112.2222.... mod 3 = 2
000..11122.2222.... ACCEPT

Jika adalah bilangan alami yang diwakili oleh daripada selalu sama dengan dan ? |x|=n=2mxcount1(x)1L={10}
Marc Bury

Maaf | x | berarti panjang string x. Contoh: x = 01101111, n = 8, m = 3, k = 2, dan dengan demikianxL
Marzio De Biasi

1
Ngomong-ngomong, ini adalah kandidat yang sangat baik untuk pertanyaan Emanuele, karena itu ada di : ini tidak biasa oleh lemma pemompaan, jadi tidak mungkin , tetapi itu adalah . Θ(nlogn)o(nlogn)O(nlogn)
Joshua Grochow

Jawaban:


10

Tidak bisakah Anda menggunakan ide yang sama dengan yang Anda miliki untuk case 4 simbol , dengan modifikasi berikut:

  • Selalu proseskan sepasang simbol secara bersamaan.
  • Dalam sapuan "div 2" Anda, tandai blok dua simbol sebagai "diproses" dengan memetakan . Anda masih memiliki tersedia sebagai "pemisah" yang dapat Anda gunakan di kedua ujungnya, dan Anda dapat memulihkan data asli dengan mudah.ϵ ϵ(00,01,10,11)(ϵ0,ϵ1,0ϵ,1ϵ)ϵϵ
  • Gunakan trik serupa untuk langkah "mod 2".

Secara umum, Anda dapat memeras informasi pembukuan dalam jumlah besar secara sewenang-wenang dengan bantuan simbol ketiga dengan memroses simbol sekaligus.O(1)


Kamu benar! ... sekarang saya curiga bahwa jawaban untuk pertanyaan Emanuele adalah ya ... tetapi masih terbuka sehingga mungkin tidak terlalu mudah untuk membuktikannya secara resmi :-( Terima kasih!
Marzio De Biasi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.