언어
(여기서 # 0 ( x ) 는 x 의 0 수를 나타냄 ).
엘× 2= { x ⊥ y⊥ z∣ x , y, z∈ { 0 , 1 } , #0( x ) = #0( y) and |x|+|y|=z}
#0(x)x
HAL 기계를 사용하여 를 결정하는 것은 쉽습니다 . 기계는 x 대 y 의 제로 수 와 x , y 의 길이 (vs z ) 의 두 가지 특성을 추적해야합니다 . x 에서 볼 때마다 0으로 힙에 a 를 넣을 수 있습니다 (그리고 나중에 y 에서 볼 때 0으로 팝 ). 또한 x , y의 비트를 푸시 합니다 (나중에 z 비트는 팝 ). 모든 s가 힙 아래로 밀리므로 카운트를 방해하지 않습니다 . ⊥L×2xyx,yz0
x0
y1
x,y1
z1
0
⊥ 구분자로 사용되며 실제로 무시할 수 있습니다.
이제 하자 . 즉,
L = { z ⊥ y ⊥ x ∣ x , y , z ∈ { 0 , 1 } , # 0 ( x ) = # 0 ( y ) 및 | x | + | y | = z }
우리는 HAL 머신이 L 을 결정할 수 없음을 보여줄 것이다 .L=LR×2
L={z⊥y⊥x∣x,y,z∈{0,1},#0(x)=#0(y) and |x|+|y|=z}
L
직관은 다음과 같습니다. 위와 같이, 기계는 의 길이 와 x , y 의 0 수를 모두 추적해야합니다 . 그러나이 경우 동시에 추적해야합니다 . 힙을 통해 수행 할 수 없습니다. 자세한 내용은 z 를 읽은 후 힙에 | x | + | y | . y 를 읽는 동안 기계는 힙에 0의 숫자를 y로 유지해야합니다 . 그러나이 정보는 힙 이미 정보에 방해가 우리가 기대 길이에있다 할 수 있는 X를zx,yz|x|+|y|yyx되려고. 매우 직관적으로, 0의 수에 대한 정보 중 하나는의 길이에 대한 정보 "아래"입니다 , 그리고 읽는 동안 우리는 그것을 액세스 할 수 있는 X를 하거나 그 정보를 "위"입니다, 후자의 액세스를 렌더링, 또는 두 정보는 "혼합"되어 의미가 없어집니다.xx
보다 공식적으로, 우리는 일종의 "펌핑"인수를 사용할 것입니다. 즉, 우리는 매우 긴 입력을 받아 입력을 처리하는 동안 머신의 "상태"가 스스로 반복되어야한다는 것을 보여 주므로, 머신이 "상태"를 반복하면 입력을 "대체"할 수 있습니다.
공식적인 증거를 위해 HAL 기계의 구조를 단순화해야합니다. 즉, 전환 1 "루프"를 포함하지 않습니다 . 이 가정을 통해 기계가 처리하는 모든 입력 심볼에 대해 힙의 내용이 최대 c 만큼 증가 / 감소 할 수 있음을 알 수 있습니다 (충분히 큰 상수 c ).ε1cc
증명. H 가 L을 결정 하고 충분히 긴 입력 (예를 들어, 길이 4 n , 따라서 | x | = | y | = n , | z | = 2 n )을 고려
한다고 가정하자 ( 이하 ⊥ s 무시 ). 구체적으로 z , y를 수정 하고 # 0 ( y ) = n / 2 라고 가정하십시오 . ( n 이 있음을 관찰HL4n|x|=|y|=n|z|=2n⊥z,y#0(y)=n/2다른(X)의되도록Z⊥Y⊥X∈L.(nn/2)xz⊥y⊥x∈L
처리 한 직후 힙의 내용을 고려하십시오 . 여기에는 최대 3 n c 기호 (여기서 각 기호는 고정 알파벳 Γ )가 포함됩니다. 그러나 ( nz⊥y3ncΓ서로 다른x's(허용되는 힙의 가능한 다른 내용의 양보다 기하 급수적으로 증가하는 반면, 힙의 수는 다 항적으로 증가하지만 힙의 수가 다를수록 증가합니다). 수용해야 할두 개의 입력x1,x2를취하여다음을 유지하십시오.(nn/2)x′sx1,x2
- x 1 의 길이 의 접두사 는 동일한 길이 의 x 2 의 접두사와 다른 수의 0을 갖습니다 .n/2x1x2
- 기계가 x 부분 의 길이 의 접두사를 읽을 때까지 힙은 x 1 과 x 2 모두 동일하게 보이고 기계는 동일한 상태에 있습니다 (이는 일부 x 1 에서 발생해야합니다 . X 2 , 충분히 큰 대 N ,이 이상만큼 2 개 0.8 N 가지 옵션 2 에 대한 X 1 , X 2 및 최대 ( 3.5 C의 N ) | Γ | | Qn/2xx1x2x1,x2n20.8n2x1,x2힙 내용 및 상태에 대한 다른 옵션 3 ).(3.5cn)|Γ||Q|3
기계는 단어 를 수용해야합니다 . 여기서 x p 1 은 길이 n / 2 의 x 접두사 이고 x s 2 는 같은 길이 의 x 2 접미사입니다 . 참고에 0의 수 (X)의 P 1 (X) 의 2 에서 0의 수와 다르다 X 1 및 X 2 로부터 ( # 0 ( Yz⊥y⊥xp1xs2xp1xn/2xs2x2xp1xs2x1x2#0(y)x1x2
1
2 x1n/2n/4log(nk)≈nH(k/n) where H() is the Binary entropy funciton. Since H(1/4)≈0.81 we have (nn/4)>20.8n for large enough n.
3 Assuming alphabet Γ, there are |Γ|n different strings of length n, so if this was a stack we were screwed. However, pushing "01" into a heap is equivalent to pushing "10" - the heap stores only the sorted version of the content. The number of different sorted strings of size n is (n+1|Γ|−1)≈n|Γ|, for a constant |Γ|.