Dalam keadaan apa algoritma

16

Misalkan, untuk setiap ϵ>0 , ada mesin Turing Mϵ yang menentukan bahasa L dalam waktu O(na+ϵ) . Apakah ada algoritma tunggal yang menentukan L dalam waktu O(na+o(1)) ? (Di sini, istilah o(1) diukur dengan n , panjang input.)

Apakah itu membuat perbedaan jika algoritma Mϵ yang dihitung, atau secara efisien dihitung, dalam hal ϵ ?

Motivasi: dalam banyak bukti, lebih mudah untuk membangun algoritma waktu O(na+ϵ) daripada algoritma pembatas O(na+o(1)) . Secara khusus, Anda perlu mengikat suku konstan dalam O(na+ϵ) untuk melewati batas O(na+o(1)) . Alangkah baiknya jika ada beberapa hasil umum yang bisa Anda panggil untuk langsung ke batas.

David Harris
sumber

Jawaban:

10

Pertanyaannya mirip dengan pertanyaan tentang keberadaan konstruktif dari batas urutan objek (konstruktif). Biasanya jika Anda dapat secara seragam membangun objek-objek itu (di sini ) cukup efisien maka Anda dapat menunjukkan keberadaan batas secara konstruktif.Mϵ

Misalnya, asumsikan bahwa kita memiliki TM yang menjalankan M | k | - 1 pada x dan waktu operasinya adalah O ( n a + | k | - 1 ) + O ( | k | ) (di sini batas-batasnya juga seragam, misalnya sesuatu seperti O ( 2 k . N a + | k | - 1 )N(k,x)M|k|1xO(na+|k|1)+O(|k|)O(2k.na+|k|1)tidak akan bekerja). Kemudian kita dapat menggabungkan simulator seragam ini dengan fungsi untuk mendapatkan mesin N ( x , x ) yang berjalan dalam waktu O ( n a + o ( 1 ) ) .(k,x)xN(x,x)O(na+o(1))

PS: agak ambigu karena bersarang dari notasi asimptotik, saya menafsirkannya sebagai n a + o ( 1 ) . Kita juga perlu a agar tidak terlalu kecil, misalnya setidaknya 1 .O(na+o(1))na+o(1)a1

Kaveh
sumber
8

Anda dapat menggunakan algoritma pencarian universal Levin. Misalkan Anda entah bagaimana dapat menghitung urutan algoritma memutuskan L , masing-masing berjalan dalam waktu C k n a + 1 / k . Algoritma Levin berjalan dalam waktu T ( n ) D k n a + 1 / k untuk setiap k , di mana D k adalah konstanta tergantung pada C k . Jadi untuk setiap k , τ ( n ) AkLCkna+1/kT(n)Dkna+1/kkDkCkk

τ(n)logT(n)lognalogDk+(a+1/k)lognlogna=logDklogn+1k.
Given ϵ>0, choose k=2/ϵ, and let N=Dk2/ϵ. Then for nN, τ(n)ϵ. Therefore τ(n)0, and we get that Levin's algorithm runs in time na+τ(n)=na+o(1).
Yuval Filmus
sumber
If I understand Levin's algorithm, this only applies to search algorithms. This algorithm would work to invert a function f, where f can be computed in time O(no(a)).
David Harris
I'm not suggesting using Levin's algorithm itself, just the idea of running all the algorithms Ak in parallel using dovetailing, in such a way that each one is slowed down only by a multiplicative factor.
Yuval Filmus
@ Yuval, when you dovetail all the algorithms, then how do you decide which answer to accept? In a search problem, you can test each putative output, but in general this is not possible.
David Harris
I accept the first answer that appears. We are given that the algorithms Ak correctly decide L.
Yuval Filmus