Académique Documents
Professionnel Documents
Culture Documents
EXPRESSIONS RÉGULIÈRES
PLAN
1. Introduction
2. Terminologie
3. Opérations sur les mots
4. Opérations sur les langages
5. Langages formels
6. Expressions régulières
7. Langages réguliers
INTRODUCTION
Fermeture
Soit Σ, un alphabet. On note par Σ*, l’ensemble de toutes les
séquences finies de symboles de Σ.
Le symbole * est une fonction qui, appliquée à un ensemble
non vide Σ, donne un autre ensemble infini Σ*.
On dit que Σ* est la fermeture de Σ.
Exemple:
Σ={a,b} => Σ*= {ε, a,b, ab, ba, aa, bb, aab, abb, aaa, ...}
TERMINOLOGIE
Fermeture
L’ensemble de tous les mots non-vides formés à partir
de Σ est noté Σ⁺.
On note par Σk l’ensemble des mots sur Σ de longueur k
Exemple : Σ ={a,b}
• Σ1 ={a,b}
• Σ2 ={aa,ab,ba,bb}
• Σ0 ={ε}
TERMINOLOGIE
Fermeture
On a donc :
Σ*={ε} ∪ Σ⁺
Σ⁺= Σ1 ∪ Σ2 ∪ Σ3 ∪…
Σ*=Σ0 ∪ Σ1 ∪ Σ2 ∪…
TERMINOLOGIE
Langage
Ensemble de mots sur un alphabet.
Un langage sur Σ est un sous-ensemble de Σ*.
Un langage L est un ensemble de mots appartenant à Σ* et
qui vérifie une propriété donnée :
L= {w ∈ Σ* | w possède la propriété P}
TERMINOLOGIE
Langage
Exemples:
• Ensemble des mots anglais légales
• Ensemble de programmes C corrects syntaxiquement
• Ensemble des mots de l’alphabet binaire qui commencent
un nombre n de 0 suivi par le même nombre n de 1.
L={ε , 01 , 0011, 000111, …}.
TERMINOLOGIE
Langage
• Le langage vide L= ∅
• Le langage {ε} contenant le mot vide.
• ∅ ≠ {ε}
TERMINOLOGIE
Exercice:
Σ ={a,b}
• Ensemble des mots ayant le même nombre des a et des b.
• Ensemble des mots de longueur strictement inferieure à 2
• {aa, aaa, aaaaa, aaaaaaa,...}
• {ab, aab, abb, aaab, abbb, aabb, abab...}
• { a, b,aba , bab, aabaa, bbabb,...}
TERMINOLOGIE
Correction :
Σ ={a,b}
• Ensemble des mots ayant le même nombre des a et des b.
L1={ ε, ab, ba, aabb, baba, ………}
• Ensemble des mots de longueur strictement inférieure à 2
L2={ε, a , b}
TERMINOLOGIE
Concaténation
• L’opération de concaténation de deux mots u et v de Σ*
résulte en un nouveau mot uv, constitué par la
juxtaposition des symboles de u et des symboles de v.
• Soient u, v deux mots définis sur Σ, tq u=x1x2..xn, v= y1y2..yn
La chaîne ω concaténation de u et v est ω=u.v=uv= x1...xny1...yn
• On a alors |uv| = |u| + |v|
OPÉRATIONS SUR LES MOTS
Concaténation
• La concaténation est une opération interne de Σ*
• Elle est associative, mais pas commutative
uvt=(uv)t=u(vt)
• ε est l’élément neutre pour la concaténation
u.ε=ε.u=u
OPÉRATIONS SUR LES MOTS
Concaténation
• On note un la concaténation de n copies de u. Par
exemple:
• u0 = ε.
• u3 = uuu
• uk = uuuu... (k fois)
• Un mot non-vide v est primitif si l’équation v = ui n’admet
pas de solution pour i >1. Par exemple, le mot abab n'est
pas primitif, parce qu'il est le carré du mot ab.
OPÉRATIONS SUR LES MOTS
Concaténation
u* = {ui /i≥0}={u0,u1,u2,...,ui,...}
u+ = {ui /i>0}={u1,u2,u3,...,ui,...}
OPÉRATIONS SUR LES MOTS
Préfixes et suffixes
• Les préfixes d'un mot u=x1x2..xn sont les n+1 mots ε et x1...xi
pour i=1,…,n.
• Les suffixes d'un mot u=x1x2..xn sont les n+1 mots ε et
xi...xn pour i=1,…,n.
• Si on exclut le mot vide, on parle de préfixe (resp. suffixe) non
vide.
• Si on exclut le mot lui-même, on parle de préfixe (resp.
suffixe) propre.
• On note |pref|k(u) (resp. |suff|k(u)) le préfixe (resp. le suffixe) de
longueur k de u.
OPÉRATIONS SUR LES MOTS
Préfixes et suffixes
Exercice:
Quels sont les préfixes et les suffixes du mot xyxz ?
Correction:
• les préfixes du mot xyxz sont : ε, x, xy, xyx, xyxz
• les suffixes du mot xyxz sont : ε, z, xz, yxz, xyxz
De manière équivalente :
• u est un préfixe de ω ssi ∃ v tq ω=uv
• v est un suffixe de ω ssi ∃ u tq ω=uv
OPÉRATIONS SUR LES MOTS
Facteurs et sous-mots
• On dit que u est un facteur de v s’il existe u1 et u2 dans
Σ* tels que v =u1uu2.
• Si u2 = ε alors u1 est dit facteur gauche de v (ou préfixe)
• Si u1 = ε alors u2 est dit facteur droite de v (ou suffixe)
• Si u1 = u2 = ε alors v est un facteur de lui même
• On appelle facteur propre de v tout facteur de v diffèrent
de v.
OPÉRATIONS SUR LES MOTS
Facteurs et sous-mots
• Si w se factorise en u1v1u2v2 . . . unvnun+1, où tous
les ui et vi sont des mots de Σ*, alors v = v1v2...vn est un
sous-mot de w. Par exemple, 11 est sous-mot de 10100
(mais pas un facteur)
• Les sous-mots sont donc construits à partir de fragments
non nécessairement contigus, mais dans lesquels l’ordre
d’apparition des symboles est toutefois respecté.
• Tous les facteurs sont des sous-mots
OPÉRATIONS SUR LES MOTS
Image miroir
• L'image miroir ou transposé ωR du mot ω=x1...xn, où xi∈Σ,
est défini par: ωR =xn...x1.
ω=001011 ωR=110100
• Un mot est un palindrome s’il est égal à son miroir. Par
exemple, ''ici'' et ''radar'' sont des palindromes du
vocabulaire commun.
L={ω є Σ*, ω=ωR }
OPÉRATIONS SUR LES LANGAGES
Opérations ensemblistes
• Union : L1∪L2 = {u∈Σ*|u∈L1ou u∈L2}
• Intersection : L1∩L2 = {u∈Σ*|u∈L1et u∈L2}
• Complémentation : L = {u∈Σ* |u∉L}
• Les opérations ∪ et ∩ sont associatives et commutatives.
OPÉRATIONS SUR LES LANGAGES
Concaténation
• L’opération de concaténation, définie sur les mots,
engendre naturellement la concaténation de langages :
L1.L2 = L1L2 = {u∈Σ* | ∃(x,y)∈L1×L2 tq u=xy}
• Cette opération est associative, mais pas commutative.
• L’itération de n copies du langage L se notera Ln.
• Par convention : L0 = {ε}.
OPÉRATIONS SUR LES LANGAGES
Propriétés
Soient L1, L2, L3 des langages on a :
• L1.(L2∪L3) = L1.L2∪L1.L3
• (L1∪L2).L3 = L1.L3∪L2.L3
• L1 ⊆ L2 ⇒ L1L3 ⊆ L2L3
L3L1 ⊆ L3L2
OPÉRATIONS SUR LES LANGAGES
Fermeture de Kleene
L*={ω ∈ Σ* | ω=ω1ω2...ωк pour k≥0 et ω1,ω2,...,ωк ∈ L}
L’opération de fermeture (ou plus simplement l’étoile) de Kleene d’un
langage L se définit par :
C'est à dire, si L est un langage alors L* contient tous les mots formés
par concaténation d'un nombre fini d’éléments du langage L, où chaque
mot peut être utilisé de 0 à n fois, et le mot vide est aussi inclus.
OPÉRATIONS SUR LES LANGAGES
Fermeture de Kleene
Exemple
L={aa, b}
L*={ε, b, aa, bb, aab, baa, bbb, aaaa, aabb, baab, bbaa, bbbb,
aaaab, aabaa, aabbb, baaaa, bbaab, bbbaa, bbbbb,...}
Remarque:
∅* = {ε} ≠ ∅
∅* est la répétition de 0 ou plusieurs fois de ∅
OPÉ R ATIONS SUR LES LANGAGES
Fermeture de Kleene
On définit également :
Exercice:
soit Σ = {0,1}
L={ω∈Σ* | ω contient |w|0 ≠ |w|1}
Montrer que L* = Σ *
L={1,0,101,110,…}
OPÉRATIONS SUR LES LANGAGES
Correction:
L* ⊆ Σ * (par définition) (1)
On a Σ⊆L⇒ Σ*⊆L* (2)
(1) et (2) ⇒ L*=Σ*
LANGAGES FORMELS
Définition récursive
Définition dans laquelle, un langage est défini sur lui-même.
Exemple:
∑ = {a,b}
L2 = {ω∈∑*/ ω=ε ou ω=uv avec |u| = 2 et v∈L2}
L2 = L1
LANGAGES FORMELS
Exercice:
∑ = {a, b}
Donner la définition par propriété et la définition récursive
des langages suivants:
1. L1 est l’ensemble des mots sur ∑ où tous les a précèdent
les b et sont de même nombre
2. L2 est l’ensemble des mots palindromes sur ∑
LANGAGES FORMELS
Correction:
L1 est l’ensemble des mots sur ∑ où tous les a précèdent les
b et sont de même nombre
• Définition par propriété
L1 = { ω∈{a,b}* / ω = anbn, n ≥ 0}
• Définition récursive
L1 = {ω∈{a,b}* / ω = ε ou ω=aω1b et ω1∈L1}
LANGAGES FORMELS
Correction:
L2 est l’ensemble des mots palindromes sur ∑
• Définition par propriété
L2 = {ω∈{a,b}* / ω = ωR}
• Définition récursive
L2 = {ω∈{a,b}* / ω =ε, ω = a ou ω = b ou ω=aω1a ou
ω=bω1b et ω1 ∈L2}
EXPRESSIONS RÉGULIÈRES
Exemples Introductifs
• L1 = {tous les mots (éventuellement vide) formés par un
nombre quelconque de a}
= {ε, a, aa, aaa, aaaa, aaaaa, ...}
= langage (a*)
• L2 = {tous les mots qui commencent par un a suivi par un
nombre quelconque de b }
= {a, ab, abb, abbb, abbbb, ...}
= langage (ab*)
EXPRESSIONS RÉGULIÈRES
Exemples Introductifs
• L3 = {tous les mots de a et de b qui ont au moins 2 lettres, qui
commencent et finissent par a et qui n'ont que des b ou rien à
l'intérieur }
= {aa, aba, abba, abbba, abbbba, ...}
= langage (ab*a)
• L4 = {tous les mots de a et de b dans lesquelles tous les a viennent
avant tous les b}
= {ε, a, b, aa, ab, bb, aaa, aab, abb, bbb, ...}
= langage (a*b*)
Il est à noter que : a*b* ≠ (ab)*
EXPRESSIONS RÉGULIÈRES
Exemples Introductifs
• L5 = {tous les mots sur ∑ = {a, b, c} qui commencent avec un a
ou un c suivi par un nombre quelconque de b}
= langage ((a∪c) b*)
• L6 = {tous les mots de a et de b de longueur 3 exactement}
= langage ((a ∪ b) (a ∪ b) (a ∪ b))
• L7 = {tous les mots de a et de b dans lesquels apparaît au moins
une fois le facteur aaa}
= langage ((a ∪ b)*aaa(a ∪ b)*)
EXPRESSIONS RÉGULIÈRES
Définition
Une expression régulière sur un alphabet ∑ est un mot sur
l'alphabet ∑ ∪ {(,),∪,*, ∅, ε} tel que:
• tout symbole de ∑ ∪{∅, ε} est une expression régulière
• si r1 et r2 sont deux expressions régulières alors :
• (r1) est une expression régulière
• r1r2 est une expression régulière
• r1∪r2 est une expression régulière
• r1* est une expression régulière
EXPRESSIONS RÉGULIÈRES
Définition
L’interprétation d’une expression est définie par les règles
suivantes :
• ε dénote le langage {ε} et ∅ dénote le langage vide
• ∀x ∈ Σ, x dénote le langage {x}
• (r1∪r2) dénote l’union des langages dénotés par r1 et par r2
• (r1r2) dénote la concaténation des langages dénotés par r1 et par r2
• (r*) dénote l’étoile du langage dénoté par r
EXPRESSIONS RÉGULIÈRES
Définition
• Ordre de priorité : l’étoile (*), puis la concaténation, puis
l’union.
• Les opérateurs binaires sont associatifs à gauche.
Exemple :
xy* ∪ y* s’interprète comme ((x(y* )) ∪ (y* ))
EXPRESSIONS RÉ G ULIÈ R ES
• ∅e = e∅ = ∅ • e∪e = e
• ∅* = ε • e∪f = f∪e
• e∪∅ = e • e(f∪g) = ef∪eg
• εe = eε = e • (e∪f)g = eg∪fg
• ε* = ε • (ef)*e = e(fe)*
• (e*)* = e* • (e∪f)* = (e*f)*e*
EXPRESSIONS RÉ G ULIÈ R ES
Exercice:
Montrer que :
1. bb*(a*b* ∪ ε)b = b(b*a* ∪ ε)bb*
2. a* b(c ∪ da* b)* = (a ∪ bc*d)*bc*
EXPRESSIONS RÉ G ULIÈ R ES
Correction:
1) bb*(a*b* ∪ ε)b = b(b*a*b* ∪ b*.ε)b e(f∪g) = ef∪eg
= b(b*a* ∪ ε)b*b (e∪f)g = eg∪fg
Définition
Soit Σ un alphabet. Les langages réguliers sur Σ sont définis
inductivement par :
• {ε} et ∅ sont des langages réguliers
• ∀x ∈ Σ, {x} est un langage régulier
• si L1 et L2 sont des langages réguliers, alors L1 ∪ L2, L1L2, et
L1* sont également des langages réguliers
Tous les langages finis sont réguliers.
LANGAGES RÉGULIERS
Théorème
Un langage L est dit régulier si et seulement s'il existe une
expression régulière qui le génère.
➠ pour prouver qu’un langage est régulier, il suffit de
trouver une expression régulière qui le dénote.
LANGAGES RÉGULIERS
Exemple
Soit l'alphabet ∑={a,b}
L = {ω∈∑*, ω ne contient pas 3b consécutifs}
R = (a ∪ ba ∪ bba)* (ε ∪ b ∪ bb)
LANGAGES RÉGULIERS
Exemple
Le langage de tous les mots qui ont au moins 2a peut-être
décrit par l'expression
(a∪b)*a(a∪b)*a(a∪b)*
Ou bien par l'expression
b*ab*a(a ∪ b)*