Dapatkah setiap fungsi yang dapat dihitung dalam waktu pada mesin Turing pita tunggal menggunakan alfabet ukuran dapat dihitung dalam waktu pada mesin Turing single-tape menggunakan alfabet ukuran (katakanlah, dan kosong)?
(Dari komentar di bawah oleh OP). Perhatikan input ditulis menggunakan , tetapi mesin Turing menggunakan alfabet ukuran dapat menimpa simbol input dengan simbol dari alfabet yang lebih besar. Saya tidak melihat cara menyandikan simbol dalam alfabet yang lebih besar dalam alfabet yang lebih kecil tanpa harus menggeser input yang membutuhkan waktu .
Jawaban:
Sebagian jawaban jika TM berjalan dio(|x|log|x|)
Jika TM4 adalah TM 4-simbol (dengan alfabet ) yang menghitung , yaitu memutuskan bahasa inΣ4={ϵ,0,1,2} f:{0,1}∗→{0,1} L={x|f(x)=1} (o(|x|log|x|))
Satu kompleksitas deterministik linear-waktu adalah1DLIN=1DTime(O(n))
Jadi adalah teratur, dan jelas masih teratur lebih dari alfabetL Σ3={ϵ,0,1}
Jadi ada DFA yang memutuskan L dan hanya menggunakan simbol di . TM3 3-simbol satu-pita dapat dibangun langsung dari DFA dan memutuskan L menggunakan input murni yang sama dari TM4 asli .Σ3
... Anda tidak dapat membangunnya langsung dari TM4, tetapi TM3 ada.
Jika TM4 berjalan di maka Anda dapat menggeser input dan melakukan konversi langsung dari TM4 ke TM3.Ω(n2)
Seperti disebutkan dalam komentar, kasus yang sulit adalah ketika TM4 berjalan di .Ω(nlogn)∩o(n2)
(1) Perhitungan mesin Turing Hennie, One-tape, off-line (1965)
(2) Kobayashi, Pada struktur hierarki waktu mesin Turing satu-pita nondeterministic (1985)
sumber
Untuk semua ukuran alfabet lebih besar dari , runtimes hanya berubah oleh faktor konstan karena untuk semua .1 logk(x)∈Θ(logl(x)) k,l>1 Elaborasi:Dalam timesteps, diasumsikan mesin Turing dapat memproses paling posisi / bit. Bit diambil dari alfabet -nary, wlog . Buat mesin Turing baru dengan mengganti setiap transisi dengan transisi; setiap bit lama dikodekan oleh bit di (kosong disediakan untuk menandai sel yang tidak digunakan). Perhatikan ini pada dasarnya adalah angka kode biner.Jelas, mesin Turing yang dihasilkan mengeksekusi paling banyak langkah .⌈log2(k)⌉⋅t∈O(t)
Tambahan: Argumentasi di atas terputus karena operasi yang menimpa simbol input dengan sedikit tidak dalam tidak dapat diterjemahkan secara langsung; input harus digeser. Ini dapat diubah dengan menerjemahkan input asli sebelum memulai perhitungan (pada dasarnya padding); ini dapat dilakukan dalam waktu , menghasilkan runtime total dari .{0,1} O(n2) O(n2)+⌈log2(k)⌉⋅t
Akibatnya, hanya menggunakan dua simbol untuk pengkodean hasil antara tidak berdampak asimptotik jika , tetapi preprocessing mendominasi algoritma yang lebih cepat. Karena sebagian besar fungsi yang menarik ada di (misalnya menambahkan dua angka), orang mungkin menganggap masalahnya dapat diabaikan.t(n)∈Ω(n2) Ω(n2)
sumber