chap2

publicité
Le monoïde libre (Σ*,.)
(Alphabet Σ, mot, langage)
Alphabet Σ
Un alphabet, noté Σ, est un ensemble fini de symboles.
Chaque symbole de Σ est appelé lettre (ou caractère).
Ex. {0, 1} , {carreau, cœur, pique, trèfle}, {a,b},
{0,1, 2, 3, 4, 5, 6, 7, 8, 9} ,…
Mot
Un mot est une suite finie de lettres de Σ.
(un mot est la concaténation des lettres)
On écrit a.b.c ou abc pour le même mot.
L’opération concaténation est appelée produit
Longueur d’un mot = nombre de ses lettres
Longueur d’une lettre (considéré comme un mot) = 1
u désigne la longueur du mot u.
Un mot u de longueur n est une application de {1,2,…n}
dans Σ où u(i) désigne la ième lettre de u.
Le mot vide est noté ε, il est de longueur 0
Σ* = ∪n≥0 Σn où
Σn = Σ.Σ…Σ (produit n fois) et Σ0 = {ε}
u ∈ Σn (n > 0) ⇔ ∃ a1, a2, …,an ∈ Σ :
u = a1a2 …an
Σn est l’ensemble des mots de longueur n
Σ* = {ε} ∪ Σ+ où Σ+ = ∪n≥1 Σn
u ∈ Σ* ⇔
ou bien u = ε
ou bien ∃ n >0, ∃ a1, a2, …,an ∈ Σ : u = a1a2 …an
Σ* est l’ensemble de tous les mots que l’on peut
construire sur l’alphabet Σ.
(Σ*, .) est un monoïde libre.
Soit u un mot sur Σ. (u ∈ Σ*)
On note par : u0 = ε
ui+1 = ui u = u ui ∀i ≥ 0.
Soient u et v deux mots sur Σ.
v est dit facteur (ss mot) de u si
∃ u1, u2 ∈ Σ* t.q. u = u1 v u2
de plus
si u1u2 ≠ ε ,v est un facteur propre de u
v est un facteur gauche ( ou préfixe) de u si
∃ w ∈ Σ* t.q u = v w
v est un facteur droit (ou suffixe) de u si
∃ w ∈ Σ* t.q u = w v
Morphisme de monoïde
Soient Σ et Σ’ deux alphabets.
ϕ : Σ* Σ’* est un homomorphisme si :
ϕ(ε) = ε
∀ u, v ∈ Σ* ϕ(u v) = ϕ(u) ϕ(v)
Tout homomorphisme est entièrement défini par l’image
des lettres de l’alphabet.
i. e on définit ϕ pour les lettres de Σ
ϕ : Σ Σ’* puis on le prolonge aux mots de Σ*
ϕ̑ : Σ* Σ’* par :
ϕ̑ (ε) = ε et
ϕ̑ (ua) = ϕ̑ (u) ϕ(a) ∀ u ∈ Σ* , ∀ a ∈ Σ
Langage sur un alphabet
Un langage est ensemble de mots
L est un langage sur Σ SSi L ⊆ Σ* (L ∈ ℘(Σ*))
Opérations sur les langages
Sur ℘(Σ*), on définit les opérations suivantes:
les opérations booléennes :
union, intersection, complément
le produit
L1L2 = {u v ∈ Σ* / u ∈ L1 , v ∈ L2}
l’étoile (ou itéré)
L* = ∪i≥0 Li = {ε} ∪ L+ où L+ = ∪i≥1 Li
Remarque.
Le langage vide ∅ vérifie : L ∅ = ∅ L = ∅ ∀ L ∈ ℘(Σ*)
∅* = {ε}
Ln n’est pas l’ensemble des mots de longueur n sauf si L est un ensemble de lettres
c.à d. alphabet
A ne pas confondre le mot vide et l’ensemble vide
Le produit est distributif par rapport à l’union mais pas (en général) pour l’intersection
Σ* est un ensemble infini dénombrable
℘(Σ*) n’est pas dénombrable.
Représentation finie
des langages
langages réguliers et
expressions régulières
Langages réguliers
Définition
Un langage L sur Σ est régulier s’il peut être construit à
partir du ∅ et des singletons {a} (a ∈ Σ) en appliquant
un nombre fini les opérations union, produit et étoile.
Autrement dit :
- ∅ est un langage régulier
- {a} est un langage régulier ∀ a ∈ Σ
- A , B sont réguliers ⇒ - (A ∪ B) est régulier
- (A B) est régulier
- (A*) est régulier
Ex.
- {ε} est régulier du fait que {ε} = ∅*
- {0,1,2,…,9} = {0} ∪ {1} ∪ {2} ∪… ∪ {9}
( Tout ensemble fini est régulier, en part. Σ)
- Ensemble des entiers naturels (sans les zéros inutiles en
tête) est régulier sur
Σ = {0,1,2,…,9}, ce langage est défini comme: {0} ∪
{1,2,…,9} {0,1,2,…,9}*
- Ensemble des entiers relatifs :
{0} ∪ {+,-,ε} {1,2,…,9} {0,1,…,9}*
- ensemble des mots binaires qui sont pairs :
{0,1}* {0}
- ensemble des mots sur {a,b} ayant aba comme facteur:
{a,b}* {aba} {a,b}*
Remarque
Si on désigne par Reg(Σ) la classe des
langages réguliers sur Σ alors Reg(Σ) est
la plus petite classe de langages qui
contient ∅ et {a} (∀ a ∈ Σ) et qui fermé (ou
stable) par union, produit et étoile.
Expression régulière
Les expressions régulières définissent un système de formules qui
simplifient la notation des langages réguliers.
Définition
Une expression régulière (sur Σ ) est une formule qui s’obtient, à partir
de ∅, ε et des lettres de Σ, par un nombre fini d’opérations + ,
produit et étoile.
En d’autres termes :
- ε et ∅ sont des exp. rég.
- ∀ a ∈ Σ, a est exp. reg.
- si e et e’ sont des exp. reg. alors
(e), (e’), (e + e’), (e e’) et (e)* sont des exp. reg.
Ex. ((a (b)*) + ((a) + (b))(a)*)
Précédence des opérateurs: + < produit < étoile pour enlever les
parenthèses. L’exp. reg. précédente s’écrit: ab* + (a + b)a*.
Chaque expression régulière définit un langage
régulier par l’interprétation £ suivante : (ER(Σ)
désigne l’ensemble des expressions régulières)
£ : ER(Σ) Reg(Σ)
α
£(α)
Vérifiant :
£(∅) = ∅ , £(ε) = {ε} , £(a) = {a} ∀ a ∈ Σ
∀ α, β ∈ ER(Σ),
£(α + β) = £(α) ∪ £(β)
£(α β) = £(α) £(β)
£(α*) = (£(α))*
Tout langage régulier est défini par une
expression régulière; i.e.
∀ L ∈ Reg(Σ) , ∃ α ∈ ER(Σ) t.q. L = £(α)
(la démonstration se fait par induction
structurelle des réguliers)
Théorème
Un langage est régulier ⇔ il est défini par
une expression régulière ; i.e.
L ∈ Reg(Σ) ⇔ ∃ α ∈ ER(Σ) t.q. L = £(α)
Ex. α = (a + b)*a est une exp. rég.
£(α) = £((a +b)*a) = £((a + b)*) £(a)
= (£(a + b))* £(a)
= (£(a) ∪ £(b))* £(a)
= ({a} ∪ {b})* {a}
Remarques:
On identifie (souvent) langage régulier et
expression régulière qui le définit en identifiant :
{a} avec a et ∪ avec + et on écrit £(α) = α
Deux expressions régulières sont équivalentes
si elles définissent le même langage.
Ex.
bb*(a*b* + ε)b = b(b*a*b* + b*)b
= b(b*a* + ε)b*b
= b( b*a*) b*b
= b+ a* b+
2.
a* = Σi≥0 ai = ε + a + a2 + a3 + …
= ε + Σi≥1 ai
= ε + a+
3.
aa* = a*a = a+
4.
(a + b)2 = (a + b)(a + b)
= a2 + ab + ba + b2
(a + b)2 est l’ens. des mots de longueur 2
Σ = {a,b} ⇒ Σ* = {a,b}* = ({a} ∪ {b})* ≡ (a + b)*
1.
Identités régulières (équivalences rég.)
- ∅e=e∅=∅
εe=eε=e
- ∅+e=e
e+e=e
- e(f + g) = ef + eg
(e + f)g = eg + ef
- e* = (e*)*
(ef)*e = e(fe)*
- (e + f)* = e* (e +f)* = (e* + f)*
= (e* f)* = (e* f*)*
(Idem pour les langages réguliers en
prenant ∪ à la place de +)
Téléchargement