Disciplina: Linguagens Formais e Autômatos
Professor: Osvaldo
Discente: João Pedro Schons Martins
Um simulador genérico de Autômato Finito Determinístico (AFD) implementado em Python.
O programa recebe os componentes do autômato via entrada padrão e testa se uma ou mais palavras são aceitas pela linguagem definida.
python afd_geral.pyNão requer bibliotecas externas — apenas Python 3.x padrão.
O programa solicita as entradas na seguinte ordem:
Entre com o alfabeto separado por virgula: 0,1
Entre com os estados separado por virgula: q1,q2,q3
Entre com o estado inicial: q2
Entre com os estados de aceitacao separado por virgula: q2
Delta(q1,0) = q2
Delta(q1,1) = q3
...
Entre com a palavra a ser verificada: 1001
Após a simulação, exibe a sequência de estados percorridos e o resultado:
Sequencia de estados: q2, q3, q2, q3, q2
SUCESSO...
Para encerrar o loop de testes, basta pressionar Enter sem digitar nada.
| Função | Descrição |
|---|---|
ler(prompt) |
Lê uma linha e divide por vírgula, retornando lista de strings |
ler_delta(estados, alfabeto) |
Constrói a tabela de transições como dicionário aninhado |
validar_delta(delta, estados, alfabeto) |
Verifica se todos os estados destino existem em Q |
simular(palavra, estadoI, estadoF, delta, alfabeto) |
Executa o AFD sobre a palavra e retorna True/False |
main() |
Ponto de entrada: leitura, validação e loop de testes |
A função delta é representada como dicionário aninhado em vez de matriz:
# Equivalente em C: char mDelta[10][10]
# Em Python:
delta["q2"]["0"] = "q3" # delta(q2, 0) = q3Isso elimina a necessidade de converter estado → índice inteiro e evita estouro de array.
Autômato que aceita palavras sobre {0,1} com número par de símbolos a partir de q2:
| 0 | 1 | |
|---|---|---|
| q1 | q2 | q3 |
| q2 | q3 | q2 |
| q3 | q2 | q2 |
- Estado inicial:
q2 - Estado de aceitação:
q2 - Palavra
1001→ estados: q2, q3, q2, q3, q2 → SUCESSO - Palavra
10→ estados: q2, q3, q2 → SUCESSO - Palavra
1→ estados: q2, q3 → FALHA
- Estado inicial deve pertencer a Q
- Estados de aceitação devem pertencer a Q
- Todos os destinos da delta devem pertencer a Q
- Símbolos da palavra devem pertencer ao alfabeto