Implementação de um Autômato Finito Determinístico

7 respostas
H

Olá a todos, tenho que implementar um autômito finito determinístico onde, ele deverá receber estados (Letras Maísculas, A,B,C…) alfabeto(Letras mínusculas a,b,c)
estado inicial(vai indicar se é por exemplo o A), estado final(por exemplo o C) além disso deverá receber do usuário a sentença que pode ser por exemplo, aaabbcc, ou 01110 e deverá dizer se a sentença é reconheceida (verdadeiro ou falso) pelo usuário!! Pode ser implementado em qualquer linguagem, sou usuário novo em programação e estou apanhando, sei que tenho que usar matriz mas não tenho ideia de como fazer esse software!! Alguém pode me ajudar!! Abraços

Obrigado!!

7 Respostas

L

Supondo que o automato tenha q reconhecer a linguagem a*b (aaaab, ab, aaaaab, …), sendo o estado inicial A e o estado final B, é informado as regras de transição na entrada ou você tem que montar baseado na linguagem de entrada?

H

Olá Lucas, não precisa ser informado as regras de transição tem que montar baseado na linguagem de entrada!! Abraços

L

Como que é a entrada do alfabeto por exemplo abaab ?

E

Você tem de entrar com a máquina de estados, ou ela pode estar já preenchida no seu software?

H

Olá Lucas, o usuário é que informa tudo, ou seja, estados, alfabeto, estado inicial, estado final e a sentença, depois disso o autômato tem que dizer se ele reconhece a sentença ou não. Espero que tenha explicado bem. Abraços

H

Entanglement não, o usuário tem que entrar com tudo, estados, alfabeto, estado inicial, estado final e sentença, o autômato deverá dizer se ele reconhece ou não a sentença!! Abraços

H

Segue em anexo o que eu já tentei fazer, tem umas gambiarras mas esta rodando, kkkkkkkkkkk se alguém poder me ajudar a melhorar, quero fazer com que ele agora, disponibilize ao usuário a opção de digitar

os estados, estado inicial e final, pois a sentença já fiz!! Valeu!1

/*


  • Data :11-06-2012 *
  • NOME :Harilton Ricardo de Sousa Dias *
  • *
    

************************************************/

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#include

using namespace std;

int main()
{

cout<<endl<<"* * * * * * * * * * * * * *  *";
  cout<<endl<<"*                            *";  
  cout<<endl<<"*       AUTOMATO FINITO      *";
  cout<<endl<<"*_______DETERMINISTICO_______*";  

  cout<<endl<<"\n\nHarilton Ricardo de Sousa Dias";    
   
  
  char m[4][4];
  int i,j,k;
  char fita[10000];
  int atual,final, achou =0;     

  atual = 0;
  final = 2 ;
  
  m[0][0]= 'v';
  m[0][1]= 'b';
  m[0][2]= 'a';
  m[0][3]= 'v';
  m[1][0]= 'a';
  m[1][1]= 'b';
  m[1][2]= 'v';
  m[1][3]= 'v';
  m[2][0]= 'v';
  m[2][1]= 'a';
  m[2][2]= 'v';
  m[2][3]= 'b';
  m[3][0]= 'v';
  m[3][1]= 'a';
  m[3][2]= 'v';
  m[3][3]= 'v';
  cout<<"\n\n\n\nEntre com a sentenca : (Apenas c aractere a ou b): " ;
  cin>>fita;
  cout<<endl<<"Sentenca Digitada : "<<fita;
 
  
  i=0;
  while(fita[i] != '\0')
  {
                   achou = 0;
                   for(j=0;j<4;j++)
                   {
                     if( m[atual][j]==fita [i])
                     {
                       atual=j;
                       i++;
                       j=4;
                       achou =1;
                     }
                            
                   }
                   if(achou == 0  )
                   {
                         i='\0';
                   }
            
             
  }
  if(atual==final)
  {
    cout<<endl<<"A sentenca foi reconhecida pelo Automato Finito";
                   
  }
  else
  {
      cout<<endl<<"\nSequencia NAO reconhecida, por favor digite uma opcao valida";
  }
  
  cout<<endl<<endl;
  system("pause");

}

Criado 19 de maio de 2012
Ultima resposta 27 de mai. de 2012
Respostas 7
Participantes 3