Vous êtes sur la page 1sur 7

Organisation

http://deptinfo.unice.fr/~julia/AL

1,5h de cours et 2h de TD hebdomadaires sur 12 semaines + 6 TP de 2h

Cours : S. Julia lundi 10h30-12h salle P.4.2

Automates & Langages TD gr.1 : F. Guingne/E. Formenti mercredi 8h-10h salle M.2.7

TD gr.2 : S. Julia mercredi 10h15-12h15 salle M.2.7

Sandrine Julia TP gr.A : S. Julia mercredi 8h-10h salle PV.312

TP gr.B : J.-V. Millo mercredi 10h15-12h15 salle PV.312

TP gr.C : E. Formenti mercredi 16h45-18h45 salle PV.312


Licence 3 Info/MI/BIM 2011/12

Bibliographie Utilisation (plutôt pratique)

• Introduction à la calculabilité • spécification des langages de programmation


Wolper, InterEditions, 3e éd., 2006. • compilation
à la BU ! • recherche de motifs
• Logique et automates dans un texte
Bellot/Sakarovitch, Ellipses, 1998. dans une base de données
sur le web
• Introduction to Automata theory, • systèmes d’exploitation, éditeurs
Languages, and Computation • compression de textes
Hopcroft, Ullman, Addison-Wesley, 1979. • cryptographie
• A Second Course in Formal Languages and Automata • électronique des ordinateurs
Theory • codage pour la transmission
Jeffrey Shallit, Cambridge Univ.Press, 2009. • images de synthèse
• biologie, génétique
• Introduction to the theory of computation • linguistique ( TALN )
Sipser, PWS publishing company, 1997.
• sciences cognitives
• Simulateur JFLAP : http://www.jflap.org/ • ...
Les solutions d’un problème
Utilité théorique vues comme un langage

Spécification de programmes Problème du loup, de la chèvre et des choux ...


Vérification C -

Complexité HLCX/ LX/HC HLX/C


C - X

L
Calculabilité : A. Church A. Turing L
X

1903-1995 1912-1954 X/HLC L/HCX

Où se situent les limites de l’informatique ? C C C C

HCX/L HLC/X
• les mots représentent les instances d’un problème
• un langage représentent les instances positives du problème X X L

• un automate ou autre machine de Turing représentent le


C - L
programme.
/HLCX HC/LX C/HLX

C -

Contenu du cours
! Automates finis
! Langages rationnels
! Expressions régulières
! Grammaires
! Automates à pile
! Langages non-contextuels
! Machines de Turing
et plus particulièrement en TP :
! Reconnaissance de motifs
! Compression de texte 1 - Automates finis déterministes
! Analyseur lexicaux
! Automates cellulaires
Matériel de base Opérations sur les langages

• symbole, lettre Soit L et M deux langages donnés.

• alphabet ! fini
• opérations ensemblistes
• mot
union, intersection, différences, complémentation, produit cartésien, ...
• langage
• mot vide noté " (ou ! ou même ") : l’unique mot à aucune lettre ! • produit de concaténation de L et M :
• longueur d’un mot m notée |m| L.M = {w = uv / u%L, v%M }

représentation binaire bn de n : |bn|=#log2 (n)$+1 • puissance de L :


• nombre d’occurrences du symbole « a » dans m notée |m|a (B) L0 = { & }
(I) pour tout i>0, Li = L. Li-1
• ie caractère du mot m noté m[i]
• préfixe (propre) • fermeture de Kleene, notée *

• suffixe (propre) L* = 'i≥0 Li


• facteur (propre)
" on note L+ = 'i>0 Li
• sous-mot " même si L=(, L0 = { & }
• miroir " l’ensemble des mots )* est la fermeture de Kleene de l’alphabet )
• ordres sur les mots : préfixe, lexicographique, hiérarchique " L* : plus petit langage contenant &, L et fermé par concaténation.

Ensemble des langages rationnels* Expressions régulières


• plus petit ensemble contenant les langages finis et clos par • formalisme simple pour décrire les langages réguliers
union, intersection et étoile
• définition inductive :
• définition inductive :
(B)
(B)
( % ER
( % R
& % ER
{&} % R
a % ER, pour tout a % )
{a} % R, pour tout a % )
(I)
(I) si *,+ % ER alors
si L, M % R alors ( * + + ) % ER
L ' M % R ( * . + ) % ER
L.M % R ** % ER
L* % R • par construction, l’ensemble des expressions régulières est
• par construction, l’ensemble des langages rationnels est dénombrable dénombrable
Exemple : les lexèmes des langages de programmation
Exemple : sur l’alphabet binaire ((( 0 + &).(1 . 0 )* ) . ( 1 + & ))
(les entiers, les hexadécimaux, les identificateurs, les commentaires …)
simplifiable en ( 0 + & ) ( 1 0 )* ( 1 + & )
* On dit aussi “réguliers” car c’est “regular” en anglais. cf.TD1
avec, du plus au moins prioritaire, les opérations : * puis . puis + .
Correspondance entre langage rationnel (ensembles)
et expression régulière (formalisme) Automate fini
Un automate fini A est la donnée d’un quintuplet :
(B)
( % ER (), Q, ,, q0, F)
& % ER Langage tel que :
a % ER, pour tout a % ) (B)
(I) L(() = ( • ! est un alphabet
si *,+ % ER alors L(&) = {&}
• Q est un ensemble fini d’états
(* + +) % ER L(a) = {a} pour tout a % )
(* +) % ER • , est un ensemble de règles de transition
(I)
(**) % ER , : Q - ( )'{&} ) - Q
L(* + +) = L(*) ' L(+)
• q0 est l’état initial
Expression régulière L( * + ) = L(*).L(+)
L( ** ) = L(*) * • F est l’ensemble des états finals
(un sous-ensemble de Q)

On dit qu’une expression régulière dénote un langage.


A accepte un mot m s’il existe un chemin de q0 à un état de F étiqueté
par les lettres de m.
Théorème un langage est rationnel si et seulement si
L’ensemble des mots acceptés forme le langage L(A) reconnu par A.
il est dénoté par une expression régulière.

Exemple Automates finis déterministes

Un automate fini est déterministe (A.F.D) ssi , est une


Automate fini
1
A fonction de transition :
A = (), Q, ,, q0, F)
q0 " q1 , : Q - ) . Q
) = {0,1}
Q = {q0,q1} 0
! d’un état donné, il part au plus une seule flèche étiquetée par
, = {(q0,0,q1),(q0,1,q0),(q0,",q1) } une lettre donnée.

q0 est l’état initial ! on n’autorise pas les &-transitions


F = {q1}
Un automate fini déterministe est complet ssi , est une
Ici, A reconnaît le langage L(A) décrit par l’expression fonction totale sur Q - ).
régulière :
! de chaque état, il part exactement une flèche étiquetée par
1* (0 + ")
chacune des lettres de l’alphabet ).
Exemple d’A.F.D Exemple d’A.F.D complet

B C = (), Q, ,, q0, F) 0,1

B = (), Q, ,, q0, F)
1 1
C q2
1
) = {0,1}
q0 0 1
q1
) = {0,1} q0
Q= {q0,q1,q2}
Q = {q0,q1} 0 q1
0
,= {(q0,0,q1),(q0,1,q0),(q1,1,q1)} ,={(q0,0,q1),(q0,1,q0),(q1,0,q2),(q1,1,q1),(q2,0,q2),(q2,1,q2)}

q0 est l’état initial q0 est l’état initial


F = {q1} 1 1

F = {q1}
q0
B accepte les mots du langage L(B) décrit par l’expression q1
régulière : C accepte les mots du langage L(C) décrit
0
1* 0 1* par 1*0 1*, c’est la version complétée de cet automate :

Non-déterminisme Equivalence A.F.N. et A.F.D.

Dans un automate fini non-déterministe (A.F.N.) il peut y avoir Théorème si un langage est reconnu par un automate fini,
alors il est également reconnu par un automate
le choix entre plusieurs chemins lors de la lecture d’un mot. fini déterministe.

Pour qu’un mot soit accepté, il suffit que ses lettres


! si l’automate fini du départ A est déterministe, c’est
étiquettent un chemin d’un état initial à un état final
évident
(même s’il y en a d’autres ne menant pas à un état final, ou bien
s’arrêtant en cours de route).
! si l’automate de départ n’est pas déterministe,
on se propose de construire un automate fini déterministe B
qui intègre tous les choix existant dans l’automate de départ
Notez qu’un A.F.D. A.F.D. (cf. algorithme de déterminisation)

c’est aussi un A.F.N. ! ! il resterait à prouver formellement que le nouvel automate B accepte
exactement les mots acceptés par A.
A.F.N.
Exemple de déterminisation Algorithme de déterminisation

soit l’AFN E = (), Q, ,, q0, F) soit un AFN A = (), Q, ,, q0, F)


E 1.
) = { 0,1 } 0 1 on construit l’automate B = (), Q’, ,’, q0’, F’)
Q = { q0,q1 } Q’ sera inclus dans P(Q)
q0 q1 Clôtures par
, = { (q0,0,q0), (q0,0,q1),(q0,&,q1), (q1,1,q1) }
q0 est l’état initial 2. ,’ 0 ( &-transitions
0,& q0’ 0 {q0} ' {q % Q tels que (q0,",q) % ,* }
F = { q1 }

on construit D = (), Q’, ,’, q0’, F’) 3. pour tout q’ % Q’ non encore considéré faire
pour tout 1 % ) faire
0 1 q’’0 { y % Q / 2 x % q’ tel que (x,1,y) % , }
q0’= {q0q1} est l’état initial
0
D si q’’ ≠ ( alors
1 q’’ 0 q’’' { z % Q / 2 y % q’’ tel que (y,",z ) % ,* }
Q’= {{ q0 }, { q0,q1 } } {q0,q1} q0,q1 q1
,’ 0 ,’ ' {( q’,1,q’’) }
,’ = {/ ( { q0,q1 },0,{ q0,q1 }), q 0q 1 q1 Q’ 0 Q’ ' { q’’ }
({ q0,q1 },1,{ q1 } ), {q1} - q1
({ q1 },1,{q1 } )
1 4. F’ 0 {q’ tels que q’ 3 F 4 ( }
F = {{ q0q1} ,{q1 } }

Application Dénombrabilité

• un alphabet ) est un ensemble fini de symboles

En début de compilation, lors de l’analyse lexicale,


• l’ensemble des mots )* sur l’alphabet )
le flot de caractères est découpé. Chaque morceau # (infini) dénombrable
appartient à un lexème.

• l’ensemble des langages sur l’alphabet )


Les générateurs automatiques d’analyseurs lexicaux # non-dénombrable
(Lex, Flex … cf.TP1) utilisent un algorithme
pour passer directement d’une expression régulière
( et aussi :
à un automate fini déterministe complet.
toutes les fonctions ne sont pas calculables... )
Preuve de non-dénombrabilité

10 11 12 13 14 15 16 17 18 19 110 111 112 113 114 ...


L0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 ...
L1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 ...
L2 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 ...
L3 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 ...
L4 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 ...
L5 1 0 1 0 1 1 0 0 0 0 0 1 0 1 0 ...
...

! soit L le langage tel que :


1i % L ssi 1i 5 Li
! ici L = {11, 12, 14, ... }
! il ne figure pas dans notre liste donc elle est incomplète
! pour n’importe quelle liste, on peut exhiber un langage qui n’y
appartient pas.

6 l’ensemble des langages sur ) n’est pas dénombrable.

Vous aimerez peut-être aussi