Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jonathan Bryan

Construir AFD em Python

Recommended Posts

Galera Tô precisando de uma ajuda, Preciso construir esse AFD abaixo em python.

 

Esse programa tem que ler um arquivo de entrada, que em cada linha

há uma palvra composta de 0 ' s ou 1 's.

 

Gravar um arquivo de saída onde em cada linha é registrada a seqüência de estados pelos quais a máquina passou e por fim um caracter S ou N, indicando se a palavra foi reconhecida pelo AFD ou não.

 

Fiz o código abaixo com a ajuda de uns amigos mas ta dando uns erros.

Será que alguém pode me ajudar por favor .

Imagem Postada

# coding=latin-1
estados = ['A','B','C','D']
alfabeto = set(['0', '1'])
transicoes = {'A' : {'1' : 'A', '0' : 'B'},'B' : {'0' : 'B', '1' : 'C'}, 'C' : {'0' : 'C', '1' : 'D'},
 'D' : {'0' : 'B', '1' : 'D'}  }
estadoInicial = 'A'
estadoFinal = ['A','D']

def usaAfd(palavra):
      estadoAtual = estadoInicial # Estabelece o estado inicial 
para efetuar a primeira verificação de troca de estado
      pF = estadoAtual # Inicia a palavra final com o estado inicial
      for b in palavra:
           estadoAtual = afd[estadoAtual, int(B)] # Busca o estado resultante da troca de estado no dicionario da afd
           pF = pF + estadoAtual # Concatena as strings para formar a palavra final

      # Verifica se a palavra foi aceita ou nao pelo AFD
      if estadoAtual == estadoFinal:
            pF = pF + 'S'
      else:
            pF = pF + 'N'
      return pF

# Abrindo arquivo de saida
arqSaida = open("saida.txt","w")
# Abrindo arquivo de entrada    
arqEntrada = open("entrada.txt","r")
ln = arqEntrada.readline()
while len(ln) > 0:
    print "Palavra de Entrada:",ln
    palavraFinal = usaAfd(ln.strip()) # Remove espaços antes e d
epois da palavra e envia para o afd
    print "Palavra final:", palavraFinal
    print "------------------------------------------"
    arqSaida.write(palavraFinal+"\n")   # Grava a palavra final no 
arquivo de saida e muda de linha
    ln = arqEntrada.readline()

print "Arquivo gravado com sucesso"

# Fecha os arquivos abertos    
arqEntrada.close()
arqSaida.close()

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.