W jakich okolicznościach algorytmy

16

Załóżmy, że dla każdego istnieje maszyna Turinga M ϵ, która decyduje o języku L w czasie O ( n a + ϵ ) . Czy istnieje jeden algorytm decydujący o L w czasie O ( n a + o ( 1 ) ) ? (Tutaj składnik o ( 1 ) jest mierzony jako n , długość wejściowa.)ϵ>0MϵLO(na+ϵ)LO(na+o(1))o(1)n

Czy robi to różnicę, jeśli algorytmy są obliczalne lub wydajnie obliczalne pod względem ϵ ?Mϵϵ

Motywacja: w wielu dowodach łatwiej jest zbudować algorytmy czasu niż algorytm ograniczający O ( n a + o ( 1 ) ) . W szczególności musisz związać stały wyraz w O ( n a + ϵ ), aby przejść do granicy O ( n a + o ( 1 ) ) . Byłoby miło, gdyby był jakiś ogólny wynik, który można wywołać, aby przejść bezpośrednio do limitu.O(na+ϵ)O(na+o(1))O(na+ϵ)O(na+o(1))

David Harris
źródło

Odpowiedzi:

10

Pytanie jest podobne do pytań o konstruktywne istnienie granicy sekwencji (konstruktywnych) obiektów. Zwykle, jeśli potrafisz wystarczająco jednolicie konstruować te obiekty (tutaj ) wystarczająco skutecznie, możesz konstruktywnie pokazać istnienie limitu.Mϵ

Załóżmy na przykład, że mamy TM która uruchamia M | k | - 1 na x, a jego czas działania wynosi O ( n a + | k | - 1 ) + O ( | k | ) (tutaj granice są również jednolite, np. Coś w rodzaju O ( 2 k . N a + | k | - 1 )N(k,x)M|k|1xO(na+|k|1)+O(|k|)O(2k.na+|k|1) nie działałoby) Następnie możemy połączyć ten jednolity symulator z funkcją aby uzyskać maszynę N ( x , x ), która działa w czasie O ( n a + o ( 1 ) )(k,x)xN(x,x)O(na+o(1)) .

PS: jest trochę niejednoznaczny z powodu zagnieżdżania notacji asymptotycznych, interpretuję to jako n a + o ( 1 ) . Musimy też nie być za mały, np. PrzynajmniejO(na+o(1))na+o(1)a .1

Kaveh
źródło
8

Możesz użyć uniwersalnego algorytmu wyszukiwania Levina. Załóżmy, że można w jakiś sposób wyliczyć sekwencję algorytmów decydujących o L , z których każdy działa w czasie C k n a + 1 / k . Algorytm Levina działa w czasie T ( n ) D k n a + 1 / k dla każdego k , gdzie D k jest stałą zależną od C k . Tak więc dla każdego 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
źródło
ffO(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