Skip to main content

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 A1A_1 et A2A_2 en figure 11 (cf. feuille de TD).

MotsA1A_1A2A_2
1. aaNonOui
2. abaabaOuiOui
3. babababaOuiOui
4. baababbaababOuiNon
5. bbbaabbabbbaabbaNonOui

Exercice 2 : Simulation

Donner un algorithme permettant de décider si wΣw \in \Sigma^* est accepté par un AFN AA.

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 ww 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, O(wn2)\mathcal{O}(|w| * n^2) avec nn le nombre de transitions dans l'automate.

NB : Cet algo n'est pas valide s'il y a des transitions ε\varepsilon, 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 22 généralise ce calcul en prenant en compte non pas la lettre lue, mais toutes les lettres possibles de Σ\Sigma. On commence naturellement par l’ensemble {q0}\{q_0\} (colonne EE), et l’on calcule les ensembles d’états atteints par une transition aa et bb (colonnes ll et FF). Lorsqu’un ensemble d’états apparaît dans FF mais pas dans EE, il y est recopié, et le même calcul est effectué sur cet ensemble (cas de {q0,q1}\{q_0, q_1\} ici).

Exercice 3 : Power-set construction

Complétez le tableau pour l'AFN A1A_1 de la figure 11 (cf feuille TD). Nota bene : il y a exactement le bon nombre de lignes.

EEllFF
{q0}\{q_0\}aa{q0,q1}\{q_0, q_1\}
bb{q0}\{q_0\}
{q0,q1}\{q_0, q_1\}aa{q0,q1}\{q_0, q_1\}
bb{q0,q2}\{q_0, q_2\}
{q0,q2}\{q_0, q_2\}aa{q0,q1,q3}\{q_0, q_1, q_3\}
bb{q0}\{q_0\}
{q0,q1,q3}\{q_0, q_1, q_3\}aa{q0,q1,q3}\{q_0, q_1, q_3\}
bb{q0,q2,q3}\{q_0, q_2, q_3\}
{q0,q1,q3}\{q_0, q_1, q_3\}aa{q0,q1,q3}\{q_0, q_1, q_3\}
bb{q0,q3}\{q_0, q_3\}
{q0,q3}\{q_0, q_3\}aa{q0,q1,q3}\{q_0, q_1, q_3\}
bb{q0,q3}\{q_0, q_3\}

Exercice 4 : Propriétés de la construction

Dessinez l'automate dons les états sont les ensembles représentés en colonne EE du tableau de la figure 22 (cf. Tableau ci-dessus), et donc les transitions sont données par les lignes de ce tableau.

  1. D'après la construction de eqdet(A)eqdet(A) vue en cours, quel est l'état initial de l'automate et quels sont ses états accepteurs ?

La cloture ε\varepsilon de l'ensemble des états initiaux. Les états accepteurs sont les états de EE qui contiennent un état accepteur de l'automate de départ.

  1. 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 A2A_2 de la figure 11 (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 AA est vide ou non. Cet algorithme est-il correct pour les automates non-déterministes ? Quelle est sa complexité ?

Un mot est accepté ssi \exists une exécution acceptante ssi \exists 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 AA est universel s’il contient tous les mots, c’est à dire L(A)=Σ\mathcal{L}(A) = \Sigma^*

  1. Donner un algorithme permettant de décider si le langage de AA est universel pour un AFD AA. Quel est sa complexité ?

universel = accepte tous les mots sur l'alphabet correspondant

On teste si A\overline{A} est vide (il faut s'assurer du déterminisme et de la complétude de AA)

  1. Expliquer pourquoi l'algorithme précédent n'est pas correct si AA est non-déterministe ? Donner un algorithme pour les AFN. Quel est sa complexité.

Si AA 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 AA et ensuite vérifier eqdet(A)=\overline{\text{eqdet}({A})} = \varnothing (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 AA et BB deux automates finis. On cherche à décider si L(A)L(B)\mathcal{L}(A) \subseteq \mathcal{L}(B).

  1. Donner un algorithme dans le cas où BB est déterministe et AA quelconque. Quelle est sa complexité ?

L(A)\mathcal{L}(A) inclus dans L(B)L(A)L(Bˉ)\mathcal{L}(B) \Leftrightarrow \mathcal{L}(A) \cap \mathcal{L}(\bar{B}) est vide

  1. Expliquer pourquoi cet algorithme n'est pas correct dans le cas où BB 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 Li\mathcal{L_i} comme celui des mots {a,b}\{a, b\} dont la i-ème lettre en partant de la fin est un aa. Donnez 33 automates finis qui acceptent respectivement L1\mathcal{L_1}, L2\mathcal{L_2} et L3\mathcal{L_3}. (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 Ln\mathcal{L_n}.

LangageNb. états ANDNb. états AFD
L1L_122
L2L_234
L3L_348
LnL_n ?n+1n+12n2^n

Coût de l'opération : exponentiel

Exercice 11 : Expression régulière et taille de l'AFD

On considère l'alphabet Σ={a,b}\Sigma = \{a, b\}.

  1. Donner une famille d'AFN pour la famille des langages représentés par les expressions régulières ΣaΣn\Sigma^*a\Sigma^n pour n0n \ge 0.

Comme dans l'exercice précédent mais il y a un décalage d'indice.

  1. A partir de la construction précédente et en utilisant le théorème de **Kleene **, donner une famille d'AFN AnA_n pour les expressions régulières EnE_n définie par En=ΣaΣn+ΣbΣnE_n = \Sigma^*a\Sigma^n + \Sigma^*b\Sigma^n. Quelle est la taille de AnA_n et de eqdet(An)eqdet(A_n) pour nn valant 1, 2 et 3 ? Extrapolez pour le cas général.
nnNb. états AnA_nNb. états eqdet(An)eqdet(A_n)
187
21015
31231
cas général2(n+2)+22(n+2) + 222+N12^{2+N} - 1
  1. On considère maintenant la famille d’expressions régulières FnF_n définie par Fn=ΣΣn+1F_n = \Sigma^*\Sigma^{n+1}. Donner une famille d’AFN BnB_n qui acceptent le langage des FnF_n. Quelle est la taille de BnB_n ? Quelle est la taille de eqdet(Bn)eqdet(B_n) pour nn valant 1, 2 et 3 ? Extrapolez le cas général.

L(Fn)=L(En)\mathcal{L}(F_n) = \mathcal{L}(E_n) ΣaΣn+ΣbΣn=ΣΣn+1\Sigma^*a\Sigma^n + \Sigma^*b\Sigma^n = \Sigma^*\Sigma^{n+1}

nnNb. états BnB_nNb. états eqdet(Bn)eqdet(B_n)
13idem
24
35
cas généraln+2n+2
  1. Comparer les langages de EnE_n et FnF_n ainsi que les tailles de eqdet(An)eqdet(A_n) et eqdet(Bn)eqdet(B_n).

Exercice 12 : Complexité au pire de la déterminisation

Si AA est un AFD à nn é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

210=1032^{10} = 10^3 donc 1 seconde 250=10152^{50} = 10^{15} Dans 1 heure 3.6×1063.6 \times 10^6 ms Dans 3 heure 10710^7 ms Dans 1 jour 8×1078\times10^7 ms Dans 1 mois 24×10824\times10^8 ms Dans 1 an 275×108275\times10^8 ms Dans 4 ans 101110^{11} ms Donc 40 000 ans.

2100=1015×10152^{100} = 10^{15}\times10^{15} Donc plus longtemps que le confinement. ...