3.1 Begin Turing Machines
A Turing Machine has a finite state controller and a tape that is infinite in both directions. The tape is initially blank except for the input. The controller starts at the beginning of the input and reads one tape symbol at a time. A move consists of:
- read the current tape symbol
- change the state of the controller
- write a new symbol over the one we read
- move left or right one symbol on the tape
A Turing Machine accepts input if it ever moves into a final state. (Don't need to go over all input characters.)
a Turing Machine is , where:
- is the set of states
- is the alphabet of input symbols
- is the tape alphabet
- is the transition function :if you are in state q and a is the current take symbol, then switch to state r and change the symbol to b and move right.
- is the start state
- is the blank symbol in the tape (which is blank on the tape)
- is the set of final states
: if see 0, overwrite it with X and move R, go into . If see Y, go into .
: if wee Y or 0, moving R until we find 1 (overwrite with Y and move L, go into . If we see anything other than that, we fail.
: Move L over 0s and Ys. When we get to X move R to
: move R over Ys, if we get to a B then accept.
Configuration (write all current symbols on the stack and put the state symbol before the position of current head)
We say that a L accepted by a TM is recursively enumerable (know result only when halts), halts in a input is recursive(yes/no decider).
We can think of a TM with k synchonized tracks by using ordered tuples (symbol of first track, symbol of second track, etc.). Usually the first track contains the input and the others initially blank.
We could also have multiple independent tapes. To achieve that, we have to use one taple and one head to simulate all those independent tapes.
Also, any deterministic TM could simulate non-deterministic TMs.
We can use TM to simulate multi-stack PDA, and we can use 2-stack PDA to simulate TM.