Skip to content

JotapeSch/AFD-GERAL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

AFD GERAL

Simulador de AFD — Autômato Finito Determinístico

Disciplina: Linguagens Formais e Autômatos
Professor: Osvaldo
Discente: João Pedro Schons Martins


O que é

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.


Como executar

python afd_geral.py

Não requer bibliotecas externas — apenas Python 3.x padrão.


Fluxo de uso

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.


Estrutura do código

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

Estrutura de dados principal

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) = q3

Isso elimina a necessidade de converter estado → índice inteiro e evita estouro de array.


Exemplo completo

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

Validações implementadas

  • 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

About

Simulador genérico de Autômato Finito Determinístico (AFD) implementado em Python. Recebe alfabeto, estados, função delta e testa palavras via linha de comando.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages