October 29th, 2009

Non-computability

results for a 4-state busy beaver problem
My interests was re-sparked this morning by a post from Good Coders Code, Great Reuse on the Busy Beaver Problem which asks the question: How long can a program run on a Turing Machine with tape of length n and eventually stop.”  Seems harmless enough and the answers for very small n are perfectly manageable (1, 4, 6, 13) but very quickly they balloon to obscene numbers, (at least 4098 and at least  4.6 · 101439).
The image on the left is a visualization of the result for n=4 and one cannot help but be reminded of Stephen Wolfram’s drawings from A New Kind of Science.

As it turns out, the function defined here,

S(1)=0

S(2)=4

etc…

is non-computable, which is to say that we can prove that we’ll never be able to know that we can compute it in finite time.  This is a Gödelian kind of statement  (“we know that we will never know”), and has conter-parts in Heisenberg’s uncertainty principle and Lorentz’s equations.  I was first made aware of non-computability in the context of a non-computable number, of which Chaitin’s Constant is an example.  These proofs all work in essentially the same way by assuming that something is know and then proceeding to a paradox (normally, in mathematical terms, I’d say contradiction, but because these are statements about statements, paradox seems more apropos).

This is interesting to me specifically when discussing engineering tolerance or experimental error.  As someone who constructs (tolerance) and  measures (error), I must be aware not only of the static discrepancies in fabrication but the dynamic physicality of weather, camber and time.  The material world does not adhere to rigid abstractions and Heisenberg proved that infinitesimal refinement is not a solution to this dilemma.

This work is licensed under GPL - 2009 | Powered by Wordpress using the theme aav1