Aller au contenu principal

TD 1 : automates finis et langages

Langages et automates finis​

Exercice 1​

Pour chaque langage ci-dessous sur l'alphabet {a,b}\{a,b\}, donnez un automate fini déterministe qui l'accepte.

Le nombre de aa est un multiple de 4.

Automate : nombre de a multiple de 4

Un nombre pair de aa et impair de bb.

Automate : nombre pair de a et impair de b

Tout symbole aa est précédé et suivi d'au moins un symbole bb.

Automate : tout a est entouré de b

Remarque : dans cet automate, q0q_0 n'est pas accepteur ; si l'on considère que le mot vide appartient au langage (il ne contient aucun aa), il faut aussi rendre q0q_0 accepteur.

Exercice 2​

Pour chaque langage ci-dessous sur l'alphabet binaire {0,1}\{0,1\}, donnez un automate fini déterministe qui l'accepte.

Les entiers pairs.

Automate : entiers pairs en binaire

Les entiers multiples de 3 (l'état qrq_r mémorise le reste rr de la division par 3 du préfixe lu ; lire le bit bb fait passer de rr à (2r+b) mod 3(2r+b) \bmod 3).

Automate : multiples de 3 en binaire

Exercice 3​

Pour chaque langage ci-dessous sur l'alphabet {a,b,c}\{a,b,c\}, donnez un automate fini non déterministe qui l'accepte.

Les mots qui se terminent par aaaa.

Automate : mots terminés par aa

Les mots dont la dernière lettre apparaît précédemment dans le mot.

Automate : dernière lettre déjà apparue

Les mots dont la dernière lettre n'apparaît pas précédemment dans le mot (pas de schéma dans ces notes).

Exercice 4​

Écrire un algorithme qui indique si un automate fini déterministe et complet A=(Q,Σ,δ,q0,F)A=(Q,\Sigma,\delta,q_0,F) accepte un mot ω∈Σ∗\omega \in \Sigma^\ast.

Formellement, soit ω=ω1…ωk\omega = \omega_1 \ldots \omega_k un mot (ωi\omega_i est la ii-ème lettre du mot) et A=(Q,Σ,δ,q0,F)A=(Q,\Sigma,\delta,q_0,F) un automate : on veut décider si ω\omega est accepté par AA. Soit XiX_i l'ensemble des états que l'on peut atteindre en ayant lu ω1,ω2,…,ωi\omega_1,\omega_2,\ldots,\omega_i. L'algorithme suivant fonctionne aussi pour un automate non déterministe sans transition ϵ\epsilon ; pour un automate déterministe et complet, chaque XiX_i contient exactement un état.

X_0 = {q_0}
pour i de 1 à k
X_i = ∅
pour tout p dans X_{i-1}
pour tout q tel que (p, ω_i, q) est dans δ
X_i = X_i ∪ {q}
pour tout p dans X_k
si p est dans F
retourner Vrai
retourner Faux

Exercice 5​

L'idée est de retirer le statut initial des deux états initiaux et de créer un nouvel état initial qui mène aux deux anciens.

Remarque : si l'objectif est de conserver le langage accepté, les transitions issues du nouvel état doivent être des transitions ϵ\epsilon (ou bien le nouvel état doit reprendre les transitions sortantes des anciens états initiaux). Avec des transitions étiquetées aa et bb comme sur le schéma, chaque mot accepté est précédé d'une lettre supplémentaire.

Automate à un seul état initial

Exercice 6​

Démonstration par l'exemple :

Exemple de l'exercice 6

Jeu des portes bascules​

Les parties gagnantes avec trois billes sont AAB, ABB, BAB et BBB.

Table de transition de l'automate :

AB
000a100r011r
000a100r011r
001a101r011r
010r110r000a
010a110r001a
100r010r111r
100a010r111r
101r011r100a
101a011r100a
110r000a101a
110a000a101a
111r001a110a

Automate du jeu des portes bascules