Contoh di bawah ini membuktikan bahwa algoritma yang membutuhkan untuk menyelesaikan masalah pada kata-Ram mungkin membutuhkan pada Mesin Turing 1-tape (TM) ) yang persis mengeksekusi semua perhitungan ditunjukkan oleh . Saya mengerti pertanyaan terkait dengan 1-tape TM, dan saya hanya menggunakan yang ini sebagai jawaban saya. Ini adalah suntingan untuk menanggapi pernyataan Emil Jeřábek.O ( n log ( n ) ) O ( n 2 log ( n ) 3 ) AAO(nlog(n))O(n2log(n)3)A
Kami akan menemukan kesimpulan yang lebih umum berikut . Untuk membuktikan bahwa TM dapat menyelesaikan dalam masalah yang diselesaikan dalam dengan algoritma pada RAM, tidak cukup menjalankan pada TM. Sebuah pintar algoritma mungkin diperlukan. Hal yang sama berlaku jika seseorang ingin membuktikan overhead . Membuktikan keberadaan algoritma yang pintar kapan pun dibutuhkan tampaknya jauh dari langsung, untuk sedikitnya. Ini tidak sejalan dengan tanggapan lain yang pada dasarnya hanya mengusulkan untuk mensimulasikan / mengeksekusi pada TM semua perhitungan RAM (dari algoritma ) untuk mengumumkan kompleksitas TM sepertiO(T(n)2)O(T(n))AAO(nlog(n))AO(T(n)2) atau .O(T(n)nlog(n))
Masalah: Kami diberi array / tabel dengan bilangan bulat yang masing-masing disimpan di bit. Kita diberi array kedua dengan posisi , masing-masing merekam sejumlah bit. Untuk setiap , kami mendefinisikan jika MOD MOD . Kalau tidak, . Keluaran . Saya menganggap input diberikan sebagai rekaman dengantabn=2klog(n)dlog(n)log(n)t∈[0..log(n)−1]Xt=1tab[i]d[t]=tab[n/2+i]d[t] ∀i∈[0..n/2−1]Xt=0∑log(n)−1t=0Xtnlog(n)+log(n)log(n) digit biner, untuk menanggapi komentar Emil Jeřábek.
Algoritma pada RAMA A RAM dengan ukuran kata membutuhkan = untuk membaca input string biner data. Tetapi setelah membaca data, itu hanya dapat bekerja dengan kata-kata dengan ukuran . Algoritma menghitung di dengan menelusuri semua dan menguji kondisinya. Loop utama adalah UNTUK : menghitung . Kompleksitas totalnya adalah (membaca data) +w=log(n)O(nlog(n)+log(n)2)O(nlog(n))log(n)AXtO(n)i∈[0..n/2−1]At=0,1,2,…log(n)−1XtO(nlog(n))O(nlog(n))(melakukan perhitungan), sehingga dapat melakukan semuanya dalam pada RAM.AO(nlog(n))
Algoritma pada 1-tape TM:A Saya berpendapat bahwa TM satu-tape membutuhkan waktu untuk tetap . Dari sudut pandang TM, menentukan sama dengan menguji kesetaraan dua string biner dengan panjang . Misalnya, operasi MOD MOD mungkin sama dengan menghapus bit dari . Dalam kasus seperti itu, menentukan setara dengan pengujian kesetaraan pada string bit dengan panjang . Diketahui bahwa pengujian kesetaraan dua untaian panjangO(n2log(n)2)tAtO(nlog(n))tab[i]d[t]0tab[i]Atn(log(n)−1)/2mmembutuhkan pada 1-tape TM, tapi saya tidak bisa menemukan referensi sekarang. Namun, saya memberikan bukti dalam ps. Jika TM mengeksekusi loop utama dari , itu harus menghabiskan setidaknya untuk setiap , berakhir di .O(m2)AO((nlogn)2)t=0,1,2,…log(n)−1O(n2log(n)3)
ps. Saya menunjukkan bahwa pengujian kesetaraan pada string bit dengan bit tidak bisa lebih cepat daripada pengujian palyndrome pada string dengan bit (palyndrome dikenal untuk mengambil setidaknya waktu). Kami dapat memodifikasi algoritma TM apa pun untuk pengujian kesetaraan untuk menyelesaikan palindrome. Asumsikan pengujian-persamaan TM dimulai dengan dua bilangan bulat: satu di kiri kepala, satu di kanan (ini adalah formulir input paling sederhana untuk TM). Setiap gerakan di atas posisi kiri dapat dicerminkan (tercermin) di atas posisi yang tepat. Kami membangun TM cermin: setiap kali TM awal berada di posisi (di sebelah kiri), TM cermin di posisi (di kanan). Jika TM menyelesaikan pengujian kesetaraan dalam waktu kurang darimmO(m2)−x<0xO(m2), TM cermin yang dimodifikasi ini akan menyelesaikan palindrom dalam waktu kurang dari .O(m2)
Juga, ada beberapa algoritma TM pengujian kesetaraan di luar sana dan semuanya membutuhkan waktu kuadrat karena mereka membutuhkan zig-zag, lihat misalnya Mesin Turing Contoh 2 di courses.cs.washington.edu/courses/cse431/14sp/scribes/ lec3.pdf