In quali circostanze gli algoritmi


16

Supponiamo che, per ogni , vi sia una macchina di Turing che decide una lingua nel tempo . Esiste un singolo algoritmo che decide nel tempo ? (Qui, il termine viene misurato in termini di , la lunghezza di input.)ϵ>0MϵLO(na+ϵ)LO(na+o(1))o(1)n

Fa differenza se gli algoritmi Mϵ sono calcolabili o calcolabili in modo efficiente in termini di ϵ ?

Motivazione: in molte prove, è più facile costruire algoritmi del tempo O(na+ϵ) rispetto all'algoritmo limitante O(na+o(1)) . In particolare, è necessario limitare il termine costante in O(na+ϵ) per passare al limite O(na+o(1)) . Sarebbe bello se ci fosse qualche risultato generale che puoi invocare per passare direttamente al limite.

Risposte:


10

La domanda è simile alle domande sull'esistenza costruttiva del limite di una sequenza di oggetti (costruttivi). Di solito se puoi costruire in modo uniforme quegli oggetti (qui ) in modo abbastanza efficiente, allora puoi mostrare l'esistenza del limite in modo costruttivo.Mϵ

Ad esempio, supponiamo che abbiamo una TM che esegue M | k | - 1 su x e il suo tempo di esecuzione è O ( n a + | k | - 1 ) + O ( | k | ) (qui anche i limiti sono uniformi, ad esempio qualcosa come O ( 2 k . N a + | k | - 1 )N(k,x)M|k|1xO(na+|k|1)+O(|k|)O(2k.na+|k|1)non funzionerebbe). Quindi possiamo combinare questo simulatore uniforme con la funzione per ottenere la macchina N ( x , x ) che gira nel tempo O ( n a + o ( 1 ) ) .(k,x)xN(x,x)O(na+o(1))

PS: è un po 'ambiguo a causa della nidificazione di notazioni asintotiche, lo sto interpretando come n a + o ( 1 ) . Inoltre abbiamo bisogno di un essere non troppo piccola, per esempio di almeno 1 .O(na+o(1))na+o(1)a1


8

Puoi usare l'algoritmo di ricerca universale di Levin. Supponiamo di poter in qualche modo enumerare una sequenza di algoritmi decide L , ciascuno in esecuzione nel tempo C k n a + 1 / k . L'algoritmo di Levin corre nel tempo T ( n ) D k n a + 1 / k per ogni k , dove D k è una costante dipendente da C k . Quindi per ogni k , τ ( n ) AkLCkna+1/kT(n)Dkna+1/kkDkCkk Datoϵ>0, sceglik=2/ϵe lasciaN=D 2 / ϵ k. Quindi pernN,τ(n)ϵ. Pertantoτ(n)0, e otteniamo che l'algoritmo di Levin viene eseguito nel tempona+τ(n)=na+

τ(n)logT(n)lognalogDk+(a+1/k)lognlogna=logDklogn+1k.
ϵ>0k=2/ϵN=Dk2/ϵnNτ(n)ϵτ(n)0 .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

AkL
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.