This post seeks to introduce the reader to what theory of computation is all about and how computers can be better understood on a fundamental level.
Are there problems that a computing machine cannot solve?, no matter:
- The superiority of the algorithm
- The programming language used
- The hardware we use
If the problems exist, how do we identify them.
These questions are answered in theory of computation.
Branches of Theory of Computation
- Complexity theory - A theory of problem classification, the easy problems and the hard problems.
- Computability theory - A theory on how to classify problems into intractable and tractable problems.
Automata theory - A theory that studies abstract computing machines, the definitions and attributes of different computation models.
- Finite Automata - Are useful models used in different kinds of hardware and software.
- Software for regulating the behavior of circuits
- Lexical analyzer for compilers
- Text processors
- Context Free Grammars - Models for defining programming languages.
- Turing Machines - An abstract model of a computer e.g a PC.
Introduction to Theory of Computation Solutions
- Pattern recognition in text i.e string searching algorithms.
- Identifying tractable and intractable problems
- Compiler design
- Spell checkers
- Evaluating arithmetic problems
- Implementation of genetic programming
- Implementation of neural networks
- Implementation of robotics problems
Some systems can be viewed as being in one of a finite number of states. The state is used to remember the important part of the history. Finite automata allows the implementation of systems with finite computing resources.
A typical example is an off/on switch. The device must remember it's state, off or on and allows a user to change the state depending on the current switch state.
It is a method for defining languages. This model is said to be finite because the possible states and number of alphabet letters are finite. The changes in state is determined by input.
Finite Automata has:
- Finite set of state, initial state and final states
- An alphabet of possible input symbols
- Finite set of transitions that takes a state and symbol of input and gives the state to go to next.
Deterministic Finite State Automaton
A deterministic finite automaton is an abstract device where one can determine the state to which the machine will move for each input string. It is a device that:
- Has one initial state
- At least one accept state
- Always in one of a finite number of state
- Is attached to an input stream
- Capable of switching state which is uniquely determined by the current state and symbol read from the input.