Having a simple construction and easy to grasp definition, deterministic finite automata (DFA) are one of the simplest models of computation. When interconnected, discrete finite state automata have the ability to exhibit interesting dynamical behavior. These characteristics make DFA an ideal unit with which to build a system suitable for studying the connection between dynamical behavior and computational ability.
A deterministic finite automaton can be viewed as a simple machine consisting of three components: sensor, memory and instruction book.
The automaton sensor is the device by which data is input. For example the automaton
could have a thermometer reading temperature, a magnet reading a hard drive,
an antenna reading radio waves, or anything else that would import information.
We restrict the accuracy of the imported information by allowing the automaton
to recognize only a finite number of different input values or symbols.
For example, if a discrete finite state automaton was taking values from a thermometer
as input, we could restrict its recognition of temperatures between
and
in steps of
.
The automaton memory has the limited capacity to store only a single symbol. The type of symbols that can be stored need not be the same as those being returned by the automaton sensor. We refer to this stored symbol as the automaton's state. We allow the automaton to exist in only a finite variety of different states.
The automaton instruction book is the set of rules by which the automaton changes its state. The rulebook dictates what state the automaton should be in based upon the automaton's current state and input symbol. The automaton consults this rulebook everytime an input symbol is read.
An automaton begins operation in a predefined state known as its initial state (or start state). The automaton then enters into this loop:
read input symbol
![]() ![]() |
Because operation continues until the input source has been exhausted, it is often practical to place a finite limit on the amount of information that may be made available to an automaton for input.
That an automaton may operate on a finite set of input data and end in a discernible final state motivates us to view the automaton as a mapping between the set of input symbols and its final state. This view is further enriched by naming some of the automaton's possible states accepting states. This allows us to say that an automaton either accepts or rejects its input data set based upon its final state.
We use J. C. Martin's [9] notation as our basis for
![]() |
![]() |
![]() |
![]() |
![]() |
The transition function acts as an automaton behavioral rulebook. Based upon the automaton's current state and input symbol, the transition function dictates what state the automaton should next be in. Thus, a useful question to ask when studying the behavior of any finite automaton (FA) is: How many unique transition functions can I define for a particular FA?
Above, we defined the transition function for an FA as
.
is the set of states the FA can be in.
is the set of
symbols the FA can accept as input. By dissecting this definition, we shall
count how many different ways there are to define the function
.
The domain of the function says that our input is in
.
Since
and
are finite, the number of possible inputs
is
.
To count the number of unique ways
can be defined, we need to
count the number of different ways we can specify what output any particular
input could have. The range of
tells us that any input can have
possible outputs. In other words, for some
and
:
Thus, we have a choice of
different transitions that
can occur for each of the
inputs, or,
possible transition functions. We record this result as
This counting problem can be reformulated as: For a given alphabet, how many words of a particular length are there? In the previous case, our word length was
To get a better understanding of the size of , we shall calculate
the number of possible transition functions for a couple of example automata.
The important point to remember is that the function
, having exponential
growth, creates a strong bounding condition on the complexity of the automata
one can consider for practical, computational exploration.
For this automaton, and
. Thus, the number
of unique transition functions we could define for this FA would be
.
What follows is a brief description of Turing machines and universality. The goal of this section is to describe what is meant by the phrase ``universal computation''. We shall avoid an in-depth discussion of Turing machine construction and operation as well as most of the interesting theories that surround and grow out of them. For a proper treatment of this most fascinating material, J. C. Martin's book [9] is recommended.
Like a finite automaton, a Turing machine is a simple computing device consisting of a finite set of input states, finite set of input symbols, an initial state, and a transition function. We choose at least one of the input states to be special, calling it the halt state, and define our transition function such that there are no more possible transitions once the machine reaches the halt state. Unlike a finite automaton, a Turing machine's input data is said to be given on a finite, but unbounded, strip of magnetic tape. A tape head connected to the Turing machine is placed at the beginning of this input data and has the ability to move forwards and backwards along the tape. In addition, Turing machines have a finite set of tape symbols which they can both read and write to the tape via the tape head.
Dr. Alan Turing wrote a thesis which argued that Turing machines are as powerful as the most powerful computing device possible. In other words, no matter how fast or complex our computing devices become, they will have no more capabilities (power) than a Turing machine.
A special form of Turing machine is the universal Turing machine. Universal Turing machines have the ability to simulate any other Turing machine when given a description and set of input data for that other Turing machine.
One view of the relationship between Turing machines and universal Turing machines is that a Turing machine is like a single computer program and a universal Turing machine is like an operating system. In this view, a Turing machine is a defined algorithm acting on input data. A word processor, taking text input and outputting a formatted document, is a good example of a Turing machine. On the other hand, a universal Turing machine has the ability to ``run'' any other Turing machine along with its associated input. This is just as our home computers have the ability to simulate any other computing device that has been encoded as software. A prime example is running software that simulates a pocket calculator or word processor.
When we say a computational device is universal, we typically mean that the device has the capability to simulate any other computational device. A common method for proving a device is universal is to show that it is capable of simulating another device already known to be universal. For example, if you were to show a system capable of simulating the components necessary and sufficient to build a computer (gates, timers, etc.) then you would have shown that system to be a universal computer.
One very important result obtained by Dr. Turing was proof that there exist
completely deterministic processes for which it is impossible to decide whether
or not they will complete. In terms of Turing machines, his proof implies that
given a Turing machine and some input data, it is impossible to decide whether
or not that Turing machine will halt. This result should not seem so surprising
given the existence of such problems like the Three-Body Problem wherein you
know all the details of the mathematical algorithms used to compute the system's
evolution, yet are unable to give a general solution for how the system will
evolve. One could say that there is a certain sensitivity to the system's initial
configuration. This notion will be further explored in section .
In the course of the following Halting Problem proof and discussion there may be unfamiliar notation. We take the time now to describe what is meant:
We construct a universal Turing machine, , which takes as input
a string
, and subsequently runs
with input
.
We define
such that if
outputs ``
''
then
should transition to an infinite loop and if
outputs ``
'' then
transitions to the
halt state.
What will happen if we ran with input string
? This
will run
on
. There are two well defined
possibilities for what
will do: either it will enter into an infinite
loop or it will halt. We look at these outcomes:
loops on
)
output
``
''
halts on
halts on
)
output
loops on
. A paradoxical cycle.
Since both cases end in a contradiction, our initial assumption that
is decidable must be incorrect. The Halting Problem is undecidable.
We construct a Turing machine, , which determines whether or not
an input even number greater than 2 can be written as the sum of two primes.
This is a simple computable process which can be described as follows:
We construct another Turing machine, , which runs
.
first gives
the number 4.
then
enters the following loop:
Run on
. If
produces ``
''
then we know the Goldbach conjecture failed for some even number; the Goldbach
conjecture must be false. If
produces ``
''
then we know that
runs forever; the Goldbach conjecture must
be true.
Since all machines used must exist, we must be able to create the above composite
machine to solve the Goldbach conjecture.