È possibile decidere se un determinato algoritmo è asintoticamente ottimale?


11

Esiste un algoritmo per il seguente problema:

Data una macchina Turing che decide una lingua , esiste una macchina Turing decide tale che ? L t 2 ( n ) = o ( t 1 ( n ) )M1L
M2Lt2(n)=o(t1(n))

Le funzioni e sono i tempi di funzionamento nel caso peggiore delle macchine Turing e rispettivamente.t 2 M 1 M 2t1t2M1M2

E la complessità dello spazio?


1
La risposta è decisamente no. Determinare il tempo di esecuzione nel caso peggiore di una TM è noto per essere indecidibile.
Chazisop,

Risposte:


9

Ecco un semplice argomento per dimostrare che sono indecidibili, cioè non ci sono algoritmi per verificare se un determinato algoritmo è ottimale per quanto riguarda il tempo di esecuzione o l'utilizzo della memoria.

Riduciamo il problema dell'arresto su nastro bianco al tuo problema di ottimizzazione del tempo di esecuzione.

Lascia che sia una data macchina di Turing. Sia N la seguente macchina di Turing:M

n M n M n 2 nN : sull'input 1. Esegui su nastro vuoto per (al massimo) passaggi. 2. Se non si interrompe in passaggi, eseguire un ciclo di dimensioni , quindi restituire NO. 3. In caso contrario, restituire SÌ.n
Mn
Mn2n

Esistono due casi:

  1. Se non si arresta sul nastro vuoto, la macchina verrà eseguita per passaggi sull'input . Quindi il suo tempo di esecuzione è . In questo caso, ovviamente non è ottimale.N Θ ( 2 n ) n Θ ( 2 n ) NMNΘ(2n)nΘ(2n)N

  2. Se ferma su nastro bianco, la macchina verrà eseguita per un numero costante di passaggi per tutte le abbastanza grandi , quindi il tempo di esecuzione è . In questo caso, è ovviamente ottimale.N n O ( 1 ) NMNnO(1)N

In breve:

M halts on blank tape N is optimial 

Inoltre, dato il codice per , possiamo calcolare il codice perM . Pertanto abbiamo una riduzione dal problema di arresto su nastro vuoto al problema di ottimalità del tempo di esecuzione. Se potessimo decidere se una data macchina di Turing N fosse ottimale, potremmo usare la riduzione di cui sopra per verificare se una data macchina M si ferma su nastro bianco. Dal momento che l'arresto su nastro bianco non è definibile, anche il problema è indecidibile.NNM

Un argomento simile può essere utilizzato per lo spazio, ovvero è anche impossibile decidere se una determinata macchina di Turing sia ottimale per quanto riguarda lo spazio che utilizza.

Anche un'affermazione più forte è vera: non possiamo decidere se una determinata funzione calcolabile è un limite superiore alla complessità temporale del calcolo di una determinata funzione calcolabile. Allo stesso modo per lo spazio. Vale a dire anche la teoria della complessità di base non può essere automatizzata dagli algoritmi (che può essere considerata una buona notizia per i teorici della complessità;).


Voglio solo ricordare che nella domanda originale, OP ha ipotizzato che decida la lingua in tempo quadratico. M1
Pål GD,

Si prega di chiarire che si guarda all'ottimalità asintotica . Anche nel caso 2, non è strettamente ottimale; la funzione n può essere calcolata in un solo passaggio, mentre N richiede più di n 0 (per n grande ), con n 0 la lunghezza del calcolo di M su nastro bianco. nnYESNn0nn0M
Raffaello

Ah, la domanda è cambiata dall'ultima volta che l'ho letta. Non importa.
Raffaello

@ PålGD, penso che OP l'abbia usato come esempio (basato sulla domanda originale pubblicata su cstheory). Puoi controllare i commenti sotto quella domanda.
Kaveh,


-3

Ha! Se la risposta fosse sì, vivremmo in un mondo diverso.

A0ALA0A

Sfortunatamente, questo non è possibile, e personalmente penso che dimostrare l'ottimalità (non banale) sia il problema più interessante (e difficile) dell'informatica. Per quanto ne so - sarei felice di essere corretto - non esiste alcun risultato di ottimalità per nessun problema polinomiale (tranne i risultati di banale ottimalità nel corso di algoritmi che richiedono un tempo proporzionale alla dimensione dell'input).


1
Ω(N)

1
Ω(nlogn)

@vonbrand - questo è ciò che intendevo con algoritmi che assumono proporzioni alla dimensione dell'input.
fino al

1
@ttothet Ok, temo che sarà inutile, ma ci riproverò. 1) No, per niente. Se si salva solo un passaggio su ogni input, si dispone di un algoritmo migliore di prima, anche se ha lo stesso runtime asintotico. 2) No, non lo è. Può anche significare "Non lo so, ma se sì, allora X". Questo non è raro (vedi P? = NP). 3) Hai reclamato non c'erano nessun limiti inferiori non banali (su asintotica, suppongo) a tutti . Questo è sbagliato. Fai i compiti, per favore.
Raffaello

1
@ MartinJonáš Intendo una macchina Turing a 2 nastri. Kaveh ha ragione, la dimostrazione del teorema della gerarchia temporale fornisce problemi risolvibili nel tempo polifunzionale con complessità arbitrariamente alta, ma gli esempi non sono esattamente naturali e non sembrano molto espliciti. Inoltre, nessuna gerarchia è nota per il tempo probabilistico, quindi non abbiamo davvero nulla.
Sasho Nikolov,
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.