Vous êtes sur la page 1sur 22

Automates

Thorie des langages


Damien Nouvel
Thorie des langages
Plan

Alphabets et langages
Expressions rgulires formelles

Licence Informatique L1 Automates


Damien Nouvel 2 / 22
Thorie des langages
Plan

Alphabets et langages
Expressions rgulires formelles

Licence Informatique L1 Automates


Damien Nouvel 3 / 22
Thorie des langages
Alphabets et langages

Structure du langage :
Algbre, ensemble muni d'oprations (anneau)
Briques de base : alphabet
Proprits formelles particulires du langage
Difrents manires de dfnir un langage :
Intentionnelle : tous les mots qui...
Extensionnelle : {mot, autremot, a, b, 3, 42 }
Dfnitoire : {xyz | x = yz }
Opration sur d'autres langages (union, concatnation,
intersection, complmentaire ...)

Licence Informatique L1 Automates


Damien Nouvel 4 / 22
Thorie des langages
Alphabets et langages

Alphabet, un ensemble hors-langage :


Ensemble des symboles utiliss par un langage
= {a, b, c, d z} ( = [a-z] )
= {0, 1, 2... 9} ( = [0-9] )
= {a, f, d, x}
= {b, c, 0, $, , z}
= {ab, de, xyz}
= {abc, a, tuv, vu}
On considre les lments comme atomiques : abc peut-
tre un symbole unique pour un langage
Pas de rptitions au sein d'un alphabet (ensemble)

Licence Informatique L1 Automates


Damien Nouvel 5 / 22
Thorie des langages
Alphabets et langages

Mot (ou chane) :


Un lment de l'alphabet est un mot
Concatnation . de symboles issus d'un alphabet :
= {0, 1}: 1 = 0.0.1.0, 2 = 1.0.0.0.1.0 ...
Associative: (a.b).c = a.(b.c)
Non commutative: 0.1 1.0
Quelque soit l'alphabet, il est possible de former le mot (ou
chane) vide, not (difrent de )
Taille du mot : | x |, nombre de symboles :
| 0.1.0.0 | = 4 ( = {0, 1})
| d.d.ab.ab.d | = 5 ( = {ab, d})
||=0 ( )

Licence Informatique L1 Automates


Damien Nouvel 6 / 22
Thorie des langages
Alphabets et langages

Un langage est un ensemble de mots


Dfnition de langages partir d'alphabets :
Langage gnr par un alphabet (rcursive):
Tout mot de l'alphabet appartient au langage
Toute concatnation de mots du langage appartient au langage
Le mot vide appartient au langage

Puissance i d'un alphabet :
Tous les mots forms par concatnation de i lments de
Quelque soit l'alphabet, 0 = { }
Par ex., si = {0, 1} alors :

1 = {0, 1}
2 = {00, 01, 10, 11}

3 = {000, 001, 010, 011, 100, 101, 110, 111}
Licence Informatique L1 Automates
Damien Nouvel 7 / 22
Thorie des langages
Alphabets et langages


Fermeture / toile de Kleene * :
Kleene : mathmaticien amricain
Fermeture (toile, itr) (informellement) : tout ce qu'il est
possible de construire partir d'un alphabet / langage
Union de toutes les puissances d'un alphabet :
* = 0 1 2 3 4
Ou langage de , langage gnr par

Quelque soit : *
Attention la distinction symboles / mots :
Si = {0, 11} alors 1.0.1 n'appartient pas *
Si = {a, ab} alors a.ab.b.ab. n'appartient pas *

Licence Informatique L1 Automates


Damien Nouvel 8 / 22
Thorie des langages
Alphabets et langages

Langage sur un alphabet :


Un langage L sur un alphabet est un sous-ensemble de *
Oprations sur les langages (tant donn ) :
Concatnation: L.M (ou LM) : mot forms par
concatnation d'lments de L et de M (dans l'ordre)
Associative, non commutative, lment neutre , lment
absorbant
Puissance: Li = { L* t. q. || = i } (idem alphabet)
Remarque: L0 = et Li= Li-1.L
Fermeture(toile, itr) : L* = i0 Li (idem alphabet)
Idempotente: (L*)* = L*
Quelque soient L et : L* (idem alphabet)
Licence Informatique L1 Automates
Damien Nouvel 9 / 22
Thorie des langages
Alphabets et langages

Union: L M (ou L + M) mots issus soit de L soit de M


Associative, commutative, lment neutre
La concatnation est distributive par rapport l'union
Intersection: L M : mots qui existent dans L et dans M
Associative, commutative, lment neutre *, lment absorbant

Complmentaire: L: mots de * qui ne sont pas dans L
Fermeture (toile, itr) stricte: : L+ = i1 Li
Remarques: idempotente, L+ = L.L* et L* = L+ {}

Quotient droit: L.M-1 = { *, M, . L }
Quotient gauche : L-1.M = { *, L, . M }
Miroir: L (tilde au dessus), langage ou tous les mots sont
renverss: l'ordre des symboles est invers
Licence Informatique L1 Automates
Damien Nouvel 10 / 22
Thorie des langages
Alphabets et langages

Quelques exemples:
Alphabet = { a, b, c }


b
a
c

Langages L1 = { a, b }, L2 = { a, c }

L1 L2 lments de
l'alphabet
a c
b a
lments du
langage

Licence Informatique L1 Automates


Damien Nouvel 11 / 22
Thorie des langages
Alphabets et langages

Quelques exemples(suite) :
a b c
= { a, b, c }, L1 = { a, b }, L2 = { a, c }
Union: L3 = L1 L2 L1
L3 a b
c
b
L2
a
a c
Concatnation: L4 = L1 . L2

L4 lments de
a a a c l'alphabet

b a b c lments du
langage

Licence Informatique L1 Automates


Damien Nouvel 12 / 22
Thorie des langages
Alphabets et langages

Quelques exemples(suite) :
a b c
= { a, b, c }, L1 = { a, b }, L2 = { a, c }
Union et concatnation : L5 = L1 ( L1 . L2 ) L1
L5 a b

a a a a c
L1 L1 . L2 L2
b b a b c a c

lments de
Intersection: L6 = L1 L2 l'alphabet
L1 L6 L2
lments du
b a c
langage

Licence Informatique L1 Automates


Damien Nouvel 13 / 22
Thorie des langages
Alphabets et langages

Quelques exemples(suite) :
a b c
= { a, b, c }, L1 = { a, b }, L2 = { a, c }

Puissance : L7 = L10, L8 = L11, L9 = L12, L10 = L13 L1


a b
L9
L7 L8 a a a b
L2
a b
b a b b a c

L10 lments de
a a a a a b a b a a b b l'alphabet

b a a b a b b b a b b b lments du
langage

Licence Informatique L1 Automates


Damien Nouvel 14 / 22
Thorie des langages
Alphabets et langages

Quelques exemples(suite) :
a b c
= { a, b, c }, L1 = { a, b }, L2 = { a, c }

Fermeture : L11 = * (= 0 1 2 ...), L12 = L1* L1


L11 L12 a b
a a a a a a a a ...
L2
a a b a a b a a a a a b
a c
b a c a a c ... a b a b a ...

c ... ... b b a b a a lments de


l'alphabet
c a c a a b b b a b
lments du
... ... ... ...
langage

Licence Informatique L1 Automates


Damien Nouvel 15 / 22
Thorie des langages
Alphabets et langages

Quelques exemples(suite) :
a b c
= { a, b, c }, L1 = { a, b }, L2 = { a, c }

Complmentaire : L13 = L1 ( * - L1) L1


L13 a b
a a a a a
L2
a b a a b
a a c

*
b a c a a c ...

... ... lments de
c
l'alphabet
c a c a a
lments du
... ...
langage

Licence Informatique L1 Automates


Damien Nouvel 16 / 22
Thorie des langages
Alphabets et langages

Quelques exemples(suite) :
a b c
= { a, b, c }, L1 = { a, b }, L2 = { a, c }

Intersection et complmentaire : L14 = ( L2. L1 ) L22 L1


a b
L22
L22 L2. L1 L14 L2
a c
a c a a a b

c c c a c b
lments de
l'alphabet

lments du
langage

Licence Informatique L1 Automates


Damien Nouvel 17 / 22
Thorie des langages
Plan

Alphabets et langages
Expressions rgulires formelles

Licence Informatique L1 Automates


Damien Nouvel 18 / 22
Thorie des langages
Expressions rgulires formelles

Expressions rgulires:
expressions rationnelles (langage rgulier rationnel)
Formalises mathmatiquement en 1959 (Rabin & Scott)
Utilises en programmation (regexp): grep, awk, Perl, Python
Un langage pour dfnir un langage

Symboles(par priorit) : { (, ), *, +, +}
Une expression rgulire gnre, accepte ,
reconnat un langage (dit rgulier)
Langage des expression rgulires sur : Reg()

Reg() ( { +, *, +, (, ) } )*
Programmation: le + deviendra | (viter la confusion)
Licence Informatique L1 Automates
Damien Nouvel 19 / 22
Thorie des langages
Expressions rgulires formelles

Dfnition rcursive(tant donn ) :


Tout lment de est une expression rgulire
Si r est une expression rgulire,alors (r), r +, r* aussi
Si r1 et r2 sont des exp. rgulires,alors r1 r2 et r1 + r2 aussi
Soit l'application L qui associe une expression
rgulire un langage, dfnie de la manire suivante :
L : Reg() *
L( a ) = { a } a , L( ) = { } et L( ) =
L( r1 + r2 ) = L(r1) L(r2)

L( r1 r2 ) = L(r1) . L(r2)

L( r* ) = L(r)* et L( r+ ) = L(r)+
Licence Informatique L1 Automates
Damien Nouvel 20 / 22
Thorie des langages
Expressions rgulires formelles

Par ex., soit = { a, b, c }:


L(b) = b
L(a+c) = L(a) L(c) = {a, c}
L(ac) = L(a) . L(c) = {a.c}

L(c*) = L(c)* = {c}* = {, c, cc, ccc, cccc...}

L(a+c*) = L(a) L(c*) = {a} {c}* = {, a, c, cc, ccc, cccc...}

L((a+b)*) = (L(a) L(b))* = {a, b}*
= {, a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab }

L((ac)++b) = (L(a) . L(c))+ L(b) = {ac}+ {b}
= {b, ac, acac, acacac }

L(a++(abc)*+((b+a)c)+) = L(a)+ L(abc))* L({b, a}.c)+
= {a, aa, aaa ... , abc, abcabc ... bc, ac, bcbc, acac...}
Licence Informatique L1 Automates
Damien Nouvel 21 / 22
Thorie des langages
Expressions rgulires formelles

Quelques cas d'applications classiques:


Trouver des fchiers dans un dossier:
Tous les fchiers d'extension .jpg: *.jpg
Chercher toutes les fonctions get... dans un programme:
Expression rgulire: function get[a-Z]*(
Extraire toutes les phrases d'un texte:
Expression rgulire: (.+?+!)*(.+?+!)*
Vrifer si une entre de programme est bien un entier:
Expression rgulire: (-+){0...9)*
Chercher les mots au pluriel dans un texte:
Expression rgulire: [a-z]*((e+a)ux+s)

Licence Informatique L1 Automates


Damien Nouvel 22 / 22

Vous aimerez peut-être aussi