Розглянемо мову
(де # 0 ( x ) позначає кількість нулів у x ).
L×2={x⊥y⊥z∣x,y,z∈{0,1},#0(x)=#0(y) and |x|+|y|=z}
#0(x)x
Легко визначитися з за допомогою машини HAL - зауважте, що машині потрібно відслідковувати дві властивості: кількість нулів у x vs y та довжину x , y (vs z ). Він може натиснути a в купу за кожен нуль, який він бачить у x (а потім пізніше з'явиться будь-який нуль, помічений у y ); крім того, він натискає на будь-який біт у x , y (а пізніше з'являється будь-який біт z ). Оскільки всі зсунуті вниз по купі, вони не заважають рахувати. ⊥L×2xyx,yz0
x0
y1
x,y1
z1
0
⊥ служить роздільником, і його можна практично ігнорувати.
Тепер нехай є зворотною мовою. Тобто
L = { z ⊥ y ⊥ x ∣ x , y , z ∈ { 0 , 1 } , # 0 ( x ) = # 0 ( y ) і | х | + | у | = Г }
Покажемо , що ні HAL машина не може вирішити , L .L=LR×2
L={z⊥y⊥x∣x,y,z∈{0,1},#0(x)=#0(y) and |x|+|y|=z}
L
zx,yz|x|+|y|yyxxx
Більш формально, ми будемо використовувати якийсь аргумент "накачування". Тобто ми візьмемо дуже довгий вклад і покажемо, що "стан" машини повинен повторитися під час обробки цього вводу, що дозволить нам "замінити" вхід, як тільки машина повторить свій "стан".
Для формального підтвердження нам потрібно спростити структуру машини HAL, а саме, що вона не містить "петлі" -переходів 1 . З цього припущення ми бачимо, що для кожного вхідного символу, який машина обробляє, вміст купи може збільшуватися / зменшуватися щонайбільше c (для деяких досить великих констант c ).ε1cc
HL4n|x|=|y|=n|z|=2n⊥z,y#0(y)=n/2різнай«и такіщог⊥у⊥х∈L.(nn/2)xz⊥y⊥x∈L
Розглянемо вміст купи відразу після обробки . Він містить, щонайменше, 3 n c символів (де кожен символ є з фіксованого алфавіту Γ ), за нашим припущенням. Однак є ( nz⊥y3ncΓ(nn/2)x′sx1,x2
- n/2x1x2
- n/2xx1x2x1,x2n20.8n2x1,x2(3.5cn)|Γ||Q|3
z⊥y⊥xp1xs2xp1xn/2xs2x2xp1xs2x1x2#0(y)x1x2
1
2 x1n/2n/4log(nk)≈nH(k/n)H()H(1/4)≈0.81(nn/4)>20.8nn
3 Γ|Γ|nnn(n+1|Γ|−1)≈n|Γ||Γ|