พิจารณาภาษา
(โดยที่# 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 เข้าไปใน heap สำหรับทุก ๆ ศูนย์ที่เห็นในx (แล้วต่อมาก็ pop สำหรับ zero ที่เห็นใน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 ) และ | x | + | y | = Z }
เราจะแสดงให้เห็นว่าไม่มีเครื่อง HAL สามารถตัดสินใจLL=LR×2
L={z⊥y⊥x∣x,y,z∈{0,1},#0(x)=#0(y) and |x|+|y|=z}
L
สัญชาตญาณมีดังต่อไปนี้ ข้างต้นเครื่องต้องติดตามทั้งความยาวของและจำนวนของศูนย์ในX , Y อย่างไรก็ตามในกรณีนี้มันต้องติดตามพวกเขาไปพร้อม ๆ กัน สิ่งนี้ไม่สามารถทำได้ผ่านกอง ในรายละเอียดเพิ่มเติมหลังจากอ่านzฮีปจะมีข้อมูลเกี่ยวกับความยาวของ| x | + | y | . ในขณะที่อ่านYเครื่องยังต้องเก็บไว้ในกองจำนวนของศูนย์ในปี อย่างไรก็ตามข้อมูลนี้ไม่สามารถแทรกแซงข้อมูลที่กองมีอยู่แล้วตามความยาวที่เราคาดหวังxzx,yz|x|+|y|yyxเป็น. อย่างสังหรณ์ใจทั้งข้อมูลเกี่ยวกับจำนวนของศูนย์จะเป็น "ด้านล่าง" ข้อมูลเกี่ยวกับความยาวของและจากนั้นเราไม่สามารถเข้าถึงได้ในขณะที่อ่านxหรือเป็น "เหนือ" ข้อมูลที่แสดงผลไม่สามารถเข้าถึงได้หลังหรือ ข้อมูลสองรายการจะ "สับสน" และไม่มีความหมายxx
อย่างเป็นทางการมากขึ้นเราจะใช้อาร์กิวเมนต์ "ปั๊ม" บางชนิด นั่นคือเราจะใช้อินพุตที่ยาวมากและแสดงให้เห็นว่า "สถานะ" ของเครื่องจะต้องทำซ้ำตัวเองในระหว่างการประมวลผลอินพุตนั้นซึ่งจะช่วยให้เรา "แทนที่" อินพุตเมื่อเครื่องซ้ำ "สถานะ" ของมัน
ε1cc
HL4n|x|=|y|=n|z|=2n⊥z,y#0(y)=n/2(nn/2)xz⊥y⊥x∈L
z⊥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) 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 |Γ|.