Jump to content

Search the Community

Showing results for tags 'afd'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento e Banco de Dados
    • HTML e CSS
    • Java
    • Javascript
    • .NET
    • PHP
    • Python
    • Ruby
    • Mobile
    • Ambientes de Desenvolvimento
    • Arquitetura e Métodos Ágeis
    • Banco de Dados
    • DevOps
    • Desenvolvimento de Games
    • E-Commerce e Pagamentos Online
    • SEO e Otimizações
    • WordPress
    • Algoritmos & Outras Tecnologias
  • Design e Produto
    • Fotografia
    • Photoshop
    • Design de interfaces e UX
    • Edição/Produção de Vídeos
    • Marketing Online
    • Desenho, Ilustração e 3D
  • Entretenimento e uso pessoal
    • Geral
    • Segurança & Malwares
    • Gadgets e wearable
    • Softwares e Apps
    • Entretenimento

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Found 2 results

  1. Bom dia amigos, Venho novamente requisitar seu auxílio, a fim de solucionar um problema proposto por meu professor, a saber: "Para cada linguagem a seguir apresente um AFD correspondente sobre Σ = {0, 1}. a) {α ∈ Σ* : α possui no mínimo três 0's e no mínimo dois 1's}. b) {α ∈ Σ* : α possui quantidade par de 0's e cada 0 é seguido por pelo menos um 1}." Onde Σ é o conjunto e α é a palavra. OBS: ∈ = pertence a O problema é que estou quebrando a cabeça com a questão A) desde ontem, e parece tão simples porém não consigo solucionar, pelo fato de pedir 2 condições simultaneamente. Por exemplo, a questão A) poderia ser quebrada nos 2 AFDs abaixo: Porém eu não posso simplesmente concatenar os 2 autômatos, porque se eu concatenasse o primeiro com o segundo, por exemplo, não poderia inserir a palavra válida 00011, pelo fato de ser obrigado a inserir pelo menos dois 1's para apenas a partir daí poder contar os 0's, ou mesmo palavras que apenas passassem por tais estados muito a frente, mas que seriam válidas para o enunciado da questão, como 00000100111. Da mesma forma, se eu concatenasse o segundo com o primeiro, palavras como 11000 não seriam aceitas, por ter que inserir pelo menos três 0's para contar os 1's. Não consigo pensar em uma forma de fazer um único autômato sem que haja Não Determinismo e/ou transições em vazio. Já a questão B) eu consegui fazer, ficando da seguinte forma: Mas a questão A) ainda está me dando um nó na cabeça hahaha Agradeço de antemão a ajuda!
  2. KrilMun

    Algoritmo AFD

    Boa noite pessoal, É meu primeiro post no fórum, havia descoberto ele há alguns dias procurando sobre o mesmo assunto do título, e acho que vocês poderiam me ajudar. O seguinte código representa um AFD simples para o reconhecimento de constantes reais com exponenciação. #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> int testePalavra(int contador, char palavra[]); int testePosicao(int e, int estadoFinal[]); int main() { char palavra[] = "+32E-52E"; int estadoFinal[] = {3, 5, 9}; int estadoIncial = 0; int i; //+ //- //. //E //Digito int tabelaTransicoes[10][5] = {{1, 1, 2, -1, 3}, //q0 {-1, -1, 2, -1, 3}, //q1 {-1, -1, -1, -1, 5}, //q2 {-1, -1, 4, 6, 3}, //q3 {-1, -1, -1, -1, 5}, //q4 {-1, -1, -1, 6, 5}, //q5 { 8, 8, -1, -1, 9}, //q6 {-1, -1, -1, -1, 9}, //q8 {-1, -1, -1, -1, 9}}; //q9 int e = estadoIncial; printf("Estado Inicial q%d\n", e); int contador = 0; for (i = 0; i < strlen(palavra); i++) { char c = palavra[i]; int coluna; if (c == '+') { printf("Caractere lido: %c\n", c); coluna = 0; } else if (c == '-') { printf("Caractere lido: %c\n", c); coluna = 1; } else if (c == '.') { printf("Caractere lido: %c\n", c); coluna = 2; } else if (c == 'E') { printf("Caractere lido: %c\n", c); coluna = 3; } else if (isdigit(c)) { printf("Caractere lido: %c\n", c); coluna = 4; } else { printf("Caractere lido: %c\n", c); coluna = -1; printf(" Transicao invalida: Caractere nao aceito!\n"); break; } e = tabelaTransicoes[e][coluna]; if (e != -1) { contador++; printf(" Transicao para q%d", e); if (testePosicao(e, estadoFinal)) printf(" | Estado Final"); else printf(" | Estado Nao-Final"); printf("\n"); } else{ printf(" Transicao invalida: Erro de leitura!\n"); break; } } if ((testePalavra(contador, palavra)) && (testePosicao(e, estadoFinal))) { printf("\nA palavra %s foi aceita pelo AFD!", &palavra); } else{ printf("\nA palavra %s foi recusada pelo AFD!", &palavra); } return 0; } int testePalavra(int contador, char palavra[]){ //Teste para verificar se a if (contador == strlen(palavra)) return 1; else return 0; } int testePosicao(int e, int estadoFinal[]){ //Teste para verificar se a posição em que a palavra terminou é estado final int i; int status = 0; for(i = 0; i < sizeof(estadoFinal); i++){ if (e == estadoFinal[i]){ status = 1; break; } } return status; } int tabelaTransicoes[10][5] = {{1, 1, 2, -1, 3}, //q0 {-1, -1, 2, -1, 3}, //q1 {-1, -1, -1, -1, 5}, //q2 {-1, -1, 4, 6, 3}, //q3 {-1, -1, -1, -1, 5}, //q4 {-1, -1, -1, 6, 5}, //q5 { 8, 8, -1, -1, 9}, //q6 { 0, 0, 0, 0, 0}, //q7 {-1, -1, -1, -1, 9}, //q8 {-1, -1, -1, -1, 9}}; //q9 //EDIT 2: Problema corrigido apenas por inserir um novo array na matriz, "q7", com todos os valores 0. //O porquê eu não sei hahahaha ainda estou em dúvida! Se alguém souber responder, agradeço! #Estou fazendo um trabalho da faculdade, em que foi pedido um AFD para reconhecimento de constantes reais com exponenciação, e acabei de concluí-lo, porém estou #com um erro totalmente sem sentido, que ainda não consegui compreender o que é. #A palavra que estou usando como teste demonstra o erro, segundo a tabela de transições, quando eu chego no estado q9 eu não posso mais sair dele (e isso está explícito #na matriz que eu declarei), porém de alguma forma ela está voltando para q5, o que possibilita inserir um E após os dígitos. #Preciso da resposta urgente, quem puder me ajudar agradeço! Problema acima corrigido, agora preciso saber o porquê de essa alteração ter resolvido..
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.