Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''afd''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Todas as áreas do Fórum

  • 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

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Encontrado 2 registros

  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..
×

Informação importante

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