Académique Documents
Professionnel Documents
Culture Documents
finis
Samuel BOWONG
1 Introduction
2 Langage formel
3 Automates à états finis
4 Exercices
Définition
Un alphabet E est un ensemble fini non vide de symboles (ou lettres). Le
nombre de symboles qu’il contient est appelé sa cardinalité et dénoté par
|E |.
Exemple
On considère les alphabets
Définition
Un mot w défini sur un alphabet E est une suite de symboles de E . Le
nombre de symboles qui compose la suite est appelé longueur du mot w et
dénoté par |w |. On dénote par |w |e le nombre de fois que le symbole e est
présent dans w .
Exemple
On considère les trois alphabets définis dans l’exemple précédent.
Le mot w1 = 00110 défini sur E1 a longueur |w1 | = 5.
Le mot w2 = mucem défini sur E2 a longueur |w2 | = 5. Dans ce mot :
|w2 |m = 2, parce que le symbole m y apparaı̂t deux fois ; |w2 |c = 1,
parce que le symbole c y apparaı̂t une fois.
Le mot w3 = ♠♠♠ défini sur E3 a longueur |w3 | = 3.
Définition
Le mot vide, de longueur 0, est noté ε et est défini sur n’importe quel
alphabet.
Définition
On dénote E ∗ l’ensemble de tous les mots définis sur un alphabet E .
Exemple
On considère l’alphabet E = {a, b, c}. Pour déterminer l’ensemble E ∗ on
peut énumèrer tous les mots sur E , inclus le mot vide, dans un ordre
croissant :
ε : mot de longueur zéro ;
a, b, c : mots de longueur 1 (à noter : un symbole est aussi un mot) ;
aa, ab, ac, ba, bb, bc, ca, cb, cc : les mots de longueur 2 ;
aaa, aab, ...,ccb, ccc : les mots de longueur de 3 ;
etc.,...
Exemple
La concaténation du mot w1 = a avec le mot w2 = bba donnera
w = w1 .w2 = abba. Le symbole . utilisé pour dénoter la concaténation est
souvent omis, et on écrit w1 w2 au lieu de of w1 .w2 . La longueur du mot
obtenue par concaténation est égale à la somme des longueurs des deux
mots qui la composent, c.à.d., |w1 w2 | = |w1 | + |w2 |.
Samuel BOWONG ( Samuel BOWONG)
Chapitre 1: Langage formel et automates à états finis 12 / 103
Langage formel
Exemple
Soit E = {a, b, c} et Ê = {a, b}. On considère le mot w = cabccb, : sa
projection sur Ê est obtenue en gardant les a et b et en effaçant tous les c
et donc w ↑ Ê = abb.
Définition
Si le mot w ∈ E ∗ peut s’écrire w = uvz où u, v , z ∈ E ∗ , alors le mot u
est appelé préfixe de w , le mot v est appelé sous-chaine de w et le mot z
est appelé suffixe de w . Si u est un préfixe de w on écrit u ⪯ w .
Exemple
Soit le mot w = abcd. Ses préfixes sont ε, a, ab, abc et abcd. Ses suffixes
sont ε, d, cd, bcd et abcd. Ses sous-chaines sont : tous ses préfixes, tous
ses suffixes et les chaines b, c et bc.
Exemple
Soit l’alphabet E = {a, b}, on considère les langages suivants :
Etant donné que les langages sont des ensembles de mots, il est possible
de comparer deux langages à travers les relations d’inclusion ⊆ et inclusion
stricte ⊋
Exemple
Le langage L1 = {a} est strictement inclus dans le langage L2 = {a, aa}.
Aucun de ces deux langages est inclus dans le langage L3 = {aaa}.
Exemple
Si L1 = {ε, a} et L2 = {a, b, ab}, donc L1 ∩ L2 = {a} et
L1 ∪ L2 = {ε, a, b, ab}.
L1 L2 = {w = w1 w2 ∈ E ∗ , | w1 ∈ L1 , w2 ∈ L2 },
composé de tous les mots qui sont la concaténation d’un mot en L1 avec
un mot en L2 .
Exemple
Si L1 = {ε, a} et L2 = {a, b, ab} donc
L1 L2 = {ε.a} ∪ {ε.b} ∪ {ε.ab} ∪ {a.a} ∪ {a.b} ∪ {a.ab} = {a, b, aa, ab, aab}.
Le mot ab peut être obtenu de deux manières différentes : soit
concaténation ε avec ab ou concaténation a avec b.
Samuel BOWONG ( Samuel BOWONG)
Chapitre 1: Langage formel et automates à états finis 20 / 103
Les opérations sur les langages
Une opération unaire sur les langages est l’étoile de Kleene.
Définition
Étant donné un langage L ⊆ E ∗ , son étoile de Kleene (parfois appelée
fermeture de Kleene ou encore fermeture itérative) est le langage
∞
[
∗
L = {ε} ∪ L ∪ LL ∪ . . . = Lk ,
k=0
Exemple
Soit L = {bb} un langage sur E = {b}. Son étoile de Kleene est
L∗ = {ε} ∪ {bb} ∪ {bbb} ∪ . . . = {(bb)n , | n ≥ 2}
L̄ = {u ∈ E ∗ , | il existe w ∈ L : u ⪯ w }
Exemple
Soit L1 = {ε, a, aa} et L2 = {a, b, ab}. On a L1 = L̄1 et donc L1 est clos
par préfixe. Au contraire, on a L2 ⊊ L̄2 = {ε, a, b, ab} et donc L2 n’est pas
clos par préfixe.
Samuel BOWONG ( Samuel BOWONG)
Chapitre 1: Langage formel et automates à états finis 22 / 103
Les opérations sur les langages
Définition
Étant donné un langage L ⊆ E ∗ , son complément est le langage
∁L = {w ∈ E ∗ , | w ∈
/ L}
composé de tous les mots qui ne font pas partie de L. Nous pouvons
également écrire ∁ = E ∗ ⧹L.
Exemple
Considérons le langage L1 = {ε, a, aa} sur E = {a} : son complément est
∁L1 = {an , n ≥ 3}.
L1 ∥ L2 = {w ∈ E ∗ | w ↑ E1 ∈ L1 , w ↑ E2 ∈ L2 },
composé de tous les mots sur E dont la projection sur E1 est un mot de L1
et dont la projection sur E2 est un mot de L2 .
Exemple
Considérons E1 = {a, b}, E2 = {b, c}, L1 = {ab n | n ≥ 0} et
L2 = {cbc n b | n ≥ 0}. Le produit synchrone de L1 et L2 est
L = {acbc n b | n ≥ 0} ∪ {cabc n b | n ≥ 0}. A noter que la projection de L
sur E1 est le langage {abb} ⊊ L1 , tandis que la projection de L sur E2 est
le langage {cbc n b | n ≥ 0} = L2 .
Samuel BOWONG ( Samuel BOWONG)
Chapitre 1: Langage formel et automates à états finis 24 / 103
Les opérations sur les langages
Définition
un automate fini est un quintuplet (E , X , f , x0 , F ) où
- E est un alphabet fini,
- X est un ensemble fini d’états, c’est l’espace des états, il est discret,
- f est une fonction de transition (partielle si non définie pour certaines
valeurs) d’état X × E → X ,
- x0 est un état initial, x0 ∈ X
- F est un ensemble d’états finaux, F ⊆ X .
Exemple 1
On veut détecter tous les passages de 0 à 1 et de 1 à 0 dans une
séquence de 1 et de 0.
Le système à concevoir possède donc une entrée e (qui commence toujours
par 0) et une sortie s qui prend la valeur 1 après tout passage de e de 0 à
1 ou de 1 à 0.
e=00110111001000
s= 0101100101100
Donner l’automate d’états finis qui modélise ce système (définition
formelle + graphe).
Exemple 2
Le graphe de transition d’états d’un automate fini A est donné sur la
figure suivante :
Dans la figure ci-dessus, les états de A sont représentés par des cercles.
Nous avons : X = {q0 , q1 , q2 , q3 }. L’ état initial q0 , est repéré par une
flèche entrante. Les états finaux sont représentés par des doubles cercles,
ainsi : Xm = {q3 }. La fonction f de transition d’états est représentée par
des arcs associés à des symboles de l’alphabet E . Dans notre exemple,
l’alphabet E correspond à l’ensemble {a, b}. Il existe une transition d’états
associée au symbole ”a” entre q0 et q1 . Cela signifie : f (q0 , a) = q1 .
Exemple 3
Considèrons l’exemple d’automate fini déterministe de la figure suivante :
Exemple 3
- L’automate dans cette figure décrit le comportement d’un utilisateur d’une
base de données en ligne.
- Quand l’utilisateur n’est pas connecté à la base de donnée (état x0 ) il peut
se connecter (évènement a).
- Une fois la communication établie (état x1 ) il doit s’identifier avec ID et mot
de passe (évènement b).
- Quand il a bien été identifié (état x2 ) il peut à plusieurs reprises interroger la
base de donnée pour obtenir des informations (évènement c).
- A chaque moment l’utilisateur peut interrompre la communication
(évènement d). Il y a un seul état final x0 , pour montrer que l’utilisateur ne
dois pas être connecté à la fin d’une période de travail.
Exemple 3
L’interprétation de chaque état et transition de l’automate à états finis est
aussi montrée dans la Table suivante
Exemple 6 : Entrepôt
Définition
Soit G = (X , E , f , x0 , Xm ) un automate à d’états finis. Un état x ∈ X est
dit :
- accessible depuis un état x ′ ∈ X si il existe un mot w ∈ E ∗ tel que
f (x ′ , w ) = x. Un état x accessible depuis l’état initial x0 est appelé
tout simplement accessible (ou réalisable) ;
- co-accessible vers un état x ′ ∈ X si il existe un mot w ∈ E ∗ tel que
f (x, w ) = x ′ . Un état x co-accessible vers un état final x ′ ∈ Xm , x est
tout simplement appelé co-accessible (ou co-réalisable) ;
- bloquant si il est accessible mais pas co-accessible ;
- mort si A(x)) = ∅, c’est à dire il n’existe aucune transition possible à
partir de l’état x.
- Dans l’automate à états finis dans la figure ci-dessus (a) tous les états
sont accessibles, seuls les états x0 et x1 sont co-accessibles et x3 est
mort. C’est pourquoi cet automate et accessible, non co-accessible et
bloquant.
- Dans l’automate à états finis dans la figure (b) tous les états sont
co-accessibles mais juste x0 et x1 sont accessibles ; donc cet automate
est non-accessible, co-accessible et non-bloquant.
- Dans l’automate à états finis. de la figure (c) tous les états sont
accessibles et co-accessibles.
- Cet automate est donc émondé. Aucun des automates à états finis de
la figure ci-dessus n’est réversible. Un exemple de l’automate à états
finis réversible est donné dans la figure de l’automate de l’exemple
d’automate fini déterministe.
Définition
une chaı̂ne u est reconnue par un automate fini (E , X , f , x0 , F ) si
f (x0 , u) = x où x ∈ F .
Définition
Le langage reconnu par un automate fini (E , X , f , x0 , F ) est l’ensemble des
chaı̂nes {u : f (x0 , u) ∈ F }.
est le suivant :
Le mot abcc est généré parce que f ∗ (x0 , abcc) = x2 , mais il n’est pas accepté
parce que l’état x2 n’est pas un état final. Le mot ad est accepté (et donc aussi
généré) parce que f ∗ (x0 , ad) = x0 et que x0 est un état final. Enfin, le mot ac
n’est pas généré (et donc pas acceptée) parce que f ∗ (x0 , ac) n’est pas définit : à
partir de l’état initial l’occurrence de l’évènement a conduit à l’état x1 , dans
lequel BOWONG
Samuel l’évènement( Samuel
c n’est pas actif.
BOWONG)
Chapitre 1: Langage formel et automates à états finis 58 / 103
Automates (à (nombre d’)états) finis
Deux états peuvent être fusionnés en un seul état si, lorsqu’une chaı̂ne
appliquée à l’un des états mène à un état final, elle le fait aussi lorsqu’elle
est appliquée à l’autre état.
Samuel BOWONG ( Samuel BOWONG)
Chapitre 1: Langage formel et automates à états finis 61 / 103
Automates (à (nombre d’)états) finis
Traversée d’une rivière pour un loup, une chèvre et une salade, qui
disposent d’un passeur avec une barque, avec les contraintes suivantes :
- le passeur ne peut prendre qu’un passager dans sa barque,
- pour des raisons de survie, le loup ne peut pas rester seul avec la
chèvre, et la chèvre ne peut pas rester seule avec la salade.
Dessiner un automate fini décrivant le problème de la traversée,
Stratégie gagnante d’un barman aveugle (avec des gants de boxe) pour
retourner des verres sur un plateau et réussir à ce que les 4 verres soient
dans le même sens.
Dessiner un automate fini décrivant le problème du barman aveugle,
Exemple
Le système de contrôle d’un ascenceur (pour 3 étages) est défini par :
- le contrôleur garde en mémoire l’étage courant et l’étage cible.
- en mode actif, quand l’étage cible est atteint, les portes s’ouvrent et
le contrôleur passe en mode attente.
- en mode actif, quand l’étage cible est plus élevé que l’étage courant,
le contrôleur fait s’élever l’ascenceur.
- en mode actif, quand l’étage cible est moins élevé que l’étage
courant, le contrôleur fait descendre l’ascenceur.
- en mode attente, il se peut que quelqu’un entre dans l’ascenceur et
choisisse un nouvel étage cible. L’ascenceur ferme alors les portes et
redevient actif.
- initialement, l’ascenceur est à l’étage 0 et en mode attente.
Questions :
1 Proposez une machine à états modélisant le contrôle de l’ascenceur
(définition formelle et dessin).
2 Définissez et dessinez le système de transitions correspondant (en
vous limitant aux configurations accessibles depuis état initial).
3 Est-ce que les portes peuvent s’ouvrir quand l’ascenceur est actif ?
Un berger a un loup, une chèvre et un chou. Il doit leur faire traverser la rivière au moyen d’une barque. Cette barque est si
petite qu’elle ne peut emporter qu’un passager (loup, chèvre ou chou) en plus du berger. La barque ne peut pas traverser sans le
berger, qui est le seul à savoir ramer. Le berger peut traverser tout seul. L’automate donné au verso décrit l’ensemble des états
possibles pour ce système. La lettre L représente le loup, B la chèvre (B pour bique), C le chou et b le berger. Chaque transition
est étiquetée par une ou deux lettres représentant les personnages qui traversent la rivière sur la barque. Dans un état, on
représente la rivière par deux signes moins. Les lettres sont placée à gauche ou à droite de ce signe pour signifier que le
personnage correspondant est sur la rive gauche ou la rive droite. L’état initial est un état ou‘ les quatre personnages sont à
gauche de la rivière. On met donc les quatre lettres à gauche du – et cela donne l’étiquette LBCb–.
1 quelles sont les étiquettes des états 8 et 11, qui ont été oubliées sur le schéma ?
2 dans cet automate qui est censé représenter l’ensemble des états possibles, on a oublié un état. Quelle est son étiquette
et comment se relie-t-il au schéma proposé ?
3 dans cet automate, les étiquettes des transitions ne précisent pas dans quel sens se fait la traversée. Par exemple, Bb
précise que la chèvre et le berger traversent, mais ne précise pas si c’est de la gauche vers la droite ou de la droite vers
la gauche. Est-ce gênant ? Aurait-il été possible de faire autrement ?
4 y a-t-il plusieurs solutions pour faire passer tout le monde de la rive gauche (état initial) à la rive droite ?
5 cet automate est-il déterministe ?
On prend maintenant en compte de nouvelles contraintes, à savoir que le loup et la chèvre ne doivent pas être laissés sans la
surveillance du berger sur une rive parce qu’alors le loup mange la chèvre. Même chose pour la chèvre et le chou.
1 quelles sont les conséquences de ces nouvelles contraintes sur l’automate ? Comment peut-on le modifier pour les
prendre en compte ?
2 donnez un chemin succès dans cet automate modifié.
3 le langage de cet automate est-il fini ?
1 Peut-on ouvrir une porte s’il n’y a pas de gardien dans le couloir ?
2 Peut-on ouvrir plusieurs cellules en même temps ?
3 Décrivez l’arrivée d’un nouveau détenu dans la cellule 2, en supposant
qu’elle est vide initialement. Précisez les états successifs.
4 A quoi sert l’état o : fff-v (en trois lignes) ?
5 En cas d’incendie, il faut changer les procédures de sécurité pour
évacuer au plus vite le gardien et les détenus. Comment peut-on
modifier l’automate pour prendre cela en compte ?
6 Lors de la fermeture d’une cellule, le comportement du système n’est
pas satisfaisant pour ce qui est du contrôle visuel. Expliquez pourquoi
et proposez une solution.
7 Cet automate est-il déterministe ?
8 Quel est le langage reconnu par cet automate ?
En France, pour obtenir une carte nationale d’identité, il faut faire une demande comportant un certain nombre de documents.
Dans tous les cas, il faut un formulaire de demande, deux photos et un justificatif de domicile. Ensuite, pour prouver son
identité, si la personne a une carte d’identité sécurisée périmée depuis moins de deux ans ou un passeport sécurisé, il faut
présenter cette carte ou ce passeport. Si la personne n’en a pas, il faut un acte de naissance de moins de trois mois. Dans le cas
d’un renouvellement de carte, il faut donner l’ancienne carte, sauf cas de perte ou de vol. Si la personne n’est pas née en France,
et si elle n’a pas un passeport sécurisé ou une carte d’identité sécurisée, il faut un certificat de nationalité. Si la demande fait
suite à une perte ou un vol, il faut une déclaration de perte ou une déclaration de vol et un timbre fiscal à25 euros. S’il s’agit
d’une première demande ou d’un renouvellement, la carte est délivrée gratuitement. On va essayer de modéliser la démarche au
moyen d’une expression régulière et d’un automate fini.
1 Donner un alphabet ou ensemble de symboles permettant de couvrir l’ensemble des documents et conditions en jeu dans
une demande.
2 Dans une chaı̂ne de symboles il y a une notion d’ordre qui n’est pas utile ici : il n’y a pas vraiment d’ordre à respecter
dans la présentation des documents à fournir. Comment va-t-on constituer des chaı̂nes pour que les différences d’ordre
ne viennent pas perturber la description et notamment que l’on ne considère pas comme différentes des solutions
comportant les mêmes documents ?
3 Donner une description des demandes recevables au moyen d’un automate fini représenté sous forme graphique (graphe).
4 Donnez toutes les chaı̂nes appartenant au langage de cet automate. Aucune justification n’est demandée.
5 Cet automate est-il déterministe ?
6 le langage de cet automate est-il fini ?