Considere o idioma
(onde # 0 ( x ) indica o número de zeros em x ).
L×2={x⊥y⊥z∣x,y,z∈{0,1},#0(x)=#0(y) and |x|+|y|=z}
#0(x)x
É fácil decidir usando uma máquina HAL - observe que a máquina precisa acompanhar duas propriedades: o número de zeros em x vs y e o comprimento de x , y (vs z ). Ele pode inserir um na pilha para cada zero que vê em x (e depois aparecer para qualquer zero visto em y ); além disso, pressiona qualquer bit em x , y (e depois aparece para qualquer bit de z ). Como todos os s são empurrados para baixo, eles não interferem na contagem. O ⊥L×2xyx,yz0
x0
y1
x,y1
z1
0
⊥ serve como delimitador e pode ser praticamente ignorado.
Agora, vamos , ser a língua inversa. Isto é,
L = { z ⊥ y ⊥ x | x , y , z ∈ { 0 , 1 } , # 0 ( x ) = # 0 ( y ) e | x | + | y | = Z }
Vamos mostrar que nenhuma máquina HAL pode decidir L .L=LR×2
L={z⊥y⊥x∣x,y,z∈{0,1},#0(x)=#0(y) and |x|+|y|=z}
L
A intuição é o seguinte. Como acima, a máquina deve acompanhar o comprimento de e o número de zeros em x , y . No entanto, neste caso, ele precisa rastreá-los simultaneamente . Isso não pode ser feito através de um heap. Em mais detalhes, depois de ler z , o heap contém informações sobre o comprimento de | x | + | y | . enquanto lê y, a máquina também deve manter na pilha o número de zeros em y . No entanto, essas informações não podem interferir nas informações que o heap já possui sobre o tamanho que esperamos xzx,yz|x|+|y|yyxser estar. Muito intuitivamente, ou as informações sobre o número de zeros estarão "abaixo" das informações sobre o comprimento de , e não poderemos acessá-las durante a leitura de x , ou estarão "acima" dessas informações, tornando o último inacessível ou o duas informações serão "misturadas" e se tornarão sem sentido.xx
Mais formalmente, vamos usar algum tipo de argumento de "bombeamento". Ou seja, pegaremos uma entrada muito longa e mostraremos que o "estado" da máquina deve se repetir durante o processamento dessa entrada, o que nos permitirá "substituir" a entrada quando a máquina repetir seu "estado".
Para a prova formal, exigimos uma simplificação da estrutura da máquina HAL, a saber, que ela não contém um "loop" de transições 1 . Com essa suposição, podemos ver que, para cada símbolo de entrada que a máquina processa, o conteúdo do heap pode aumentar / diminuir em no máximo c (para alguma constante suficientemente grande c ).ε1cc
Prova.
Suponha que decida L e considere uma entrada longa o suficiente (por exemplo, comprimento 4 nHL4n , portanto , | z | = 2 n , ignorando os here a seguir). Para ser concreto, corrija z , y e assuma que # 0 ( y ) = n / 2 . Observe que existem ( n|x|=|y|=n|z|=2n⊥z,y#0(y)=n/2diferentesx's tais quez⊥y⊥x∈L.(nn/2)xz⊥y⊥x∈L
Considere o conteúdo da pilha imediatamente após o processamento . Ele contém no máximo 3 n c símbolos (onde cada símbolo é de um alfabeto fixo Γ ), por nossa suposição. No entanto, existem ( nz⊥y3ncΓdiferentesx'sque devem ser aceites (que é substancialmente maior do que a quantidade de conteúdo possíveis diferentes para a pilha, pois isso aumenta exponencialmente, ao passo que o número diferente de montões de aumentos polinomialmente, ver abaixo). Tome duas entradasx1,x2que devem ser aceitas, para que o seguinte seja válido:(nn/2)x′sx1,x2
- O prefixo de comprimento de x 1 tem um número diferente de zeros que o prefixo de x 2 do mesmo comprimento.n/2x1x2
- No momento em que a máquina lê um prefixo de comprimento da parte x , a pilha fica igual para x 1 en/2xx1 e também, a máquina está no mesmo estado (isso deve ocorrer para x 1 , x 2 , para n grande o suficiente, pois existem mais de 2 0,8 n opções diferentes 2 para x 1 , x 2 e no máximo ( 3,5 c n ) | Γ | | Qx2x1,x2n20.8n2x1,x2opções diferentes para o conteúdo da pilha e o estado 3 ).(3.5cn)|Γ||Q|3
É claro que a máquina deve aceitar a palavra , onde x p 1 é um prefixo de x de comprimento n / 2 e x s 2 é um sufixo de x 2 do mesmo comprimento. Observe que o número de zeros em x p 1 x s 2 difere do número de zeros em x 1 e x 2 (ou seja, de # 0 ( yz⊥y⊥xp1xs2xp1xn/2xs2x2xp1xs2x1x2 ), devido à maneira como escolhemos x 1 e x 2 , chegamos a uma contradição.#0(y)x1x2
Essa suposição prejudica a generalidade? Acho que não, mas isso realmente exige uma prova. Se alguém vê como contornar essa suposição extra, eu adoraria saber. 2 Vamos corrigir x 1 para que seja seu prefixo (de comprimento n / 2 com exatamente n / 4 zeros). Lembre-se de que, usandoa aproximação de Stirling, sabemos que log ( n1
2 x1n/2n/4ondeH()é ofunciton entropia binário. DesdeH(1/4)≈0,81temos ( nlog(nk)≈nH(k/n)H()H(1/4)≈0.81para tamanho suficienten. (nn/4)>20.8nn3Assumindo o alfabetoΓ, existem| y-| nstrings diferentes de comprimenton, então, se essa fosse uma pilha, estaríamos ferrados. No entanto, inserir "01" em um heap equivale a "10" - o heap armazena apenas a versão classificada do conteúdo. O número de diferentessequênciasordenadasde tamanhoné (n+1
3 Γ|Γ|nnn, para uma constante| y-| .(n+1|Γ|−1)≈n|Γ||Γ|