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) a 1, a 2,,a Σ : n u = a 1 a 2 a n Σ n est l ensemble des mots de longueur n Σ* = {ε} Σ + où Σ + = n 1 Σ n u Σ* ou bien u = ε ou bien n >0, a 1, a 2,,a Σ : u = a n 1 a 2 a n Σ* 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 : u 0 = ε u i+1 = u i u = u u i i 0. Soient u et v deux mots sur Σ. v est dit facteur (ss mot) de u si u 1, u 2 Σ* t.q. u = u 1 v u 2 de plus si u 1 u 2 ε,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 L 1 L 2 = {u v Σ* / u L 1, v L 2 } l étoile (ou itéré) L* = i 0 L i = {ε} L + où L + = i 1 L i Remarque. - Le langage vide vérifie : L = L = L (Σ*) - * = {ε} - L n 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. 1. 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 a i = ε + a + a 2 + a 3 + = ε + Σ i 1 a i = ε + a + 3. aa* = a*a = a + 4. (a + b) 2 = (a + b)(a + b) = a 2 + ab + ba + b 2 (a + b) 2 est l ens. des mots de longueur 2 Σ = {a,b} Σ* = {a,b}* = ({a} {b})* (a + b)*
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 +)