Exercices automates et cloture des langages reconnaissa...

Théorie des langages : Exercices automates et cloture des langages reconnaissables

Télécharger PDF

Feuille 2 - Constructions d’automates et clôture des langages reconnaissables

Informatique Théorique 2 - Unité J1INPW11

Licence 3 - Université Bordeaux 1

Exercice 1 : Quelques exemples d’automates

Dessiner, si possible, un automate fini et une expression régulière pour les langages suivants construits sur l’alphabet {a, b} :

1. Tous les mots qui contiennent le facteur bab

Un automate fini peut reconnaître ce langage en utilisant un état intermédiaire pour détecter la séquence bab. L’expression régulière correspondante est : a*bab*a*.

2. Tous les mots qui ne contiennent pas le facteur bab

Un automate fini peut être construit en évitant l’état qui reconnaît bab. L’expression régulière est : (a + b)* - bab.

3. Tous les mots qui ne contiennent pas de facteur aba suivi de 2nbn est un entier quelconque

Ce langage est plus complexe et nécessite une analyse des répétitions de a et b. Un automate fini peut être conçu pour rejeter les mots contenant cette structure.

4. Tous les mots qui contiennent un nombre pair de a et un nombre impair de b

Un automate fini avec comptage modulo 2 pour a et b peut être utilisé. L’expression régulière est : (a2 + a2b + ba2 + b)(a2b + ba2 + b2b + ba2 + b)*).

5. L’ensemble des mots contenant un nombre de a congru à 2 modulo 5

Un automate fini avec 5 états pour compter les occurrences de a modulo 5 peut reconnaître ce langage. L’expression régulière est plus complexe et nécessite une construction basée sur les puissances de a.

6. L’ensemble des mots de longueur au moins nn est un entier naturel fixé

Un automate fini avec un état initial non final et n transitions successives vers un état final peut reconnaître ce langage. L’expression régulière est : (a + b)n(a + b)*.

7. L’ensemble des mots contenant autant de a que de b

Un automate fini avec un comptage équilibré de a et b peut être utilisé. L’expression régulière est : (aibi + biai)(a + b)*.

Démontrer que les automates donnés reconnaissent bien ces langages et que les expressions régulières les décrivent.

Exercice 2 : Division par 3

Construire un automate déterministe fini qui reconnaît l’ensemble des représentations binaires des entiers positifs divisibles par 3. Deux versions sont demandées :

1. Lecture de gauche à droite

Un automate fini avec 3 états (représentant les restes 0, 1, 2) peut être utilisé pour valider cette propriété.

2. Lecture de droite à gauche

Un automate fini inversé, utilisant des transitions basées sur les puissances de 2, peut reconnaître les mots binaires divisibles par 3.

Exercice 3 : Union, intersection, complémentaire, concaténation et étoile

1. Ensembles de mots L1 et L2

Soit L1 = {aa, baa, ab, aba} et L2 = {bbb, a, ab} deux ensembles de mots. Donner les mots contenus dans les ensembles suivants :

  • L1 ∪ L2 : {aa, baa, ab, aba, bbb, a}
  • L1 ∩ L2 : {ab}
  • L1 • L2 (concaténation) : {aabbb, aaba, aab, baabbb, baaba, baab, abbbb, abbb, abaabbb, abaaba, abaab, abab}
  • L1 \ L2 : {aa, baa, aba}
  • (L2)2 : {bbb bbb, bbb a, bbb ab, a bbb, a a, a ab, ab bbb, ab a, ab ab}
  • (L2)* : tous les mots formés par répétition de {bbb, a, ab}, y compris la chaîne vide
  • (a + b)* \ L1 : tous les mots de {a, b}* qui ne sont pas dans L1

2. Suppression des ε-transitions

Pour l’automate suivant (représenté en notation textuelle), supprimer les transitions ε :

  • État 1 : transitions vers 2, 3, 4, 5, 6, 7, 8
  • État 2 : transition vers 3 avec a
  • État 3 : transition vers 4 avec b
  • État 4 : transition vers 5 avec b
  • État 5 : transition vers 6 avec a
  • État 6 : transition vers 7 avec a
  • État 7 : transition vers 8 avec b
  • État 8 : transition vers 1 avec a
  • État 1 : transition ε vers 1

3. Automates A1 et A2 avec opérations sur les langages

Construire des automates qui reconnaissent les langages suivants pour les automates A1 et A2 donnés :

  • L(A1) ∪ L(A2) : union des langages
  • L(A1) ∩ L(A2) : intersection des langages
  • L(A1) • L(A2) : concaténation des langages
  • (L(A2))2 : répétition de L(A2)
  • (L(A2))* : fermeture de Kleene de L(A2)
  • L(A1) \ L(A2) : différence entre L(A1) et L(A2)
  • (a + b)* \ L(A2) : complémentaire de L(A2)

Proposer des constructions avec et sans ε-transitions.

Exercice 4 : Démonstration de quelques propriétés de clôture sur les langages reconnaissables

1. Suppression des ε-transitions d’un automate

Pour supprimer les ε-transitions, transformer l’automate en un automate sans ε en remplaçant chaque ε-transition par une transition directe vers les états accessibles par ε.

2. Clôture des langages reconnaissables par union, intersection, concaténation, étoile et complémentaire

Montrer que pour tout automate fini A1 et A2 reconnaissant les langages L1 et L2, les opérations suivantes préservent la reconnaissabilité :

  • Union : L1 ∪ L2
  • Intersection : L1 ∩ L2
  • Concaténation : L1 • L2
  • Étoile : L1*
  • Complémentaire : (a + b)* \ L1

FAQ

Qu’est-ce qu’un automate fini déterministe (AFD) ?

Un automate fini déterministe est un modèle mathématique utilisé en informatique théorique pour reconnaître les langages formels. Il se compose d’un ensemble fini d’états, d’un alphabet, d’une fonction de transition déterministe, d’un état initial et d’un ensemble d’états finaux.

Comment construire un automate pour reconnaître un langage avec un nombre pair de a ?

Utiliser un automate avec deux états : un état initial (non final) et un état final. Ajouter une transition sur a entre l’état initial et final, puis une autre transition sur a de l’état final vers l’état initial. Cela assure que le nombre de a est pair.

Quelle est la différence entre une ε-transition et une transition normale ?

Une ε-transition permet de passer d’un état à un autre sans consommer de symbole de l’alphabet, contrairement aux transitions normales qui consomment un symbole spécifique. Les ε-transitions sont souvent utilisées pour modéliser des choix ou des actions internes dans un automate.

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne