University of Virginia, Department of Computer Science CS200: Computer Science, Spring 2002

Notes: 15 April 2002

Schedule
Models of Computation
What is a model?

What do we need to model computation?

Finite State Machine
FSM ::= <Alphabet, States, InitialState, HaltingStates, TransitionRules>
Alphabet ::= { Symbol* }
A set of symbols for the input.
States ::= { StateName* }
InitialState ::= StateName
Must be one of the states in States.
HaltingStates ::= { StateName* }
Must all be states in States.
TransitionRules ::= { TransitionRule* }
TransitionRule ::= < StateName, Symbol, StateName>
StateName X SymbolStateName

Turing Machine
TM ::= <Alphabet, Tape, TFSM>

Alphabet ::= { Symbol*}
A set of symbols for the tape.

Tape ::= < LeftSide, OneSquare, RightSide >
OneSquare ::= Symbol | #
LeftSide ::= [ Squares* ]
Everything to left of LeftSide is #. RightSide ::= [ Squares* ]
Everything to right of RightSide is #. Squares ::= OneSquare, Squares
Squares ::=

TFSM ::= <States, InitialState, HaltingStates, TransitionRules>
Like a FSM, except the transition rules write to the tape and move the tape head.

States ::= { StateName* }
InitialState ::= StateName
Must be one of the states in States.
HaltingStates ::= { StateName* }
Must all be states in States.
TransitionRules ::= { TransitionRule* }
TransitionRule ::= < StateName, OneSquare, StateName, OneSquare, Direction>
StateName X OneSquareStateName X OneSquare X Direction

Universal Turing Machine

A Turing Machine that can simulate any other Turing Machine on an input.

TMU (P, I) = the output of running TM-P on input I