Automates finis et application - TD5
Merci à Aurélien et Fabien pour la prise de note durant les séances de questions réponses.
1. Automates finis non-déterministes
Exercice 1 : Mots acceptés
Indiquez si les mots suivants sont acceptés par les automates et en figure (cf. feuille de TD).
Mots | ||
---|---|---|
1. | Non | Oui |
2. | Oui | Oui |
3. | Oui | Oui |
4. | Oui | Non |
5. | Non | Oui |
Exercice 2 : Simulation
Donner un algorithme permettant de décider si est accepté par un AFN .
On pourrait faire un algorithme qui examine toutes les exécutions possibles, mais on risque de trouver un arbre de taille exponentielle, donc c'est une idée peu efficace. Au lieu d'explorer cet arbre, on stocke seulement à chaque "étage" les états différents. Ainsi, il suffit de se souvenir à chaque étape des états accessibles. Si la dernière étape contient un état acceptant, c'est que le mot est accepté par l'automate.
fonction appartient(A = (Q, Σ, d, I, F), w=w1...wk) : booléen
X[0] = I
pour i de 1 à k
X[i] = {}
pour tout p dans X[i-1]
pour toute transition p -- wi --> q
insérer q dans X[i]
pour tout p dans X[k]:
si p est un état acceptant
retourner Vrai
retourner Faux
On peut étudier la complexité de cet algorithme : on suppose que l'insertion de q
dans X[i]
est constante. Dans le pire des cas, avec le nombre de transitions dans l'automate.
NB : Cet algo n'est pas valide s'il y a des transitions , il faut dans ce cas faire des clôtures instantanées pour déterminer les successeurs correctement. Ce qui amènerait à une complexité... ?
2. Algorithme de déterminisation
Nous avons vu que pour simuler un automate non-déterministe, il suffit de calculer l’ensemble des états atteints après avoir lu un préfixe du mot d’entrée, et de maintenir cet ensemble à jour à chaque lecture d’une lettre. Le tableau de la figure généralise ce calcul en prenant en compte non pas la lettre lue, mais toutes les lettres possibles de . On commence naturellement par l’ensemble (colonne ), et l’on calcule les ensembles d’états atteints par une transition et (colonnes et ). Lorsqu’un ensemble d’états apparaît dans mais pas dans , il y est recopié, et le même calcul est effectué sur cet ensemble (cas de ici).
Exercice 3 : Power-set construction
Complétez le tableau pour l'AFN de la figure (cf feuille TD). Nota bene : il y a exactement le bon nombre de lignes.
Exercice 4 : Propriétés de la construction
Dessinez l'automate dons les états sont les ensembles représentés en colonne du tableau de la figure (cf. Tableau ci-dessus), et donc les transitions sont données par les lignes de ce tableau.
- D'après la construction de vue en cours, quel est l'état initial de l'automate et quels sont ses états accepteurs ?
La cloture de l'ensemble des états initiaux. Les états accepteurs sont les états de qui contiennent un état accepteur de l'automate de départ.
- Quelle(s) propriété(s) remarquable(s) cet automate possède-t-il ?
Il est déterministe et complet.
Exercice 5 : Application de l'algorithme
A l’aide de l’algorithme vu en cours, calculez les automates déterministes correspondant à l’automate de la figure (cf. feuille de TD), ainsi qu’aux automates suivants.
Hint : JFLAP le fait très bien pour vérifier vos résultats, Convert > Convert to DFA
.
3. Algorithmes sur les automates non-déterministes
Exercice 6 : Langage vide
Donner un algorithme permettant de décider si le langage accepté par un automate fini déterministe est vide ou non. Cet algorithme est-il correct pour les automates non-déterministes ? Quelle est sa complexité ?
Un mot est accepté ssi une exécution acceptante ssi un état acceptant accessible depuis un état initial.
On fait donc un parcours en profondeur, dont la complexité est linéaire (\mathcal{O}(\text{nb_transitions} + \text{nb_etats})) par rapport au nombre de transitions + le nombre d'états.
Exercice 7 : Langage universel
Le langage d’automate est universel s’il contient tous les mots, c’est à dire
- Donner un algorithme permettant de décider si le langage de est universel pour un AFD . Quel est sa complexité ?
universel = accepte tous les mots sur l'alphabet correspondant
On teste si est vide (il faut s'assurer du déterminisme et de la complétude de )
- Expliquer pourquoi l'algorithme précédent n'est pas correct si est non-déterministe ? Donner un algorithme pour les AFN. Quel est sa complexité.
Si n'est pas déterministe, l'algorithme précédent n'est pas valide car la complémentation n'est pas correcte. Il peut exister un mot accepté à la fois par l'automate et son "prétendu" complémentaire. Dans ce cas, il suffit de déterminiser l'automate et ensuite vérifier (complémentaire est vide).
Il faut cependant noter que l'opération de déterminisation est de complexité exponentielle dans le pire des cas (problème P-SPACE). D'autre part, le calcul du complémentaire est "seulement" polynomial.
Exercice 8 : Inclusion des langages
Soient et deux automates finis. On cherche à décider si .
- Donner un algorithme dans le cas où est déterministe et quelconque. Quelle est sa complexité ?
inclus dans est vide
- Expliquer pourquoi cet algorithme n'est pas correct dans le cas où n'est pas déterministe. Donner un algorithme dans ce cas. Quelle est sa complexité ?
4. Complexité de la déterminisation
On s’intéresse à la taille de l’automate déterministe équivalent à un automate non-déterministe donné obtenu par la power-set
construction. Le nombre d’itérations de la boucle Tant que
de l’algorithme est égal au nombre d’états de l’automate déterministe. Nous cherchons donc à estimer ce nombre.
Exercice 9 : Des automates non-déterministes particuliers
On définit le langage comme celui des mots dont la i-ème lettre en partant de la fin est un . Donnez automates finis qui acceptent respectivement , et . (indication : le non-déterminisme est une aide précieuse).
On s'appuie sur l'exemple du cours...
L1 :
L2 :
Exercice 10 : Taille de l'automate déterministe
Remplissez le tableau suivant. Pour obtenir les automates déterministes demandés, utilisez JFLAP (menu Convert/Convert to DFA
). Vous extrapolerez le cas de .
Langage | Nb. états AND | Nb. états AFD |
---|---|---|
2 | 2 | |
3 | 4 | |
4 | 8 | |
? |
Coût de l'opération : exponentiel
Exercice 11 : Expression régulière et taille de l'AFD
On considère l'alphabet .
- Donner une famille d'AFN pour la famille des langages représentés par les expressions régulières pour .
Comme dans l'exercice précédent mais il y a un décalage d'indice.
- A partir de la construction précédente et en utilisant le théorème de **Kleene **, donner une famille d'AFN pour les expressions régulières définie par . Quelle est la taille de et de pour valant 1, 2 et 3 ? Extrapolez pour le cas général.
Nb. états | Nb. états | |
---|---|---|
1 | 8 | 7 |
2 | 10 | 15 |
3 | 12 | 31 |
cas général |
- On considère maintenant la famille d’expressions régulières définie par . Donner une famille d’AFN qui acceptent le langage des . Quelle est la taille de ? Quelle est la taille de pour valant 1, 2 et 3 ? Extrapolez le cas général.
Nb. états | Nb. états | |
---|---|---|
1 | 3 | idem |
2 | 4 | |
3 | 5 | |
cas général |
- Comparer les langages de et ainsi que les tailles de et .
Exercice 12 : Complexité au pire de la déterminisation
Si est un AFD à états, quel est au pire cas le nombre d’états de l’automate déterministe équivalent obtenu par la power-set construction ? En supposant que l’on dispose d’un programme ne nécessitant qu’une milliseconde pour calculer un état, calculez le temps nécessaire pour rendre déterministe des automates à 5, 10, 50 et 100 états.
Exponentiel
donc 1 seconde Dans 1 heure ms Dans 3 heure ms Dans 1 jour ms Dans 1 mois ms Dans 1 an ms Dans 4 ans ms Donc 40 000 ans.
Donc plus longtemps que le confinement. ...