Implementação de um AFD

Olá,
tenho que implementar um autômato finito determinístico que leia a especificação de outro autômato, cujo funcionamento será simulado. O programa deve se chamar AFD. A especificação do autômato deverá ser lida de um arquivo texto, cujo nome é recebido como parâmetro na linha de comando. Qualquer erro na sintaxe do arquivo determinará o fim do processo com mensagem de erro correspondente. Estando correta a especificação, o autômato lido deverá ler, do teclado, diversos strings e dizer se estes pertencem à linguagem.
Alguem tem idéia de como posso fazer isso, to com dúvida de como implementar, valeu.

ondes esta a duvida exatamente :?:

Para te falar a verdade eu não tenho ideia nem de como começar, não sei nem o q usar, valeu.

rapaiz tu que encarar a bronca mesmo
de construir isso???

bom o primeiro passo é vc montar a representação gráfica num papel
ou em qq lugar da representação de estados e transições

bom eu li que a entrada será em um txt… :roll: ???

como que seria a forma aceita que será reconhecida no txt

tipo uma expressão regular do automato?

ps.: mas se eu naum me engano AFD é uma representação gráfica :roll:

bom se tu quizer trocar umas ideias fala ai
estou tendo aulas de Compiladores e LFA na facul, =)

qq coisa soh falar

[]'s

Olá,
Eu não tenho que fazer o gráfico, só tenho que informar se o autômato reconhece ou não a linguagem, não parece muito dificil mas para mim é.

hum…

entaum o automato estará implementado

e vc irá apresentar linguagem para o programa
e validar se essa linguagem é aceita pelo automato…?

foi isso que eu entendi mais ou menos nq tu disse… :razz:

mas como seria esse arquivo txt que o programa irá ler?

vlws

[]´s

[quote=“AnjoSupremo”]hum…

entaum o automato estará implementado

e vc irá apresentar linguagem para o programa
e validar se essa linguagem é aceita pelo automato…?

foi isso que eu entendi mais ou menos nq tu disse… :razz:

mas como seria esse arquivo txt que o programa irá ler?

vlws

[]´s[/quote]

é isso ae cara, define ae o formato do txt que seu programa vai receber…é a descrição formal do automato? se vc explicar talvez dê pra alguem idealizar um modelo que voce vai entender e usar.
flw

O arquivo txt seria dessa maneira:
Q={ 1, 2, 3};
S = {a , b , c};
d(1,a)=1, d(1,b)=2, d(2,a)=1, d(2,b)=3, d(3,b)=3,
d(3,a)=1, d(1,c)=3; F=
{2};

Onde Q={q1,q2, … , qN}; onde q1, … , qN são caracteres que representam os estados;
S={a1,a2, … , aN}; onde a1, … , aN são caracteres que representam os símbolos de entrada;
Q={q1,q2, … , qN}; onde q1, … , qN são caracteres que representam os estados;
F={q1, … qN}; onde q1, … , qN são caracteres que representam os estados;
d(qi, a) = qf
separadas por vírgulas e terminadas por ponto-e-vírgula, onde qi e qf são estados e a é um símbolo do alfabeto.

Eu acho q é isso, valeu pela ajuda.

agora melhorou…
jah entendi o que tu precisa reconhecer no txt :wink:

tah com essa definição do arquivo txt vc consegue montar uma estrutura
utilizando essa definição do automato

agora voltando ao primeiro tópico para vc testar esse teu automato após
ele ter sido carregado pelo programa sem ter ocorrido nenhum erro
nesse processo, para vc testar esse automato posteriormente pelo que
eu entendi no seu primeiro post vc vai precisar fornecer dados para
que esse automato seja testado

passos para contruir esse eskema:

1º :arrow: agora com a definição de como será o formato do arquivo
txt de entrada que digamos assim que é o codigo fonte do seu automato
que será lido, analisado e caso esteja dentro do padrão predefinido( disposição, layout de reconhecimento ), vc precisará implementar um código que irá carregar o txt, fazer a sua analise e gerar alguma estrutura de apoio para com essas informações vc gerar uma representação do automato utilizando estrutura de dados que for conveniente

2º :arrow: feito a analise do txt e geração de uma representação inicial( caso vc achar necessário ) utilizar as informações para contruir dinâmicamente um tipo de estrutura que te represente o automato informado

3º :arrow: com a estrutura gerada dinamicamente e carregada na memoria pelo seu programa, ter um área onde possa ser informado dados de teste para o seu automato

:razz:

bom achu q com esses 3 passos tu resolve o problema

comentario, oq vai ser dificil?
:arrow: gerar um codigo de reconhecimento para o arquivo txt, ps.: tu teve aula de compiladores, quanto a reconhecimento e processamento de um código fonte pela faze de análise da compilação, bom a ideia é similar para vc gerar o reconhecimento do txt, pq queira ou não queira vc está definindo uma linguagem que será reconhecida e validade pelo seu programa.
:arrow: ainda utilizando o conceito de compiladores apos essa faze de analise e representação inicial do codigo de entrada, com o resultado dessa analize vc vai ter que representar utilizando algum tipo de tecnica de estrutura de dados, esse seu automato na memoria, sendo essa estrutura capaz de receber uma palavra de entrada e processar a mesma

:!: finalizando esse eskema seria muito similar ao conceito de um interpretador, onde vc fornecerá um codigo fonte( txt ), vai analisar, validar, caso não ocorra erro vai carregar uma estrutura que represente o teu automato na memoria, apos isso esperará entrada de dados de teste( caso vc faça isso posteriormente, ou vc pode fazer uma definição no proprio txt quanto a dados de teste para o seu automato ) e isso irá no mais basico gerar uma saída de um booleano no qual representa se a palavra apresentada ao automato foi ou não validada, se chegar até ao final desse eskema onde vc comprove para uma palavra que vc sabe que para este automato é aceita e a mesma apresentada para este seu programa validar essa mesma palavra e para uma palavra que vc sabe que não é aceita, sendo esse teste feito e a resposta do programa igual ao conhecimento previo do resultado da analise, com isso vc finaliza tendo a certeza do funcionamento correto do seu programa :wink:

:arrow: eu utilisei um conceito um pouco parecido em um trabalho de compiladores que eu fiz esse ano, mas a diferença era que o automato estava implementado diretamente em código, onde eu apenas apresentava os dados e ele me retornava a resposta do problema apresentado :lol:

bom qq coisa to ai, achei legal essa ideia
vou ver se faço um programinha do genero tambem :grin:

link interessante relacionado ao assunto de AFD
http://teia.inf.ufrgs.br/cgi-bin/moore.pl?estado=46&curso=LivroAnimado

[]´s

cara, tem como tu me manda esse que tu digitava os numeros e o programa reconhecia se era uma entrada valida ou nao?
obrigado