Ir para o conteúdo

CCT-UFCA/Ciência da Computação/Autômatos e Linguagens Formais/Autômatos Finitos Não-Determinísticos

De Wikiversidade

Quando falamos de autômatos finitos, significa que, quando uma máquina está em um dado estado e lê o próximo símbolo de entrada, sabemos qual será o próximo estado, ou seja, está determinado. Chamamos isso de computação determinística. Em uma máquina não-determinística, várias escolhas podem existir para o próximo estado em qualquer ponto. O não-determinismo pode ser visto como uma espécie de computação paralela na qual múltiplos e independentes "processos" ou "threads" podem estar rodando concorrentemente. Quando o AFN se divide para seguir as diversas escolhas, isso corresponde a um processo "bifurcar" em vários filhos, cada um procedendo separadamente. Se pelo menos um desses processos aceita, então a computação inteira aceita.

Como o não-determinismo é uma generalização de determinismo, todo AFD é automaticamente um autômato finito não-determinístico (AFN). Uma das principais diferenças dos AFNs para os AFDs são a presença de transições vazias ε e cada estado pode ter zero, uma ou várias transições saindo para cada símbolo do alfabeto.

Definição Formal

[editar | editar código]

Um autômato finito não-determinístico é uma 5-upla (Q, Σ, δ, q0, F), onde:

  • Q é um conjunto finito de estados do AF;
  • Σ é o alfabeto;
  • δ: Q x Σε→ P(Q) é a função de transição;
  • q0Q é o estado inicial; e
  • FQ é o conjunto de estados de aceitação (ou finais).

Perceba que a definição formal dos AFNs é similar ao dos AFDs, porém a função de transição muda. Nos AFNs, a função de transição toma um estado e um símbolo de entrada ou a cadeia vazia e produz o conjunto de próximos estados possíveis. P(Q) seria a coleção de todos os subconjuntos de Q, para qualquer conjunto Q.