Automata Theory, including abstract machines, grammars, parsing, grammatical inference, transducers, and finite-state techniques

**Automata** (plural of **automaton**) are abstract models of machines. These machines take an input such as a string of characters and give some output, often an "accept" or "decline" value.

These machines are closely related to formal-languages. Many languages can be categorized based on the type of automata that can accept them. For instance,

*regular*languages can be recognized by some**deterministic finite automata**.*context-free*languages can be recognized by some**pushdown automata**.*recursively enumerable*languages can be recognized by some**Turing machine**.

There are many different types of automata, each with slightly different definitions. A few examples are

- Deterministic Finite Automata (DFA)
- Nondeterministic Finite Automata (NFA)
- Pushdown Automata
- Infinite Automata
- Alternating Automata

For instance, a **deterministic finite automata** $A$ has five parts:

- a finite set of states $Q$
- a finite set of input symbols called the alphabet $\Sigma$
- a transition function $\delta: (Q\times \Sigma)\rightarrow Q$
- an initial state $q_0 \in Q$
- a set of accept states $F\subseteq Q$

The automaton $A$ takes in a string $\sigma$ of characters of $\Sigma$. The automaton starts at state $q_0$ and then for each letter of $\sigma$ it moves to another state according to the transition function $\delta$. Once the automaton has used every letter of $\sigma$, if its final state is in $F$, then we say that $A$ accepts $\sigma$.

For questions also about

- formal languages, use formal-languages
- formal grammars, use formal-grammar
- context-free grammars, use context-free-grammar
- regular languages, use regular-language
- regular expressions, use regular-expressions
- Turing machines, use turing-machines
- the pumping lemmas, use pumping-lemma
- computability, use computability