Pertimbangkan bahasa
(di mana # 0 ( x ) menunjukkan jumlah nol dalam x ).
L×2={x⊥y⊥z∣x,y,z∈{0,1},#0(x)=#0(y) and |x|+|y|=z}
#0(x)x
Sangat mudah untuk memutuskan menggunakan mesin HAL - mengamati bahwa kebutuhan mesin untuk melacak dua sifat: jumlah angka nol di x vs y dan panjang x , y (vs z ). Hal ini dapat mendorong ke dalam tumpukan untuk setiap nol itu melihat di x (dan kemudian pop untuk setiap nol terlihat di y ); selain itu ia mendorong bit apa pun di x , y (dan kemudian muncul sedikit pun z ). Karena semua tombol ditekan, mereka tidak mengganggu perhitungan. The ⊥L×2xyx,yz0
x0
y1
x,y1
z1
0
⊥ berfungsi sebagai pembatas, dan praktis bisa diabaikan.
Sekarang, mari , menjadi bahasa terbalik. Yaitu,
L = { z ⊥ y ⊥ x ∣ x , y , z ∈ { 0 , 1 } , # 0 ( x ) = # 0 ( y ) dan | x | + | y | = Z }
Kami akan menunjukkan bahwa tidak ada mesin HAL dapat memutuskan L .L=LR×2
L={z⊥y⊥x∣x,y,z∈{0,1},#0(x)=#0(y) and |x|+|y|=z}
L
Intuisi adalah sebagai berikut. Seperti di atas, mesin harus melacak kedua panjang dan jumlah angka nol di x , y . Namun, dalam hal ini perlu melacaknya secara bersamaan . Ini tidak dapat dilakukan melalui tumpukan. Lebih detail, setelah membaca z , heap berisi informasi tentang panjang | x | + | y | . saat membaca y mesin juga harus menyimpan jumlah nol di dalam y . Namun, informasi ini tidak dapat mengganggu informasi yang sudah ada di tumpukan yang kami harapkan xzx,yz|x|+|y|yyxmenjadi. Sangat intuitif, baik informasi tentang jumlah nol akan "di bawah" informasi tentang panjang , dan kemudian kita tidak dapat mengaksesnya saat membaca x , atau "di atas" informasi itu, membuat yang terakhir tidak dapat diakses, atau dua informasi akan "dicampur" dan menjadi tidak berarti.xx
Secara lebih formal, kita akan menggunakan semacam argumen "memompa". Yaitu, kami akan mengambil input yang sangat panjang, dan menunjukkan bahwa "keadaan" mesin harus mengulang sendiri selama memproses input itu, yang akan memungkinkan kami untuk "mengganti" input begitu mesin mengulangi "keadaan" -nya.
Untuk bukti formal, kami memerlukan penyederhanaan struktur mesin HAL, yaitu, bahwa itu tidak mengandung "loop" dari -transisi 1 . Dengan asumsi ini kita dapat melihat bahwa untuk setiap simbol input yang diproses mesin, konten heap dapat meningkat / berkurang paling banyak c (untuk beberapa konstanta yang cukup besar c ).ε1cc
Bukti.
Asumsikan memutuskan L , dan pertimbangkan input yang cukup panjang (katakanlah, dengan panjang 4 n , dengan demikian | x | = | y | = n , | z | = 2 n , dengan mengabaikan ⊥ s selanjutnya). Untuk menjadi beton, memperbaiki z , y dan menganggap bahwa # 0 ( y ) = n / 2 . Perhatikan bahwa ada ( nHL4n|x|=|y|=n|z|=2n⊥z,y#0(y)=n/2yang berbedax's sehinggaz⊥y⊥x∈L.(nn/2)xz⊥y⊥x∈L
Pertimbangkan konten heap segera setelah memproses . Ini berisi paling 3 n c simbol (di mana setiap simbol adalah dari alfabet tetap Γ ), oleh asumsi kita. Namun, ada ( nz⊥y3ncΓyang berbedax'syang seharusnya diterima (yang secara substansial lebih besar dari jumlah yang mungkin isi yang berbeda untuk heap, dengan meningkatnya ini secara eksponensial, sedangkan jumlah yang berbeda dari tumpukan meningkat polynomially, lihat di bawah). Ambil dua inputx1,x2yang harus diterima, sehingga berikut ini berlaku:(nn/2)x′sx1,x2
- Awalan panjang dari x 1 memiliki nomor yang berbeda dari nol dari awalan dari x 2 yang sama panjang.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|Γ||Γ|