0% ont trouvé ce document utile (0 vote)
95 vues75 pages

Théorie des Langages et Automates

Transféré par

il
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • concaténation,
  • clôture de Kleene,
  • propriétés de la concaténation,
  • machine de Turing,
  • sommets,
  • automates avec ε-transitions,
  • propriétés des langages,
  • transitions étiquetées,
  • préfixes,
  • sous-chaînes
0% ont trouvé ce document utile (0 vote)
95 vues75 pages

Théorie des Langages et Automates

Transféré par

il
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • concaténation,
  • clôture de Kleene,
  • propriétés de la concaténation,
  • machine de Turing,
  • sommets,
  • automates avec ε-transitions,
  • propriétés des langages,
  • transitions étiquetées,
  • préfixes,
  • sous-chaînes

THEORIE DES LANGAGES

ET AUTOMATES

1
INTRODUCTION
• Les automates ont été définis dans les années 40-50.
• Ils sont utilisés dans les beaucoup de domaines comme:
– Compilation des langages
– Reconnaissance de texte
– Conception de protocoles
– Synthèse de programmes
– Vérification de programmes
• Fin des années 50, Chomsky un linguiste a commencé
l’étude des grammaires formelles.
• Les liens entre les grammaires et les automates ont été
étudiés par la suite

2
• Alan Turing a étudié en 1930, avant que n’existe le
premier ordinateur, une question fondamentale en
Informatique:

Existe-t-il une limite à ce qu’on peut calculer?

Sa réponse:
oui, il y a des problèmes qu’on ne peut pas résoudre à
l’aide d’un ordinateur même si on suppose une mémoire
non bornée

3
• Bibliographie
– P. Dehornoy, "Mathématiques d l’Informatique",
Dunod, 2000.
– J. Hopcroft et J. Ullmann, "Introduction to automata
theory, Languages and Computations", Addison-
Wesley, 1979.
• Webographie
– [Link]
– [Link]

4
Plan

• Mots et langages
• Automates à états finis
• Langages réguliers
• Grammaires
• Langages hors contextes et automates à pile
• Machine de Turing

5
Mots et langages

6
Mots

• Un alphabet  est un ensemble fini non vide de


lettres (ou symboles)

• Un mot est une suite finie de symboles de


l’alphabet 
Exemple: 001110 est un mot sur = {0, 1}

• Un mot w constitué de m symboles est dit de


longueur m. On note |w| = m.

Exemple: |001110|=6
||=0

7
• On note * l’ensemble des mots sur 

• i est l’ensemble des mots de longueur i .


On a : *= n n

• NB : On note + l’ensemble * \ {}

8
Opérations

• Concaténation
Soit x * et y * tels que |x| = m et |y| = n.
La concaténation de x et y notée xy est le mot de
longueur m + n dont les m premiers symboles sont ceux
de x et les n derniers ceux de y

• Propriétés de la concaténation
– associativité
– non commutativité
–  neutre pour la concaténation

9
• Portions de mots:
Soient w, x, y, z quatre mots tels que : w = xyz
– x est un préfixe de w
– y est une sous-chaîne de w
– z est un suffixe de w

• Exemple
Si le mot considéré est w = 00110
– préfixes : , 0, 00, 001, 0011 et w
– suffixes : , 0, 10, 110, 0110 et w
– sous-chaînes : , 0, 1, 00, 01, 10, 11, 001, 011, 110, 0011,0110 et
w

10
• L'opération miroir est définie de la manière suivante :
– si |w| = 0, alors w =  et wR = 
– Sinon |w| > 0, w = au (a  et u *), wR = uRa.

Si w est tel que wR = w alors w est un palindrome.

11
Langages

• Langage
Un langage (formel) L sur un alphabet  est un
sous-ensemble quelconque de * tel que L *

• Exemple
Le langage des nombres est défini sur un alphabet
= {0, 1, . . . , 9}. 02, 00310, 3200 sont alors des
mots sur . On définira le langage des nombres
comme les mots sur  qui ne commencent pas par
0. Ainsi, 1233 et 3200 seront des mots du
langages mais pas 00310.

12
• Concaténation de langages
Soient L1 et L2 deux langages, leur concaténation est le
langage
L1L2 = {xy|x  L1, y  L2}

• Propriétés de la concaténation
– associative
– non commutative
– {} neutre
–  absorbant

13
• Clôture de Kleene
– L2 = LL la concaténation de L avec lui-même
– L0 = {}
– clôture de Kleene
L* =  i=0 →  Li

14
• Autres opérations sur les langages:
– A + B (ou A  B) = {w  X*| w  A ou w  B}
– A  B = {w  X*| w  A et w  B}
– A - B (ou A \ B) = {w  X*| w  A et w  B}
– LR={uR|uL} (image miroir d’un langage)

15
• Propriétés:
– A =  A =
– A {} = {} A = A
– A  B  AC  BC
– A* = i=0 →  Ai
– A+ = i=1 →  Ai

• Remarque:
On n’ a pas la distributivité de la concaténation par
rapport à l’intersection

16
Théorème d’Arden
A, B langages sur .
Si A alors l’équation L=AL+B admet une
unique solution L= A*B

17
Automates à Etats finis
(AEF)

18
Automates à états finis

• Un Automate à Etats Finis (AEF) est défini par la donnée


de:
– un ensemble fini non vide de symboles 
– un ensemble fini d’états Q
– un élément distingué de Q, appelé état initial
– un sous-ensemble F de Q, appelé ensemble des
états finaux
– une fonction partielle : Q→Q, appelée fonction
de transition.

19
20
• représentation concrète:

un ruban, illimité à droite, divisé en cases


une tête de lecture positionnée sur une
seule case à la fois

21
chaque case du ruban contient au plus un symbole, c’est alors
nécessairement un symbole de 
celles qui ne contiennent pas de symbole: cases vides, ou occupées
par des blancs (« _ »)

a a c b b

 = {a, b, c}

22
Au départ: tête de lecture sur première case non vide à partir
de la gauche
si ruban vide: sur n’importe quelle case

a a c b b

 = {a, b, c}

23
Au départ: tête de lecture sur première case non vide à partir
de la gauche dans l’état initial q0
si ruban vide: sur n’importe quelle case

a a c b b

q0
 = {a, b, c}
Q = {q0, q1, q2}
q0 initial 24
La tête de lecture se déplace uniquement vers la droite,
d’une seule case à chaque instant du calcul
son mouvement est déterminé par la fonction 

a a c b b

q0
 = {a, b, c}
Q = {q0, q1, q2}
q0 initial 25
Si (q0, a) = q1 alors la tête de lecture passe à l’état q1 puis
se déplace d ’une case vers la droite

a a c b b

q1
 = {a, b, c}
Q = {q0, q1, q2}
q0 initial 26
But: mot accepté si et seulement si
1- mot entièrement « lu »
2- arrêt dans un état final

a a c b b

q2
 = {a, b, c}
Q = {q0, q1, q2}
q0 initial q2 final 27
Exemple d’automate

 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Q = {q0, q1, q2}
Qf = {q0}

: 0, 3, 6, 9 1, 4, 7 2, 5, 8
q0 q0 q1 q2
q1 q1 q2 q0
q2 q2 q0 q1

28
soit à reconnaître le mot 25170462

2 5 1 7 0 4 6 2

q0

: 0, 3, 6, 9 1, 4, 7 2, 5, 8
q0 q0 q1 q2
q1 q1 q2 q0
q2 q2 q0 q1

29
soit à reconnaître le mot 25170462

2 5 1 7 0 4 6 2

q2

: 0, 3, 6, 9 1, 4, 7 2, 5, 8
q0 q0 q1 q2
q1 q1 q2 q0
q2 q2 q0 q1

30
soit à reconnaître le mot 25170462

2 5 1 7 0 4 6 2

q1

: 0, 3, 6, 9 1, 4, 7 2, 5, 8
q0 q0 q1 q2
q1 q1 q2 q0
q2 q2 q0 q1

31
soit à reconnaître le mot 25170462

2 5 1 7 0 4 6 2

q2

: 0, 3, 6, 9 1, 4, 7 2, 5, 8
q0 q0 q1 q2
q1 q1 q2 q0
q2 q2 q0 q1

32
soit à reconnaître le mot 25170462

2 5 1 7 0 4 6 2

q0

: 0, 3, 6, 9 1, 4, 7 2, 5, 8
q0 q0 q1 q2
q1 q1 q2 q0
q2 q2 q0 q1

33
soit à reconnaître le mot 25170462

2 5 1 7 0 4 6 2

q0

: 0, 3, 6, 9 1, 4, 7 2, 5, 8
q0 q0 q1 q2
q1 q1 q2 q0
q2 q2 q0 q1

34
soit à reconnaître le mot 25170462

2 5 1 7 0 4 6 2

q1

: 0, 3, 6, 9 1, 4, 7 2, 5, 8
q0 q0 q1 q2
q1 q1 q2 q0
q2 q2 q0 q1

35
soit à reconnaître le mot 25170462

2 5 1 7 0 4 6 2

q1

: 0, 3, 6, 9 1, 4, 7 2, 5, 8
q0 q0 q1 q2
q1 q1 q2 q0
q2 q2 q0 q1

36
soit à reconnaître le mot 25170462

2 5 1 7 0 4 6 2

q0

: 0, 3, 6, 9 1, 4, 7 2, 5, 8
q0 q0 q1 q2
q1 q1 q2 q0
q2 q2 q0 q1

37
soit à reconnaître le mot 25170462

2 5 1 7 0 4 6 2

q0

• L ’automate s’arrête dans un état final,


• il ne reste plus rien à lire
• le mot est donc accepté

38
Représentation par diagramme
• états = sommets
• transitions = arcs étiquetés (par les lettres)
• état initial = sommet de départ
• état final = sommet d’arrivée
• mot = chemin
• mot accepté = chemin allant de l’état initial
à un état final
39
9|6|3|0 7|4|1 9|6|3|0
1
0
8|5|2

8|5|2 8|5|2

7|4|1
7|4|1

9|6|3|0

reconnaître 25170462 40
9|6|3|0 7|4|1 9|6|3|0
1
0
8|5|2

8|5|2 8|5|2

7|4|1
7|4|1

9|6|3|0

reconnaître 25170462 41
9|6|3|0 7|4|1 9|6|3|0
1
0
8|5|2

8|5|2 8|5|2

7|4|1
7|4|1

9|6|3|0

reconnaître 25170462 42
9|6|3|0 7|4|1 9|6|3|0
1
0
8|5|2

8|5|2 8|5|2

7|4|1
7|4|1

9|6|3|0

reconnaître 25170462 43
9|6|3|0 7|4|1 9|6|3|0
1
0
8|5|2

8|5|2 8|5|2

7|4|1
7|4|1

9|6|3|0

reconnaître 25170462 44
9|6|3|0 7|4|1 9|6|3|0
1
0
8|5|2

8|5|2 8|5|2

7|4|1
7|4|1

9|6|3|0

reconnaître 25170462 45
9|6|3|0 7|4|1 9|6|3|0
1
0
8|5|2

8|5|2 8|5|2

7|4|1
7|4|1

9|6|3|0

reconnaître 25170462 46
9|6|3|0 7|4|1 9|6|3|0
1
0
8|5|2

8|5|2 8|5|2

7|4|1
7|4|1

9|6|3|0

reconnaître 25170462 47
9|6|3|0 7|4|1 9|6|3|0
1
0
8|5|2

8|5|2 8|5|2

7|4|1
7|4|1

9|6|3|0

reconnaître 25170462 48
9|6|3|0 7|4|1 9|6|3|0
1
0
8|5|2

8|5|2 8|5|2

7|4|1
7|4|1

9|6|3|0

reconnaître 25170462 49
• Configuration : couple (q, w) avec qQ et w*
(q représente l’état courant et w le mot qui reste à lire
sur le ruban)

• Succession immédiate
(q’,w’) suit immédiatement (q,w):
(q, w) ➔(q’, w’)
si et seulement si
– w = xw’ avec x 
– (q, x) = q’

50
w
x w’
a a aa aaaa
q

w’

a a aa aaaa
q’

51
• Succession :
(q,w) ➔* (q’, w’)
si et seulement si
il existe un entier n0 et une suite (q0,w0), (q1,w1),…, (qn,
wn)
telle que:
– (q0, w0) = (q, w)
– (qn, wn) = (q’, w’)
– (q0, w0) ➔ (q1, w1) ➔ … ➔ (qn, wn)

• le cas particulier n = 0, la suite se réduit alors à (q0,w0)


(réflexivité)
52
• Mot accepté par A = <, Q, q0, F, >
w * est accepté par A
si et seulement si
(q0, w) ➔* (q, ) avec qF

• Langage accepté par A : L(A) défini par


L(A) = {w *; w accepté par A}

• ➔ * : fermeture réflexive transitive

• ➔ + fermeture transitive non réflexive

53
• Un automate fini sur un alphabet  est complet si pour
chaque symbole x, et chaque état q, il existe au
moins une transition étiquetée x qui quitte q.

• Un automate fini sur un alphabet  est non ambigüe si


pour chaque symbole x, et chaque état q, il existe au
plus une transition étiquetée x qui quitte q.

• Un automate est dit déterministe ssi il est complet et


non ambigüe.

54
55
Automates finis non déterministes

• Un AFN (Automate Fini Non déterministe) est un


quintuplet A = (Q,,,q0, F) tel que
– E est l’ensemble fini d’états
–  est un vocabulaire (d’entrée) fini
–  : Q ×  → P(Q) est une fonction dite de transition
– q0 Q est l’état initial
– F  Q est l’ensemble des états terminaux (ou
d’acceptation)

56
Exemple:
A = ({e0, e1, e2}, {0, 1}, , e0, {e2})

57
• Le prolongement de  noté * à Q × * est défini de la
façon suivante :
– qQ, *(q, ) = {q}
– qQ, x , w*,
*(q,wx ) = e*(q,w) (e,x)

• Un mot est accepté par l’automate lorsqu’au moins un


des états de sortie est terminal

58
• Exemple – chaîne d’entrée 00101
– * (e0, ) = {e0}
– * (e0, 0) = (e0,0) = {e0, e1}
– * (e0, 00) = (e0, 0) (e1, 0) = {e0, e1} = {e0, e1}
– * (e0, 001) = (e0, 1)  (e1, 1) = {e0}  {e2} = {e0, e2}
– * (e0, 0010) = (e0, 0)  (e2, 0) = {e0, e1}  = {e0, e1}
– * (e0, 00101) = (e0, 1)  (e1, 1) = {e0}  {e2} = {e0, e2}

59
• Langage reconnu par un automate fini non déterministe:
L(A) = {x V* | *(q0, x)  F }

Exemple

L(A) = {w |  y V*,w = y01}

60
• Déterminisation d’un AFN:
Soit un AFN N = (QN,, N, e0, FN). On construit un AFD
D = (QD,, D, e0, FD) comme suit:
– QD = P(QN)
– FD = {G  QN|G  FN }
– G  QN (G P(QN)), x , D(G, x) = e G N(e,x)

• Théorème (Equivalence AFN – AFD)


Soit N = (QN,, N, e0, FN) et D = (QD,, D, e0, FD)
construit comme précédemment à partir de N. On a alors
L(D) = L(N)

61
Principe de déterminisation:
considérer des ensembles d’états plutôt que des états
1. Partir de l’état initial
2. Rajouter dans la table de transition tous les nouveaux
états produits avec leurs transitions
3. Recommencer 2 jusqu’à ce qu’il n’y ait plus de nouvel
état
4. Tous les états contenant au moins un terminal
deviennent terminaux

62
63
Exemple

0 1
  
{e0} {e0,e1} {e0}
{e1}  {e2}
{e2}  
{e0,e1} {e0,e1} {e0,e2}
0
0
{e0,e2} {e0,e1} {e0}
1 {e0,e1}
{e1,e2}  {e2}
e0
{e0,e1,e2} {e0,e1} {e0,e2} 0 1

1 {e0,e2}
64
Minimisation d’AEF

• Principe:
On définit des classes d’équivalence d’états par
raffinements successifs. Chaque classe obtenue forme
une seul même état du nouvel automate

• Hypothèse de l’algorithme:
AFD complet dont tous les états sont accessibles.

65
Minimisation d’AEF

1. Faire deux classes: l’une contenant les états terminaux


et l’autre les états non terminaux
2. S’il existe un symbole a et deux états e1 et e2 d’une
même classe tels que (e1,a) et (e2,a)
n’appartiennent pas à la même classe, alors créer une
nouvelle classe et séparer e1 et e2
3. Recommencer 2 jusqu’à ce qu’il n’y ait plus de classes
à séparer
4. Chaque classe restante forme un état du nouvel
automate

66
Minimisation d’AEF: Exemple
a
a a
1 2 3
b b
4 a 5 a 6
b b a
b
7
a,b

0 0,1 0,1,2 0,1,2,3


1 2 2 2 a
2,3
1
2 3 3 3 a
3 1 1 1 b
5 5 5 5 a
6 6 6 6 4 5,6 a
4 4 4 4 b
b
7 7 7 7 7 67
a,b
68
Automates finis avec -transitions

• Un -AFN est un quintuplet A = (Q,,,q0, F) où:

– Q est l’ensemble fini d’états


–  est un vocabulaire (d’entrée) fini
–  : Q × {} → P(Q) est une fonction dite de
transition
– q0 Q est l’état initial
– F  Q est l’ensemble des états terminaux (ou
d’acceptation)

69
Automates finis avec -transitions

• Exemple

a b c
 
0 1 2

70
• Configuration : couple (q, w) avec qQ et w* (q
représente l’état courant et w le mot qui reste à lire sur le
ruban)(sans changement)

• Succession immédiate : (modifiée)


(q’,w’) peut suivre immédiatement (q,w):
(q, w) ➔ (q’, w’)
si et seulement si
– w = vw’ avec v  {} (si v= alors w = w’)
– (q, v, q’) R

71
Elimination des -transitions

a b c
 
0 1 2
a,b b,c

a,b,c

72
Elimination des -transitions

• Soit A=(Q,,,q0, F) un -AFND. On construit un automate


-el(A)=(Q,, -el(),q0, -el( F)) qui reconnaît L(A).

• On définit inductivement la relation :


– q  q et
– Si q  q’ et q’’  (q’, ) alors q  q’’

• On définit -el() par:


q’  (q, a) ssi il existe q1 q2  Q tels que q2  (q1, a) et q2  q’

• L’ensemble des états accepteurs -el( F) est défini par:


– -el(F)=F{q0} si q0  q’ F
– -el(F)= F sinon.

73
Déterminisation des -AFN

• -fermeture:
On appelle -fermeture de l’ensemble d’états T= {e1,e2, ….,en},
l’ensemble des états accessibles depuis un état ei de T par des -
transitions

• Principe de déterminisation:
1. Partir de l’ -fermeture de l’état initial
2. Rajouter dans la table de transition toutes les -fermetures des
nouveaux états produits avec leurs transitions
3. Recommencer 2 jusqu’à ce qu’il n’y ait plus de nouveaux états
4. Tous les états contenant au moins un état terminal deviennent
terminaux

74
a b c
 
0 1 2

75

Vous aimerez peut-être aussi