Sottoinsieme NTIME (f) di DSPACE (f)


9

Come afferma la domanda, come possiamo dimostrare che ?NTIME(f(n))DSPACE(f(n))

Qualcuno può indicarmi una prova o delinearla qui? Grazie!


4
Immagino che ci siano mult. costanti che si nascondono lì. Puoi provare che . Basta enumerare tutte le possibili ipotesi non deterministiche dell'algoritmo ed eseguire l'algoritmo con queste ipotesi. Accetta se una delle ipotesi porta a uno stato accettante. NTIME(f(n))DSPACE(2f(n))
Igor Shinkar,

1
Perché non rendere questa una risposta?
Yuval Filmus,

@IgorShinkar Ci sono vari risultati, come il teorema della velocità lineare e il teorema di compressione del nastro che dice che puoi eliminare quelle costanti nella "maggior parte" delle circostanze. Lo speedup lineare dice che per qualsiasi ; la compressione del nastro dice che , sempre per qualsiasi . ϵ > 0 D S P A C E ( f ( n ) ) D S P A C E ( ϵ f ( n ) + O ( 1 )DTIME(f(n))DTIME(ϵf(n)+n+2)ϵ>0ϵ > 0DSPACE(f(n))DSPACE(ϵf(n)+O(1))ϵ>0
David Richerby,

Risposte:


4

Ecco una versione estesa del commento di Igor Shinkar. Il modo più semplice per simulare una macchina non deterministica in esecuzione nel tempo e nello spazio usa spazio. Enumeriamo tutti i possibili lanci di monete, simulando la macchina originale su ciascuno di essi; ciò richiede spazio per la memorizzazione dei lanci di monete e spazio per la simulazione della macchina reale. C'è una leggera difficoltà qui: quando i lanci di monete vengono "letti" dalla macchina (originale), dobbiamo segnare in qualche modo dove siamo nella sequenza dei lanci di monete; possiamo usare un bit in più per lancio della moneta. Probabilmente è possibile ottimizzarlo ulteriormente.s ( n ) f ( n ) s ( n ) + 2 f ( n ) + O ( 1 ) f ( n ) s ( n )f(n)s(n)f(n)s(n)+2f(n)+O(1)f(n)s(n)

Se stiamo attenti, potremmo essere in grado di ottenere qualcosa di ancora migliore, poiché in ogni esecuzione del programma, il numero totale di lanci di monete e lo spazio totale utilizzato si sommano al massimo . Sospetto che sia possibile eseguire la simulazione nello spazio . Forse dovremo assumere qualcosa come per questo.( 1 + o ( 1 ) ) f ( n ) f ( n ) = Ω ( log n )f(n)(1+o(1))f(n)f(n)=Ω(logn)

Come menziona Igor, di solito le classi limitate alle risorse sono definite solo "fino alla grande O", in modo che il risultato, che utilizza lo spazio , sia ancora in .O(f(n))DSPACE(f(n))

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.