Autômato Finito Não Determinístico (AFND)
Um autômato finito não-determinístico (AFN) é um modelo computacional usado para reconhecer linguagens regulares, assim como o autômato finito determinístico (AFD).
Diferentemente do AFD, o AFN introduz a ideia de não-determinismo, permitindo que o autômato tenha escolhas ambíguas durante a execução. Isso significa que, para uma mesma entrada em um dado estado, o AFN pode seguir múltiplos caminhos possíveis, incluindo transições espontâneas (sem consumir símbolos), chamadas de
Formalmente, um AFN é definido por uma 5-tupla
: conjunto finito de estados; : alfabeto de entrada; : função de transição, agora definida como (retorna um conjunto de estados possíveis); : estado inicial; : conjunto de estados finais.
Uma cadeia
Note
Essa flexibilidade torna o AFN mais intuitivo para modelar certos problemas, embora seja equivalente ao AFD em termos de poder expressivo (ambos reconhecem linguagens regulares) e também em termos de desempenho.
Exemplo
Considere a seguinte linguagem: Cadeias que terminam em “ab”.
AFN
stateDiagram-v2
[*] --> q0
q0 --> q0 : a, b
q0 --> q1 : a
q1 --> q2 : b
q2 --> [*]
- Estados:
- Transições:
, , , , .
inicial, . - Compacto e intuitivo: “adivinha” quando começa o “ab”.
AFD
stateDiagram-v2
[*] --> q0
q0 --> q0 : b
q0 --> q1 : a
q1 --> q1 : a
q1 --> q2 : b
q2 --> q1 : a
q2 --> q0 : b
q2 --> [*]
- Estados:
- Transições:
, , , , , .
inicial, .