Um autômato finito determinístico é definido como uma 5-upla ordenada
na qual:
- é um Alfabeto de símbolos de entrada;
- é um conjunto finito de estados possíveis;
- é uma função de transição tal que , ou seja, é uma função que, dado um estado e um símbolo do alfabeto de entrada, produz um novo estado;
- é um elemento de () denominado estado inicial;
- é um subconjunto de () denominado conjunto de estados finais.
A computação de um autômato finito para uma Palavra de entrada consiste na sucessiva aplicação da função de transição a cada Símbolo de até que todos os símbolos sejam processados ou enquanto a função de transição for definida para o estado atual e símbolo processado. O processamento de uma palavra por um autômato finito tem dois resultados possíveis:
- A palavra é aceita, e portanto faz parte da linguagem reconhecida por (), se e somente se, após processar o último símbolo de , o autômato assume um estado final.
- A palavra é rejeitada, e portanto não faz parte da linguagem reconhecida por (), se em algum momento do processamento de a função de transição for indefinida para o estado atual e símbolo corrente ou se, após processar o último símbolo da fita, o autômato assume um estado não-final.
O seguinte autômato finito é capaz de reconhecer a linguagem
\begin{tikzpicture} [node distance = 3cm, on grid, auto] \node (q0) [state, initial, initial text = {}, initial where=above] {$q_0$}; \node (q1) [state, below left = of q0] {$q_1$}; \node (q2) [state, below right = of q0] {$q_2$}; \node (qf) [state, accepting, below right = of q1] {$q_f$}; \path [-stealth] (q0) edge node[above left] {a} (q1) (q0) edge node {b} (q2) (q1) edge[bend left=10] node {b} (q2) (q2) edge[bend left=10] node {a} (q1) (q1) edge[] node[below left] {a} (qf) (q2) edge[] node {b} (qf) (qf) edge[loop below] node {a,b} (qf) \end{tikzpicture}