Una separazione esplicita tra costruibilità temporale e costruibilità spaziale?


10

Mostra una funzione che è costruibile nello spazio ma non costruibile nel tempo.f(n)

Questo problema è correlato a una possibile separazione tra le classi di complessità DTIME (f (n)) e SPACE (f (n))?


3
en.wikipedia.org/wiki/Constructible_function Per quanto ne so, questa domanda non è correlata a TIME (f (n)) vs SPACE (f (n)), ma si noti che queste due classi sono diverse. Cerca gli articoli "On Time Versus Space", "On Time Versus Space II", "On Time Versus Space III"
Ryan Williams,

Una rapida osservazione: penso che il problema equivale a chiedere se DTIME (f (n)) ALLTALLY e SPACE (f (n)) ∩TALLY può essere diverso per alcune funzioni costruibili nello spazio f (n), dove TALLY è la classe di lingue che sono sottoinsiemi di 1 ^ *.
Tsuyoshi Ito,

Oops, potrebbero non essere equivalenti. Ecco una prova di una direzione. Se esiste una lingua L = {1 ^ n | n∈S} ∈ TALLY∩ (SPAZIO (f (n)) ∖ DTIME (f (n))) per alcune funzioni costruibili nello spazio f (n), quindi sia f (n) che f (n) + χ_S (n ) (dove χ_S (n) è la funzione caratteristica di S) sono costruibili nello spazio ma non entrambi sono costruibili nel tempo, e quindi almeno una di esse è una funzione costruibile nello spazio ma non costruibile nel tempo.
Tsuyoshi Ito,

2
Grazie a Ryan, con il tuo commento so che TIME (f (n)) è contenuto in SPACE (f (n) / log f (n)) di Hopcroft et al, e quest'ultimo è correttamente contenuto in SPACE (f (n )) dal teorema della gerarchia spaziale.
Tian Liu,

Grazie a Tsuyoshi, idee molto intelligenti, se sia f (n) che f (n) + χ_S (n) sono costruibili nel tempo, allora possiamo decidere se n∈S al massimo f (n) +1 tempo, quindi L ∈TALMENTE ∩ DTIME (f (n)), una contraddizione. ma le tue costruzioni possono essere chiamate "esplicite"? quale non è costruibile nel tempo, f (n) of (n) + χ_S (n)? per "esplicito" se intendo che possiamo decidere il valore f (n) per tutto n, allora la tua costruzione è esplicita.
Tian Liu,

Risposte:


6

Una funzione è costruibile nel tempo se esiste una macchina di Turing M che, sull'ingresso 1 n , calcola la funzione x T ( | x | ) nel tempo O ( T ( n ) ) .T:NNM1nxT(|x|)O(T(n))

Una funzione è costruibile nello spazio se esiste una macchina di Turing M che, sull'ingresso 1 n , calcola la funzione x S ( | x | ) nello spazio O ( S ( n ) ) .S:NNM1nxS(|x|)O(S(n))

Alcuni testi richiedono che le funzioni costruibili tempo / spazio non siano decrescenti. Alcuni testi richiedono che le funzioni costruibili nel tempo soddisfino e che le funzioni costruibili nello spazio soddisfino S ( n ) log n . Alcuni testi non fanno uso della notazione O ( ) nella definizione.T(n)nS(n)lognO()

Ad ogni modo, è facile dimostrare che ogni funzione "ordinaria" , che soddisfa f ( n ) log n e f ( n ) = o ( n ) è costruibile nello spazio, ma non costruibile nel tempo.ff(n)lognf(n)=o(n)

Il problema della costruibilità non è direttamente correlato alla possibile separazione tra le classi di complessità DTIME (f (n)) e SPACE (f (n)). Tuttavia, l'affermazione dei teoremi della gerarchia del tempo e dello spazio incorpora la costruibilità. Per esempio:

fgf(n)logf(n)=o(g(n))DTIME(f(n))DTIME(g(n))

Vedi il libro di Arora & Barak o Papadimitriou per maggiori informazioni. (Quest'ultimo usa il termine "funzione di complessità adeguata" per riferirsi a uno che è sia il tempo che lo spazio costruibili.)


Grazie. Preferisco la definizione che una funzione è costruibile nel tempo / nello spazio se esiste una macchina di Turing che gira esattamente in quei passaggi / quadrati di nastro. Naturalmente, dai teoremi di accelerazione lineare tempo / spazio, ciò equivale alle definizioni del tuo / libro di testo.
Tian Liu,

Sadeq, le tue definizioni per "costruibile nel tempo" e "costruibile nello spazio" sono identiche parola per parola. Stai dicendo che questi sono solo due nomi diversi esattamente per lo stesso concetto? In caso contrario, forse dovresti correggere le tue definizioni.
Yitz,

È solo un errore di battitura.
Tsuyoshi Ito,

Scusa Yitz. Ho corretto l'errore di battitura.
MS Dousti,

4

f(n)=logn1nO(logn)O(logn)


Grazie per il commento e la risposta. Ma puoi mostrare una funzione f (n) che è almeno lineare, cioè f (n)> = n, per la separazione? Sembra che una funzione costruibile nel tempo non possa essere inferiore a n per una ragione apparente: è necessario leggere tutti i bit di input, altrimenti un argomento avverso può mostrare che la funzione non è calcolata correttamente.
Tian Liu,

f(n)=n

f(n)=n+1

2

EXPTIME=EXPSPACEEXPSPACECOMPLETELEXPSPACEL{0,1}kNLM2nk

f(n)={8n+2if (first logn+1k bits of bin(n))L8n+1else

2nffL

Questa risposta usa la stessa idea.

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.