Template:Short description Template:Use dmy dates Template:Redirect-synonym Template:CS1 config

File:DFA example multiplies of 3.svg
An example of a deterministic finite automaton that accepts only binary numbers that are multiples of 3. The state S0 is both the start state and an accept state. For example, the string "1001" leads to the state sequence S0, S1, S2, S1, S0, and is hence accepted.

In the theory of computation, a branch of theoretical computer science, a deterministic finite automaton (DFA)—also known as deterministic finite acceptor (DFA), deterministic finite-state machine (DFSM), or deterministic finite-state automaton (DFSA)—is a finite-state machine that accepts or rejects a given string of symbols, by running through a state sequence uniquely determined by the string.Template:Sfn Deterministic refers to the uniqueness of the computation run. In search of the simplest models to capture finite-state machines, Warren McCulloch and Walter Pitts were among the first researchers to introduce a concept similar to finite automata in 1943.Template:SfnTemplate:Sfn

The figure illustrates a deterministic finite automaton using a state diagram. In this example automaton, there are three states: S0, S1, and S2 (denoted graphically by circles). The automaton takes a finite sequence of 0s and 1s as input. For each state, there is a transition arrow leading out to a next state for both 0 and 1. Upon reading a symbol, a DFA jumps deterministically from one state to another by following the transition arrow. For example, if the automaton is currently in state S0 and the current input symbol is 1, then it deterministically jumps to state S1. A DFA has a start state (denoted graphically by an arrow coming in from nowhere) where computations begin, and a set of accept states (denoted graphically by a double circle) which help define when a computation is successful.

A DFA is defined as an abstract mathematical concept, but is often implemented in hardware and software for solving various specific problems such as lexical analysis and pattern matching. For example, a DFA can model software that decides whether or not online user input such as email addresses are syntactically valid.<ref>Template:Citation</ref>

DFAs have been generalized to nondeterministic finite automata (NFA) which may have several arrows of the same label starting from a state. Using the powerset construction method, every NFA can be translated to a DFA that recognizes the same language. DFAs, and NFAs as well, recognize exactly the set of regular languages.Template:Sfn

Formal definitionEdit

A deterministic finite automaton Template:Mvar is a 5-tuple, Template:Math, consisting of

Let Template:Math be a string over the alphabet Template:Math. The automaton Template:Mvar accepts the string Template:Mvar if a sequence of states, Template:Math, exists in Template:Mvar with the following conditions:

  1. Template:Math
  2. Template:Math, for Template:Math
  3. <math>r_n \in F</math>.

In words, the first condition says that the machine starts in the start state Template:Math. The second condition says that given each character of string Template:Mvar, the machine will transition from state to state according to the transition function Template:Mvar. The last condition says that the machine accepts Template:Mvar if the last input of Template:Mvar causes the machine to halt in one of the accepting states. Otherwise, it is said that the automaton rejects the string. The set of strings that Template:Mvar accepts is the language recognized by Template:Mvar and this language is denoted by Template:Math.

A deterministic finite automaton without accept states and without a starting state is known as a transition system or semiautomaton.

For more comprehensive introduction of the formal definition see automata theory.

ExampleEdit

The following example is of a DFA Template:Mvar, with a binary alphabet, which requires that the input contains an even number of 0s.

Template:Math where

check|unknown=|preview=Page using Template:Center with unknown parameter "_VALUE_"|ignoreblank=y| 1 | style }} check|unknown=|preview=Page using Template:Center with unknown parameter "_VALUE_"|ignoreblank=y| 1 | style }}
S1 S2 S1
S2 S1 S2

The state Template:Math represents that there has been an even number of 0s in the input so far, while Template:Math signifies an odd number. A 1 in the input does not change the state of the automaton. When the input ends, the state will show whether the input contained an even number of 0s or not. If the input did contain an even number of 0s, Template:Mvar will finish in state Template:Math, an accepting state, so the input string will be accepted.

The language recognized by Template:Mvar is the regular language given by the regular expression (1*) (0 (1*) 0 (1*))*, where * is the Kleene star, e.g., 1* denotes any number (possibly zero) of consecutive ones.

VariationsEdit

Complete and incompleteEdit

According to the above definition, deterministic finite automata are always complete: they define from each state a transition for each input symbol.

While this is the most common definition, some authors use the term deterministic finite automaton for a slightly different notion: an automaton that defines at most one transition for each state and each input symbol; the transition function is allowed to be partial.<ref name="Mogensen">Template:Cite book</ref> When no transition is defined, such an automaton halts.

Local automataEdit

A local automaton is a DFA, not necessarily complete, for which all edges with the same label lead to a single vertex. Local automata accept the class of local languages, those for which membership of a word in the language is determined by a "sliding window" of length two on the word.Template:SfnTemplate:Sfn

A Myhill graph over an alphabet A is a directed graph with vertex set A and subsets of vertices labelled "start" and "finish". The language accepted by a Myhill graph is the set of directed paths from a start vertex to a finish vertex: the graph thus acts as an automaton.Template:Sfn The class of languages accepted by Myhill graphs is the class of local languages.Template:Sfn

RandomnessEdit

When the start state and accept states are ignored, a DFA of Template:Mvar states and an alphabet of size Template:Mvar can be seen as a digraph of Template:Mvar vertices in which all vertices have Template:Mvar out-arcs labeled Template:Math (a Template:Mvar-out digraph). It is known that when Template:Math is a fixed integer, with high probability, the largest strongly connected component (SCC) in such a Template:Mvar-out digraph chosen uniformly at random is of linear size and it can be reached by all vertices.<ref name=Grusho>Template:Cite journal</ref> It has also been proven that if Template:Mvar is allowed to increase as Template:Mvar increases, then the whole digraph has a phase transition for strong connectivity similar to Erdős–Rényi model for connectivity.<ref name=Cai>Template:Cite journal</ref>

In a random DFA, the maximum number of vertices reachable from one vertex is very close to the number of vertices in the largest SCC with high probability.<ref name=Grusho /><ref>Template:Cite conference</ref> This is also true for the largest induced sub-digraph of minimum in-degree one, which can be seen as a directed version of [[Degeneracy (graph theory)#k-Cores|Template:Math-core]].<ref name=Cai />

Closure propertiesEdit

File:Intersection1.png
The upper left automaton recognizes the language of all binary strings containing at least one occurrence of "00". The lower right automaton recognizes all binary strings with an even number of "1". The lower left automaton is obtained as product of the former two, it recognizes the intersection of both languages.

If DFAs recognize the languages that are obtained by applying an operation on the DFA recognizable languages then DFAs are said to be closed under the operation. The DFAs are closed under the following operations.

Template:Columns-list

For each operation, an optimal construction with respect to the number of states has been determined in state complexity research. Since DFAs are equivalent to nondeterministic finite automata (NFA), these closures may also be proved using closure properties of NFA.

As a transition monoidEdit

A run of a given DFA can be seen as a sequence of compositions of a very general formulation of the transition function with itself. Here we construct that function.

For a given input symbol <math>a \in \Sigma</math>, one may construct a transition function <math>\delta_a : Q \rightarrow Q</math> by defining <math>\delta_a(q) = \delta(q,a)</math> for all <math>q \in Q</math>. (This trick is called currying.) From this perspective, <math>\delta_a</math> "acts" on a state in Q to yield another state. One may then consider the result of function composition repeatedly applied to the various functions <math>\delta_a</math>, <math>\delta_b</math>, and so on. Given a pair of letters <math>a, b \in \Sigma</math>, one may define a new function <math>\widehat\delta_{ab}=\delta_a \circ \delta_b</math>, where <math>\circ</math> denotes function composition.

Clearly, this process may be recursively continued, giving the following recursive definition of <math>\widehat\delta : Q \times \Sigma^{\star} \rightarrow Q</math>:

<math>\widehat\delta ( q, \epsilon ) = q</math>, where <math>\epsilon</math> is the empty string and
<math>\widehat\delta ( q, wa ) = \delta_a(\widehat\delta ( q, w ))</math>, where <math> w \in \Sigma ^*, a \in \Sigma </math> and <math>q \in Q</math>.

<math>\widehat\delta</math> is defined for all words <math>w\in\Sigma^*</math>. A run of the DFA is a sequence of compositions of <math>\widehat\delta</math> with itself.

Repeated function composition forms a monoid. For the transition functions, this monoid is known as the transition monoid, or sometimes the transformation semigroup. The construction can also be reversed: given a <math>\widehat\delta</math>, one can reconstruct a <math>\delta</math>, and so the two descriptions are equivalent.

Advantages and disadvantagesEdit

DFAs are one of the most practical models of computation, since there is a trivial linear time, constant-space, online algorithm to simulate a DFA on a stream of input. Also, there are efficient algorithms to find a DFA recognizing:

  • the complement of the language recognized by a given DFA.
  • the union/intersection of the languages recognized by two given DFAs.

Because DFAs can be reduced to a canonical form (minimal DFAs), there are also efficient algorithms to determine:

  • whether a DFA accepts any strings (Emptiness Problem)
  • whether a DFA accepts all strings (Universality Problem)
  • whether two DFAs recognize the same language (Equality Problem)
  • whether the language recognized by a DFA is included in the language recognized by a second DFA (Inclusion Problem)
  • the DFA with a minimum number of states for a particular regular language (Minimization Problem)

DFAs are equivalent in computing power to nondeterministic finite automata (NFAs). This is because, firstly any DFA is also an NFA, so an NFA can do what a DFA can do. Also, given an NFA, using the powerset construction one can build a DFA that recognizes the same language as the NFA, although the DFA could have exponentially larger number of states than the NFA.Template:SfnTemplate:Sfn However, even though NFAs are computationally equivalent to DFAs, the above-mentioned problems are not necessarily solved efficiently also for NFAs. The non-universality problem for NFAs is PSPACE complete since there are small NFAs with shortest rejecting word in exponential size. A DFA is universal if and only if all states are final states, but this does not hold for NFAs. The Equality, Inclusion and Minimization Problems are also PSPACE complete since they require forming the complement of an NFA which results in an exponential blow up of size.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

On the other hand, finite-state automata are of strictly limited power in the languages they can recognize; many simple languages, including any problem that requires more than constant space to solve, cannot be recognized by a DFA. The classic example of a simply described language that no DFA can recognize is bracket or Dyck language, i.e., the language that consists of properly paired brackets such as word "(()())". Intuitively, no DFA can recognize the Dyck language because DFAs are not capable of counting: a DFA-like automaton needs to have a state to represent any possible number of "currently open" parentheses, meaning it would need an unbounded number of states. Another simpler example is the language consisting of strings of the form anbn for some finite but arbitrary number of aTemplate:'s, followed by an equal number of bTemplate:'s.Template:Sfn

DFA identification from labeled wordsEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}} Given a set of positive words <math>S^+ \subset \Sigma^*</math> and a set of negative words <math>S^- \subset \Sigma^*</math> one can construct a DFA that accepts all words from <math>S^+</math> and rejects all words from <math>S^-</math>: this problem is called DFA identification (synthesis, learning). While some DFA can be constructed in linear time, the problem of identifying a DFA with the minimal number of states is NP-complete.<ref name="Complexity of Automaton Identificat">Template:Cite journal</ref> The first algorithm for minimal DFA identification has been proposed by Trakhtenbrot and Barzdin<ref>Template:Cite book</ref> and is called the TB-algorithm. However, the TB-algorithm assumes that all words from <math>\Sigma</math> up to a given length are contained in either <math>S^+ \cup S^-</math>.

Later, K. Lang proposed an extension of the TB-algorithm that does not use any assumptions about <math>S^+</math> and <math>S^-</math>, the Traxbar algorithm.<ref>Template:Cite book</ref> However, Traxbar does not guarantee the minimality of the constructed DFA. In his work<ref name="Complexity of Automaton Identificat"/> E.M. Gold also proposed a heuristic algorithm for minimal DFA identification. Gold's algorithm assumes that <math>S^+</math> and <math>S^-</math> contain a characteristic set of the regular language; otherwise, the constructed DFA will be inconsistent either with <math>S^+</math> or <math>S^-</math>. Other notable DFA identification algorithms include the RPNI algorithm,<ref>Template:Cite book</ref> the Blue-Fringe evidence-driven state-merging algorithm,<ref>Template:Cite book</ref> and Windowed-EDSM.<ref>Template:Cite book</ref> Another research direction is the application of evolutionary algorithms: the smart state labeling evolutionary algorithm<ref>Template:Cite journal</ref> allowed to solve a modified DFA identification problem in which the training data (sets <math>S^+</math> and <math>S^-</math>) is noisy in the sense that some words are attributed to wrong classes.

Yet another step forward is due to application of SAT solvers by Marjin J. H. Heule and S. Verwer: the minimal DFA identification problem is reduced to deciding the satisfiability of a Boolean formula.<ref name=HW1>Template:Cite conference</ref> The main idea is to build an augmented prefix-tree acceptor (a trie containing all input words with corresponding labels) based on the input sets and reduce the problem of finding a DFA with <math>C</math> states to coloring the tree vertices with <math>C</math> states in such a way that when vertices with one color are merged to one state, the generated automaton is deterministic and complies with <math>S^+</math> and <math>S^-</math>. Though this approach allows finding the minimal DFA, it suffers from exponential blow-up of execution time when the size of input data increases. Therefore, Heule and Verwer's initial algorithm has later been augmented with making several steps of the EDSM algorithm prior to SAT solver execution: the DFASAT algorithm.<ref>Template:Cite journal</ref> This allows reducing the search space of the problem, but leads to loss of the minimality guarantee. Another way of reducing the search space has been proposed by Ulyantsev et al.<ref>Template:Cite book</ref> by means of new symmetry breaking predicates based on the breadth-first search algorithm: the sought DFA's states are constrained to be numbered according to the BFS algorithm launched from the initial state. This approach reduces the search space by <math>C!</math> by eliminating isomorphic automata.

Equivalent modelsEdit

Read-only right-moving Turing machinesEdit

Read-only right-moving Turing machines are a particular type of Turing machine that only moves right; these are almost exactly equivalent to DFAs.<ref name=RORMTM>Template:Cite book</ref> The definition based on a singly infinite tape is a 7-tuple

<math>M = \langle Q, \Gamma, b, \Sigma, \delta, q_0, F \rangle,</math>

where

<math>Q</math> is a finite set of states;
<math>\Gamma</math> is a finite set of the tape alphabet/symbols;
<math>b \in \Gamma</math> is the blank symbol (the only symbol allowed to occur on the tape infinitely often at any step during the computation);
<math>\Sigma</math>, a subset of <math>\Gamma</math> not including b, is the set of input symbols;
<math>\delta: Q \times \Gamma \to Q \times \Gamma \times \{R\}</math> is a function called the transition function, R is a right movement (a right shift);
<math>q_0 \in Q</math> is the initial state;
<math>F \subseteq Q</math> is the set of final or accepting states.

The machine always accepts a regular language. There must exist at least one element of the set Template:Mvar (a HALT state) for the language to be nonempty.

Example of a 3-state, 2-symbol read-only Turing machineEdit

Current state A Current state B Current state C
tape symbol Write symbol Move tape Next state Write symbol Move tape Next state Write symbol Move tape Next state
0 1 R B 1 R A 1 R B
1 1 R C 1 R B 1 N HALT
<math>Q = \{ A, B, C, \text{HALT} \};</math>
<math>\Gamma = \{ 0, 1 \};</math>
<math>b = 0</math>, "blank";
<math>\Sigma = \varnothing</math>, empty set;
<math>\delta = </math> see state-table above;
<math>q_0 = A</math>, initial state;
<math>F = </math> the one element set of final states: <math>\{\text{HALT}\}</math>.

See alsoEdit

Template:Columns-list

NotesEdit

Template:Reflist

ReferencesEdit

Further readingEdit

  • Template:Sipser 19971.1: "Finite Automata" pp. 31–47. 4.1: "Decidable Languages - Decidable Problems Concerning Regular Languages" pp. 152–155. 4.4: DFA can accept only regular language

Template:Formal languages and grammars