The Automaton
is a data structure for storing and manipulating
finite-state automata.
The data structure underlying the automaton is the Incidence graph; the automaton has all the properties that the incidence graph has. In addition, it has the following properties:
Task / Property | Complexity |
---|---|
Provide a list of transitions from a given state with a given symbol. | expected |
Provide a list (and number) of start-states / end-states. | |
Find out whether there is a transition between two states with a given symbol. | expected |
Find out whether the automaton is deterministic. | |
Find out whether a given state is a start-state / end-state. |
In addition, the automaton
A finite-state automaton is a tuple , where and are finite sets, called the states and the symbols, respectively, and are finite sets, called the start states and the final states, respectively, and is a relation, called the transition relation. The transition relation is extended to by , and if and only if there exists such that and . Every transition relation can be represented as a -edge-labeled directed graph without multiple transitions with the same symbol between two states, and vice versa.
A finite-state automaton is called deterministic if and only if it has at most one start-state, and the transition relation is a partial function. The language recognized by a finite-state automaton is defined by
Sometimes finite-state automata are defined as having exactly one start-state. This is problematic, because one can not then represent the minimal automaton for the empty language, and the construction of the union of two automata becomes cumbersome. In contrast, when using a set of start-states, one can