Limits of Algorithmic Computation Wen-Guey Tzeng Computer Science Department National Chiao Tung University
The halting problem • Problem : given an encoding string <M, w>, determine whether M(w) halts or not. – Solvable? – We want an “yes/no” answer for each input <M, w>. • <M, w> = 10110101011 00 11011010111011 … 000 11011101110111011 • Methods: – Run M(w) in TM U – Analyze M – … 2017 Spring 2
The halting problem: really hard? • Can we just run M(w) for a long time? – If it hasn’t halted yet, we just claim that M(w) does not halt. • The busy beaver problem will show that it is indeed M(w) can run a very very very long time and halt. 2017 Spring 8
Theorem: The halting problem cannot be solved by any algorithm (Turing machine). Proof. Step 1: Assume that it can be solved by some TM H. – The initial state q 0 . – q Y and q N are both final states. – q 0 <M,w> |-* x 1 q Y x 2 (halt) if M(w) halts – q 0 <M,w> |-* y 1 q N y 2 (halt) if M(w) does not halt 2017 Spring 3
H <M, w> 2017 Spring 4
Step 2: We construct H’, from H, as follows: – q 0 <M,w> |-* x 1 q Y x 2 |-* if M(w) halts – q 0 <M,w> |-* y 1 q N y 2 (halt) if M(w) does not halt H ’ <M, w> 2017 Spring 5
Step 3: We construct , from H’, as follows: – Its input is the encoding <M> of a TM – It copies the input <M> and runs H’ on <M><M> • q 0 <M> |-* q 0 <M><M> |-* if M(<M>) halts • q 0 <M> |-* q 0 <M><M> |-* y 1 q N y if M(<M>) does not halt H ’ <M> <M><M> 2017 Spring 6
Step 4: Now, feed < > into : – q 0 < > |-* q 0 < > < > |-* if (< >) halts – q 0 < > |-* q 0 < > < > |-* y 1 q N y 2 (halt) if (< >) does not halt H ’ � > < 𝐼 < >< > Conclusion: • It is a contradiction !!! • Thus, H does not exist. 2017 Spring 7
Recommend
More recommend