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.

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


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).

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
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.