Expressions régulières

Transcription

Expressions régulières
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
Expressions régulières
Philippe Quéinnec
3 janvier 2011
1 / 18
Plan
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
1
Expressions Régulières
2
Automate → expression régulière
3
Expression Régulière → Automate
4
Conclusion
3 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
Exemple d'utilisation
> ls monrepertoire/
memoire.aux memoire.tex picture004.jpg rapsody.jpg
memoire.dvi picture001.jpg presentation.tex raw.jpg
memoire.old picture002.jpg price-list.txt
memoire.log picture003.jpg taches.txt
Acher uniquement les images :
ls *.jpg
Eacer les chiers relatifs à memoire :
rm mem*
Eacer les images commençant par pic, de 1 à 3 :
rm pic*[1-3].jpg
4 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
Expressions Régulières
Expressions régulières
Soit X un alphabet ni, et Y = {(, ), ∗, +, •, Λ, ∅} un alphabet
disjoint. Un mot m de (X ∪ Y ) est une expression régulière sur X
ssi :
soit m est ∅ ou Λ ou un symbole de X ,
soit m est de la forme (x + y ) ou (x • y ) ou x ∗ , où x et y sont
des expressions régulières sur X .
5 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
Langage associé
Une expression régulière m sur X dénit un langage L(m) sur X
d'après les règles suivantes :
L(∅) est le langage vide ;
L(Λ) = {Λ} ;
Si a ∈ X , alors L(a) = {a} ;
Pour tout expression régulière u et v sur X ,
L(u + v )
L(u • v )
L(u ∗ )
=
=
=
L(u ) ∪ L(v )
L(u )L(v )
L(u )∗
6 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
Règles de calcul
Λ•e =
∅•e =
e•Λ
e•∅
(e1 + e2 ) + e3
(e1 + e2 )e3
e1 (e2 + e3 )
(e1 • e2 ) • e3
= e
= ∅
e∗
=
e+∅ =
= e1 + (e2 + e3 )
= e1 e3 + e2 e3
= e1 e2 + e1 e3
= e1 • (e2 • e3 )
= Λ + ee ∗
= e ∗ ssi e = e 2
e∗
e
(e1∗ e2 )∗ e1∗
(e1∗ + e2∗ )∗
e∗ + Λ
∅+e
=
e+e
e∗ • e∗
(e ∗ )∗
ee ∗
ee ∗
Λ∗ = Λ
∅∗ = Λ
e
=
=
=
=
=
e
e∗
e∗
e ∗e
e ∗ ssi Λ ∈ e
= (e1 + e2 )∗ = e1∗ (e2 e1∗ )∗
= (e1 + e2 )∗ = (e1∗ e2∗ )∗
7 / 18
Plan
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
1
Expressions Régulières
2
Automate → expression régulière
3
Expression Régulière → Automate
4
Conclusion
8 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
Théorème d'Arden
Théorème d'Arden
Soient e1 et e2 deux expressions régulières. L'équation en
x : x = e1 x + e2 admet e1∗ e2 pour solution. Si Λ ∈/ e1 , cette solution
est unique.
Tout système de n équations à n inconnues du type
xi = ei ,1 x1 + · · · + ei ,n xn + ei ,n+1 avec Λ ∈/ ei ,j ∀i , j ≤ n, admet une
solution unique.
9 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
Expression régulière correspondante à un automate
Soit A = (Q , X , δ, q0 , F ) un automate ni déterministe, avec
Q = {q0 , . . . , qn }.
Pour tout état qi ∈ Q , soit ei l'expression régulière qui représente le
langage {m | δ̂(qi , m) ∈ F }.
ei contient Λ si qi ∈ F , et l'ensemble des mots de la forme aw ,
a ∈ X et w ∈ {v | δ̂(qia , v ) ∈ F }, où qia = δ(qi , a).
On a donc un système :
ei
=
X
a ∈X
aeia + {Λ si qi
∈ F}
La solution e0 = {m ∈ X ∗ | δ̂(q0 , m) ∈ F } est L(A).
Rq : la méthode fonctionne avec un automate non-déterministe
et/ou non complet.
10 / 18
Plan
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
1
Expressions Régulières
2
Automate → expression régulière
3
Expression Régulière → Automate
4
Conclusion
11 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
Automate associé à une expression régulière - Méthode
morphologique
e=Λ
e=a
e = e1 • e2
e = e1 + e2
e = e1 ∗
@ABC
89:;
?>=<
/ GFED
q0
@ABC
@ABC
89:;
?>=<
/ GFED
q0 a / GFED
q1
@ABC
/ GFED
q01
ooo7
oo
@ABC
/ GFED
q0 oOOO
OO
O'
@ABC
89:;
?>=<
/ GFED
q0
@ABC
/ GFED
qf 1
/ ...
@ABC
GFED
q01
@ABC
GFED
q02
@ABC
/ GFED
q01
h
+ GFED
@ABC
q02
/ ...
@ABC
89:;
?>=<
/ GFED
qf 1
/ ...
@ABC
89:;
?>=<
/ GFED
qf 2
/ ...
/ ...
@ABC
89:;
?>=<
/ GFED
qf 2
@ABC
89:;
?>=<
/ GFED
qf 1
12 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
Automate associé Méthode des dérivées
Soit e une expression régulière sur X et a un symbole de X . La
dérivée (à gauche) de e par rapport
à a est Da (e ) = {m | am ∈ e }.
Λ si Λ ∈ e
Calcul des dérivées : soit ∆(e ) =
∅ si Λ 6∈ e


 Da (a) = Λ et Da (b) = Da (Λ) = Da (∅) = ∅
On a alors :




Da (e1 + e2 )
Da (e1 • e2 )
Da (e1∗ )
Extension
aux mots :
DΛ (e )
Dyx (e )
=
=
=
=
=
Da (e1 ) + Da (e2 )
Da (e1 ) • e2 + ∆(e1 ) • Da (e2 )
Da (e1 ) • e1∗
e
Dx (Dy (e )) ∀x ∈ X , y ∈ X ∗
13 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
Automate associé
Soit e une expression régulière. Le nombre de ses dérivées
successives est ni, et ces dérivées sont liées par le système :
D y (e ) =
X
a∈X
aDya (e ) + ∆(Dy (e ))
Soient e0 , e1 , . . . , en les diérentes dérivées de e avec
e0 = e = DΛ (e ). Soit A = ({q0 . . . qn }, X , δ, q0 , F ) où qi est
associé à ei , qi ∈ F si Λ ∈ ei et δ(qi , a) = qj si ej = Da (ei ).
Alors A reconnaît le langage e0 .
L'automate A est déterministe et minimal.
14 / 18
Plan
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
1
Expressions Régulières
2
Automate → expression régulière
3
Expression Régulière → Automate
4
Conclusion
15 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
Syntaxe shell shell
*
?
[123]
[1-5]
[1-5]
sens
un nombre quelconque de caractères
un caractère quelconque
un caractère parmi . . .
un caractère parmi intervalle
complémentaire
syntaxe théorique
X∗
X
{1, 2, 3} ou 1 + 2 + 3
{1, 2, 3, 4, 5} ou . . .
X \ {1, 2, 3, 4, 5}
Exemple : ls sound0[5-7]*.mp?
16 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
Syntaxe classique
(éditeurs vi/emacs, Perl/PHP, générateur d'analyseur lexical. . . )
sens
.
un caractère (quasi) quelconque
[123]
un caractère parmi . . .
[1-5]
un caractère parmi intervalle
[1-5] complémentaire
e*
répétition
e+
répétition au moins une fois
e?
0 ou 1 fois
e{n}
n fois
e{n,m} de n à m fois
e1 |e2 alternative
()
groupement p.e. (a|b)*
syntaxe théorique
X
{1, 2, 3} ou 1 + 2 + 3
{1, 2, 3, 4, 5} ou . . .
X \ {1, 2, 3, 4, 5}
e∗
ee ∗
e+Λ
en
e n + e n+1 + . . . e m
e1 + e2
17 / 18
Expressions Régulières
Automate → expression régulière
Expression Régulière → Automate
Conclusion
Conclusion
Il y a équivalence entre :
les langages rationnels (Rat) ;
les langages reconnus par les AFN ;
les langages reconnus par les AFD ;
les langages dénis par les expressions régulières.
18 / 18