Do teorema da hierarquia espacial, sabe-se que, se é construtível em espaço, DSPACE ( ) não é igual a DSPACE ( .2 f ( n )
Aqui, por DSPACE ( quero dizer a classe de todos os problemas que podem ser resolvidos no espaço por uma máquina de Turing com algum alfabeto fixo. Isso permite considerar o teorema da hierarquia espacial com tanta precisão.
O argumento padrão fornece a constante multiplicativa : precisamos do espaço para construir um cálculo de alguma máquina de Turing por uma universal. Também precisamos de para resolver um problema com a parada.
Pergunta: Is DSPACE ( ) igual DSPACE ( )?
cc.complexity-theory
complexity-classes
Alexey Milovanov
fonte
fonte
Respostas:
Pode-se provar que DSPACE DSPACE se cresce pelo menos linearmente usando uma variante simples do argumento de preenchimento padrão. Para um idioma , deixe .(f(32n))≠ (f(n))fLL′={x0| x| /2|x∈L}(f(n)) f L L′={x0|x|/2∣x∈L}
Afirmação. DSPACE se e somente se DSPACE se .L∈ ( f ( n ) ) L ' ∈ ( f ( 2(f(n)) L′∈ (f(23n)) f(n)≥32n
(Minha primeira resposta teve várias declarações incorretas, obrigado a Emil por descobrir isso.)
Primeiro, mostrarei como usar a reivindicação para provar a hierarquia. Como cresce pelo menos linearmente, temos DSPACE DSPACE . Pegue um idioma DSPACE DSPACE . Usando a reivindicação, DSPACE DSPACE , onde a última igualdade é pela suposição indireta. Mas então DSPACE DSPACE , onde a última igualdade é novamente pela suposição indireta, dando uma contradição.f ( 2 f ( n ) ) ⊂ ( F ( 2 N ) ) L ∈ ( F ( 2 N ) ) ∖ ( f ( n ) ) L ' ∈ ( f ( 4(2f(n))⊂ (f(2n)) L∈ (f(2n))∖ (f(n)) L′∈ (f(43n))= (f(n))L∈(f(3(f(n)) L∈ (f(32n))= (f(n))(f(n))
Prova da reivindicação. Se DSPACE , para provar DSPACE , só precisamos escrever 0 no final da entrada e simular a máquina que aceitou . Como , isso não aumentará o espaço que usamos. (De fato, saber quantos Z 's devem ser escritos não fica claro se é pequeno e não podemos aumentar o tamanho do alfabeto - em vez disso, podemos usar outra fita e escrever sobre tudo o que viria após o final de .)L′∈ ( f ( 2(f(23n)) L∈ (f(n))| x| /2xL′f(n)≥3(f(n)) |x|/2 x L′ f(n)≥32n f x
A outra direção é simples assim, substituindo os zeros por * 's, se pudermos escrever *' s. (Veja os problemas com isso no meu comentário à pergunta.) Se não temos permissão para escrever estrelas, então modificamos ligeiramente a definição de como . Agora, em vez de escrever estrelas, mantemos a entrada originalL′ L′={x10|x|/2∣x∈L} x10|x|/2 f x 10 | x | / 2 fe trabalhar com isso. Mas sempre que atingimos um 1, seguimos para a direita até atingirmos outro 1 para verificar se foi o final da palavra 1 ou não. Se encontramos outro 1, voltamos ao nosso 1. Se não o encontramos, ainda voltamos, mas saberemos que deve ser tratado como uma estrela - se quisermos escrever sobre ele, também escrevemos um 10 depois dele para ter um novo marcador de fim de palavra atual. (De fato, também há uma pequena captura nessa parte se for pequena - como podemos verificar se a entrada tem o formato ? Sem destruir a entrada, só posso resolver isso usando várias cabeças para pequenas .)f x10|x|/2 f
fonte