Michael recently graduated from the University of Chicago with a master's degree in computer science, and holds a a bachelor's degree in mathematics and computer science from the University of Illinois at Urbana-Champaign. He has never been too far away from a computer since his first experiences playing Zaxxon on an Apple IIc. He joined Wolfram Research in 2003, and is currently a senior software engineer in the Software Technology department, where he carefully hand-crafts Mathematica technology with only the highest-quality ones and zeros. He has developed features for Mathematica 5.1 and 5.2, as well as future versions, and the WolframTones project. He currently has 20 open bugs filed against him, but is confident he will be acquitted.
Project: Optimizing Turing Machine Computations
My project will study Turing machine computations, and specifically what techniques can be applied to predict, optimize, or compress them. I will initially focus on one-dimensional machines of limited color in order to develop a solid base on which to build more complex operations.
Diagram of the q-2 k-5 universal machine from p. 707 of A New Kind of Science
There are many potential optimizations for Turing computations:
- State Pruning
- States that are never reached by any computation path can be removed. Similarly, states that only serve to move the head position but never change the tape contents could be eliminated and the "calling" state re-written as a multi-position move.
- Periodic Behavior
- Does a machine exhibit periodic behavior? If so, is such behavior bounded in space? Can periodic behavior be detected and proved? For example, if a Turing machine has visited all possible states with all possible input colors, and never walked out of some bounded tape region, it will never leave that tape region. This is a useful fact to know, because in a Turing machine emulator one can then assume that the tape will never need to grow wider. If a machine exhibits predictable periodic behavior, it becomes unnecessary to continue computing it after the periodic behavior is determined. The output could even be compressed into a periodic notation, much like pointer compression for rational numbers.
- Maximum Excursions
- Does the sequence of maximum head excursions ever form an arithmetic sequence? What about other sequences of head positions? Even if the sequence of maximum excursions is a well-behaved sequence, non-trivial things could still happen in between.
- Alternate Forms
- When is it possible to write the output or total state of a Turing machine as a parameter of time? What about symbolic input? Could Turing computations be built up as a nested structure of symbolic operations? When is it possible to find an analytical form for the function computed by a Turing machine? When can this be accomplished algorithmically?
To support these efforts, I plan to develop functionality to help visualize Turing machine state machines, as well as practical optimizations that could be applied to Mathematica's new TuringMachine function to make computation more efficient.
Favorite Four-Color, Radius-1/2 Rule
Rule chosen: 414256860