IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Minimisation des automates finis deterministes


Sujet :

Langages de programmation

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Italie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Points : 18
    Points
    18
    Par défaut Minimisation des automates finis deterministes
    Bonjour,
    voilà mon problème: j'ai un exercice que je n'arrive pas à faire, peut-être pourrez-vous m'aider...
    Voici l'énoncé: construire l'automate fini déterministe minimal qui reconnait le langage suivant sur l'alphabet {a,b}
    L={(ab)^m a^n|m,n>=0}
    c'est à dire le langage associé à l'expression réguliere: (ab)*a*
    j'ai d'abord construit l'automate fini non deterministe suivant:

    et ensuite en applicant l'algo par sous-ensembles, qu'on nous as enseigné en cours, j'arrive à l'automate déterministe suivant:

    Les flèches blanches symbolisent, les entrées et sorties et les états S,A,B,C correspondent à:
    S={0,1,4,5,7}
    A={2,5,6,7}
    B={5,6,7}
    C={1,3,4,5,7}
    (avec 0,1,2,3,4,5,6,7 les états du précédent NFA)

    Donc l'automate déterministe obtenu ne contient que des états finaux, donc impossible d'appliquer l'algo de minimisation...
    Et je ne sais pas si c'est un automate minimal ou pas... intuitivement, je dirais que oui, mais je ne vois pas non plus comment le démontrer...
    donc si vous avez des suggestions, elles seront les bien venues!!
    merci d'avance pour votre aide (espérée!! )

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 34
    Points : 33
    Points
    33
    Par défaut
    Dans ta première représentation de l'automate fini non déterministe il y a plein de flèches qui ne sont associés ni à 'a' ni à 'b'.
    Je n'ai jamais vu de représentation comme cela.
    Par exemple, à partir de ta représentation, quand l'automate passe de l'état '4' à l'état '5', il est impossible de savoir si c'est 'a' ou 'b' qu'il à lu.

    Parcontre, dans ta deuxième représentation, on peut deviner si c'est 'a' ou 'b' qui est associé aux flèches d'entrée ou de sortie.

    Sinon, sachant que ton automate doit reconnaitre l'expression régulière (ab)*a*, cela implique qu'il doit (entre autre) reconnaitre le mot vide.
    Curieusement, ton 2ème automate reconnait le mot vide, mais pas le 1er, alors que le 2ème est sensé être issue du 1er

  3. #3
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Citation Envoyé par questionsinfo Voir le message
    Les flèches blanches symbolisent, les entrées et sorties et les états S,A,B,C correspondent à:
    S={0,1,4,5,7}
    A={2,5,6,7}
    B={5,6,7}
    C={1,3,4,5,7}
    (avec 0,1,2,3,4,5,6,7 les états du précédent NFA)
    Hum, il y a quelque chose que je ne comprends pas. Dans le premier cas, tu ne peux sortir que par 7, en etant passe au moins une fois par 1 2 3 4 5 et 6. Or dans ton second automate, tu dis que S correspond a 0 1 4 5 7, et est terminal. Donc sauf erreur, ca veut dire que tu peux sortir (mettons que par 7), sans passer par 2 3 et 6, ce qui montrerait donc que ce ne sont pas les memes automates.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par réciproxy Voir le message
    Dans ta première représentation de l'automate fini non déterministe il y a plein de flèches qui ne sont associés ni à 'a' ni à 'b'.
    Je n'ai jamais vu de représentation comme cela.

    Les Epsilon-transitions... tu peux ainsi passer de 0 à 4 et de 4 à 7 sans avoir lu quoique ce soit


    Citation Envoyé par questionsinfo Voir le message
    Donc l'automate déterministe obtenu ne contient que des états finaux, donc impossible d'appliquer l'algo de minimisation...

    Faudrait penser à gérer un automate complet... comme cela tu verrais apparaître un état puits gérant tes erreurs et n'étant pas final (cf les rouges ci-dessous)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Etats = {0;1;2;3}
    Initials = {0}
    Finals = {0;1;2}
    Transitions = {(0,a,1);(1,b,0);(1,a,2);(2,a,2);(0,b,3);(2,b,3);(3,a,3);(3,b,3)}
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 34
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    Les Epsilon-transitions... tu peux ainsi passer de 0 à 4 et de 4 à 7 sans avoir lu quoique ce soit
    Est-ce que entre 0 et 1, c'est aussi une Epsilon-transition ?

  6. #6
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par réciproxy Voir le message
    Est-ce que entre 0 et 1, c'est aussi une Epsilon-transition ?
    a priori oui, toutes celles non étiquetées
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 34
    Points : 33
    Points
    33
    Par défaut
    Alors là... Je pense qu'un simple exemple suffira que je puisse comprendre ;

    Quand on est à l'état '0', et que c'est la lettre 'a' est est lu ;
    est-ce que l'automate va aller à l'état '1' ou à l'état '4' ?

    Quand on est à l'état '0', et que c'est la lettre 'b' est est lu ;
    est-ce que l'automate va aller à l'état '1' ou à l'état '4' ?

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Italie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par réciproxy Voir le message
    Alors là... Je pense qu'un simple exemple suffira que je puisse comprendre ;

    Quand on est à l'état '0', et que c'est la lettre 'a' est est lu ;
    est-ce que l'automate va aller à l'état '1' ou à l'état '4' ?

    Quand on est à l'état '0', et que c'est la lettre 'b' est est lu ;
    est-ce que l'automate va aller à l'état '1' ou à l'état '4' ?
    Désolée de ne pas m'être manifestée plus tôt, comme j'étais assez pressée, j'ai laissé de côté mais entre temps j'ai trouvé la réponse (qui correspond à ce que disait gorgonite, j'avais effectivement zappé le fameux état "puit").

    En tout cas pour répondre à ta question reciproxy, le premier automate est non déterministe (c'est à dire qu'il peut faire ce qu'il veut, tant qu'il consomme l'input donné (incluant les e-transitions noté e(epsilon normalement mais je ne connais pas le raccourci-clavier (s'il existe!)), et qui donc se distingue de l'automate déterministe pour lequel à chaque état, pour chaque input, il n'y a qu'une transition possible.
    Donc: quand on est à l'état 0 et que a est lu: il y plusieurs chemins:
    0-(consomme e)->1-(consomme a)->2
    ou
    0-(consomme e)->4-(consomme e)->5-(consomme a)->6-(consomme e)->5
    ou
    0-(consomme e)->4-(consomme e)->5-(consomme a)->6-(consomme e)->7

    par contre quand on est à l'état 0 et que b est au début de la chaine de caractère, le mot n'est pas reconnu (il n'y a aucun chemin qui mène de 0 à 3 sans passer par la transition 1-->2 qui consomme a)
    ou plus simplement aucun mot du langage reconnu par l'automate ne peut commencer par b.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 34
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par questionsinfo Voir le message
    ... le premier automate est non déterministe (c'est à dire qu'il peut faire ce qu'il veut, tant qu'il consomme l'input donné ...
    J'ai compris que quand cet automate est à l'état '0', et que c'est la lettre 'a' est est lu, qu'il va choisir de manière aléatoire d'aller soit à l'état '1' ou soit à l'état '4'.
    C'est bien cela ?

    PS : pas de problème pour les temps de réponses

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour un automate supposé déterministe, c'est peut-être ça.

    Mais un vrai automate non-déterministe se trouvera dans les deux états à la fois (un AFN de N états correspond à un AFD d'au plus 2^N états)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 34
    Points : 33
    Points
    33
    Par défaut
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Minimisation des automates finis deterministes
    Par questionsinfo dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 30/01/2013, 18h23
  2. automate fini deterministe
    Par toonpax dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 07/07/2010, 15h15
  3. Combiner regexs en automate a etats finis deterministe
    Par irukatan dans le forum Langage
    Réponses: 4
    Dernier message: 22/08/2008, 20h43
  4. Transformer un automate fini non déterministe en automate fini déterministe
    Par souheyeb dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 06/04/2008, 02h56
  5. [Etat-Transition] diagramme etat transition = automate fini deterministe ou non deterministe ou les 2 ?
    Par fasfousba dans le forum Autres Diagrammes
    Réponses: 3
    Dernier message: 02/01/2008, 09h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo