Chapitre 1

Vocabulaires, mots, langages

1.1      Dfinitions de base

      Vocabulaire

      Mot

      Langage

      Codage

      Algorithme

1.2      Oprations sur les mots

      Prfixe

      Suffixe

      Infixe

.     Image miroir

1.3      Oprations sur les langages

      Oprations ensemblistes

      Concatnation

      Opration puissance

      Opration * (toile de Kleene)

1.4      Expressions rgulires

      Dfinition en intention et dfinition en extension

      Dfinition rcursive

      Exemples

      Lois algbriques sur les expressions rgulires

      Quelques proprits intressantes

      Dfinition arborescente

1.5      Conclusion

 

 

 

Dans ce chapitre, nous prsentons les concepts de base ncessaire la comprhension du reste du cours. Les notions de vocabulaire, de mots et de langages sont introduits. Nous illustrons comment tout traitement informatique est prcd et suivi de phases de dcodage et de codage dont la nature est un traitement sur un (ou plusieurs) langages.

Les oprations de base sur les langages seront prsentes ainsi que la classe des langages rguliers. Les manipulations sur les expressions rgulires seront illustres.

 

Nous supposons connues les dfinitions de base de la thorie des ensembles et de celle des nombres.

 

 

 

1.      Dfinitions de base

1.1.    Vocabulaire

Un vocabulaire est un ensemble fini de signes. Par exemple, il peut sagir dun alphabet (latin, cyrillique, arabe), dun syllabaire (japonais), etc.

 

> Par exemple, on notera : V = {a, b, c} le vocabulaire V compos des lettre a, b et c. On peut aussi avoir :

Vromain = {A, B, C, D, E, F, Z}

Vnombre romain = {I, V, X, L, C, D, M}

Vthai = {, , , , , , , , , , }

Vmorse = {, - }

Vchat = {le, petit, chat, boit, du, lait }

<

1.2.    Mot

Sur cet alphabet, on construit des mots laide de lopration de concatnation. Cette opration est note par le signe : . Soient u, v des mots, alors u . v est un mot.

 

> Par exemple :      a.b ab

ab . c abc                              a . bc abc                                                <

 

La longueur dun mot est le nombre dՎlments du vocabulaire le composant. e est le mot vide. Sa longueur est nulle, car il nest compos daucun lment du vocabulaire.

 

> Par exemple, le mot  ab  a une longueur gale 2.  e  a une longueur gale 0.  abcdefabcdef  a une longueur de 12.

<

 

Soient u et v deux mots de longueur lu et lv alors la longueur de  u . v  est l+ lv. On peut dfinir la fonction  longueur  par rcurrence :

 

1.3.    Langage

Soit V un vocabulaire. Lensemble des mots possibles sur V est not V*.

 

> Soit V = {a, b} alors :

V* = {e, a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, } <

 

On note le langage vide (il ne contient aucun mot). Le mot vide e est bien un mot ne pas confondre avec .

 

V* est un monode. Un monode est un ensemble muni dune opration associative et possdant un lment neutre. Ici, lopration associative est la concatnation . et lՎlment neutre est e.

 

> Par exemple : V = {a, b}

a.(a.b) = (a.a).b                       et dune faon gnrale :

si u V* et x V alors x.u = u.x et appartient V*

si u, v, w V* alors u.(v.w) = (u.v). w et appartient V*

 

de plus :

a.e = e.a = a                              et dune faon gnrale :

si u V* alors u.e = e.u = u                                                                        <

 

On notera V+, lensemble V* priv de e. Autrement dit, nous avons V* = V+ {e}. Intuitivement, V+ est lensemble de tous les mots possibles sur V et dont la taille est suprieure ou gale 1.

 

Un langage est dfini sur un vocabulaire V et constitue un sous-ensemble de V*.

 

> Par exemple, une langue utilisant lalphabet latin, comme le Franais, est un sous-ensemble des mots possibles sur le vocabulaire V = {a, , z, A, , Z, , ?, }.

 

Lensemble des entiers L est reprsent par le langage dfini sur V = {0, 9} o aucun mot de commence par 0 part 0 lui-mme. De faon plus formelle, L = {0} ensemble des mots de V+ ne commenant pas par 0.                                            <

1.4.    Codage

Soit deux vocabulaires V1 et V2. Un codage est une fonction de V1* dans V2*. Le codage peut sappliquer sur le vocabulaire et tre tendu au langage. Dans ce cas, il sagit dun codage fixe.


 

 

 

 

 

 


Un codage f est dcodable que si f est une fonction injective. Une fonction f est injective si tout lment de limage de f a un antcdent unique.

 

> Par exemple, soit V1 = {a, b, c} et V2 = {1, 2, 3} et les rgles de codage suivantes :

a 0                         b 1                        c 2

Alors le mot  bab  est cod  101 . Il est facile de voir que tout mot de V1 est cod de faon unique. Ce codage est donc dcodable.

On remarquera que dans ce cas f tant bijective, la fonction inverse f-1 est aussi un codage dcodable.                                                   <

 

Il existe des fonctions de codage partir desquelles on ne peut pas dduire facilement la fonction de dcodage. Cette fonction de dcodage nest en fait connue que par les personnes autorise dcoder les messages. Par contre, toute personne peut coder un message. De telles fonctions sont utilises pour le cryptage de donnes.

 

Dune faon gnrale, le codage et le dcodage constituent des oprations fondamentales du traitement de linformation.

 

> Par exemple, lopration raliser est la somme de deux nombres a laide dun additionneur binaire. Le vocabulaire est V = {0, , 9, +}.

 

Le mot trait est par exemple :  12+4 . Le code de 12 est 1100. Le code de + est 111111. Le code de 4 est 0100.

Le rsultat du traitement (que nous nexplicitons pas ici) est 10000. Le dcodage de 10000 donne 16. <

 

Exercice  Codage Morse

La table ci-dessous dcrit un codage de V1* sur V2*. En Morse, un message se termine toujours par le symbole de fin de message  # . Une pause (note /) est toujours insre entre chaque caractre transmis sous forme code.

 

c

Code

Son

 

c

Code

Son

A

. _

didah

 

U

. . _

dididah

B

_ . . .

dahdididit

 

V

. . . _

didididah

C

_ . _ .

dahdidahdit

 

W

. _ _

didahdah

D

_ . .

dahdidit

 

X

_ . . _

dahdididah

E

.

dit

 

Y

_ . _ _

dahdidahdah

F

. . _ .

dididahdit

 

Z

_ _ . .

dahdahdidit

G

_ _ .

dahdahdit

 

1

. _ _ _ _

didahdahdahdah

H

. . . .

didididit

 

2

. . _ _ _

dididahdahdah

I

. .

didit

 

3

. . . _ _

didididahdah

J

. _ _ _

didahdahdah

 

4

. . . . _

dididididah

K

_ . _

dahdidah

 

5

. . . . .

dididididit

L

. _ . .

didahdidit

 

6

_ . . . .

dahdidididit

M

_ _

dahdah

 

7

_ _ . . .

dahdahdididit

N

_ .

dahdit

 

8

_ _ _ . .

dahdahdahdidit

O

_ _ _

dahdahdah

 

9

_ _ _ _ .

dahdahdahdahdit

P

. _ _ .

didahdahdit

 

0

_ _ _ _ _

dahdahdahdahdah

Q

_ _ . _

dahdahdidah

 

.

. _ . _ . _

didahdidahdidah

R

. _ .

didahdit

 

,

_ _ . . _ _

dahdahdididahdah

S

. . .

dididit

 

?

. . _ _ . .

dididahdahdidit

T

_

dah

 

#

. _ . _ .

Didahdidahdit

 

Explicitez V1 et V2.

Que peut-on dire des mots de V1* et des mots de V2* ? Ce codage est-il dcodable ? Justifier votre rponse.

 

Un apprenti tlgraphiste relev le message suivant, en oubliant dindiquer les pauses :

. . . _ _ _ . . . _ . . _ . _ _ . . . _ . _ . _ . _ . _ _ _ . . _ . _ . . . . _ . _ .

Pouvez-vous laider le transcrire ? Comment sy prendrait-on avec une machine ?                                                n

 

Dune faon gnrale, un traitement informatique consiste rsoudre les points suivants :

a) Reconnaissance des mots (cest--dire encore codage des mots) ;

b) Traitement de ces mots sous forme code ;

c) Dcodage du rsultat.

 

Ici, nous avons pris le point de vue  humain . Du point de vue de la machine nous aurions :

a) Reconnaissance des mots (cest--dire dcodage des mots) ;

b) Traitement de ces mots sous forme dcode ;

c) Encodage du rsultat.

 

Retenons simplement que linformatique constitue essentiellement une question de :

Codage Traitement Dcodage

1.5.    Algorithme

Un algorithme est une suite finie doprations permettant de rsoudre un problme (cest--dire de rpondre une question).

 

Exercice Algorithme dEuclide permettant de trouver le pgcd (plus grand dnominateur commun) de deux nombres.

 

Rponses

Les proprits du pgcd de u et v sont :

Si u ³ v alors u = vq + r avec r >0

Si r = 0 alors pgcd(u, v) = v

Sinon (cest--dire si u < v), pgcd (u, v) = pgcd(v, r) car un diviseur de u doit tre un diviseur de qv et de r. Comme un diviseur de v est un diviseur de qv, un diviseur de u et v doit tre une diviseur de v et r.

 

Algorithme dEuclide 

Soit u et v deux entiers, calculer le pgcd(u, v)

              Si u ³ v alors

                           Si u est divisible par v (reste(u, v) = 0) alors

                                         rsultat = v

                           Sinon rsultat = pgcd(v, reste(u, v))

              Sinon rsultat = pgcd(v, u).

 

Calculons le pgcd de 120 et 462 :

u = 120 et v = 462

u < v donc rsultat = pgcd(462, 120)

u > v et reste(462, 120) = 102 donc rsultat = pgcd(120, 102)

u > v et reste(120, 102) = 18 donc rsultat = pgcd(102, 18)

u > v et reste(102, 18) = 12 donc rsultat = pgcd(18, 12)

u > v et reste(18, 12) = 6 donc rsultat = pgcd(12, 6)

u > v et reste(12, 6) = 0 donc rsultat = 6

n

 

On peut aussi concevoir des algorithmes sur des mots.

 

Exercice Codes de Csar

Considrons le vocabulaire V = {A, B, C, Z} et les fonctions de codage :

hi : V V avec 0 i 25

associant chaque lment de V, lՎlment de V situ i positions plus loin dans le vocabulaire. La fin de V est continu cycliquement par le dbut.

Par exemple : h2(A) = C, h7(Y) = F, h25(Z) = Z.

 

La table ci-dessous (appele table de Vigenre) donne la dfinition de hi pour son ime rang :

 

 

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

0

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

1

B C D E F G H I J K L M N O P Q R S T U V W X Y Z A

2

C D E F G H I J K L M N O P Q R S T U V W X Y Z A B

3

D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

4

E F G H I J K L M N O P Q R S T U V W X Y Z A B C D

5

F G H I J K L M N O P Q R S T U V W X Y Z A B C D E

6

G H I J K L M N O P Q R S T U V W X Y Z A B C D E F

7

H I J K L M N O P Q R S T U V W X Y Z A B C D E F G

8

I J K L M N O P Q R S T U V W X Y Z A B C D E F G H

9

J K L M N O P Q R S T U V W X Y Z A B C D E F G H I

10

K L M N O P Q R S T U V W X Y Z A B C D E F G H I J

11

L M N O P Q R S T U V W X Y Z A B C D E F G H I J K

12

M N O P Q R S T U V W X Y Z A B C D E F G H I J K L

13

N O P Q R S T U V W X Y Z A B C D E F G H I J K L M

14

O P Q R S T U V W X Y Z A B C D E F G H I J K L M N

15

P Q R S T U V W X Y Z A B C D E F G H I J K L M N O

16

Q R S T U V W X Y Z A B C D E F G H I J K L M N O P

17

R S T U V W X Y Z A B C D E F G H I J K L M N O P Q

18

S T U V W X Y Z A B C D E F G H I J K L M N O P Q R

19

T U V W X Y Z A B C D E F G H I J K L M N O P Q R S

20

U V W X Y Z A B C D E F G H I J K L M N O P Q R S T

21

V W X Y Z A B C D E F G H I J K L M N O P Q R S T U

22

W X Y Z A B C D E F G H I J K L M N O P Q R S T U V

23

X Y Z A B C D E F G H I J K L M N O P Q R S T U V W

24

Y Z A B C D E F G H I J K L M N O P Q R S T U V W X

25

Z A B C D E F G H I J K L M N O P Q R S T U V W X Y

 

On considre lextension de hi sur V* : Hi : V* V* avec 0 i 25

Par exemple : Hi(ABC) = CDE

 

Algorithme de codage dun mot selon le code de Csar : soit w V* et i un entier. Par ailleurs, on considre que tableV contient la table ci-dessus.

But : calculer Hi(w)

              Si longueur(w) > 0 alors

                           Soit c = premier(w)

                           Rsultat = tableV [rang(c), i] . Hi(sauf-premier(w))

              Sinon rsultat = e

 

       La fonction premier(w) retourne le premier caractre du mot w. Par exemple : premier(abc) = a

       La fonction sauf-premier(w) retourne le mot w priv du premier caractre. Par exemple : sauf-premier(abc) = bc

       TableV[i, j] retourne lՎlment de la table se trouvant la ime colonne et la jime ligne. Par exemple : TableV[3, 4] = F

       La fonction rang(c) retourne la position du caractre c dans le mot  ABCDEFGHIJKLMNOPQRSTUVWXYZ . Il sagit donc de la position de ce caractre dans lalphabet. Par exemple : rang(E) = 5

n

 

On peut aussi concevoir des algorithmes travaillant la fois sur des nombres et sur des mots.

 

Exercice Passage dun entier cod en base dcimale un codage en base binaire.

Soit n lentier coder. Lide est de diviser successivement n par 2. chaque tour, on concatne le reste (0 ou 1) gauche de la forme code courante. On sarrte quand n vaut 0.

Soit n = 57.

57 / 2 = 28 reste 1 donc rsultat = 1

28 / 2 = 14 reste 0 donc rsultat =  0 . 1 = 01

14 / 2 = 7 reste 0 donc rsultat = 0 . 01 = 001

7 / 2 = 3 reste 1 donc rsultat = 1 . 001 = 1001

3 / 2 = 1 reste 1 donc rsultat = 1 . 1001 = 11001

1 / 2 = 0 reste 1 donc rsultat = 1 . 11001 = 111001

 

n = 0 donc la forme binaire de 57 est 111001.

 

Algorithme de conversion dun entier en base dcimale une forme en base binaire : soit n un entier.

But : calculer codage10vers2(n)

              Si n > 0 alors

                           Soit r = reste (n, 2)

                           Soit q = quotient (n, 2)

                           Si r = 1 alors

                                         rsultat = codage10vers2(q) . 1

                           Sinon (r = 0) rsultat = codage10vers2(q) . 0

              Sinon rsultat = e

n

 

Un algorithme doit tre constitu dun nombre fini doprations. Ceci ne signifie pas que lalgorithme se termine ncessairement.

 

> Exemple : numration de tous les nombres premiers.

Il est clair quՎtant donn quil y a une infinit de nombres premiers, un algorithme rsolvant ce problme ne se terminera jamais. <

 

Selon le problme pos, un algorithme peut ou non se terminer.

 

> Exemple : savoir sil existe trois dcimales conscutives de dont la somme vaut un n entier fix. <

2.      Oprations sur les mots

2.1.    Prfixe

Un mot w1 est prfixe dun mot w2, sil existe un mot w3 tel que w1.w3 = w2. Un mot est toujours son propre prfixe (dans ce cas w3 = e). e est prfixe de tout mot (e.w2 = w2).

2.2.    Suffixe

Un mot w1 est suffixe dun mot w2, sil existe un mot w3 tel que w3.w1 = w2. Un mot est toujours son propre suffixe (dans ce cas w3 = e). e est suffixe de tout mot (w2.e = w2).

2.3.    Infixe

Un mot w1 est infixe dun mot w2, sil existe deux mots w3 et w4 tels que w3.w1.w4 =  w2. Un mot est toujours son propre infixe (dans ce cas w3 = w4 = e). e est infixe de tout mot (w3. e.w4 = w2).

 

> Par exemple : Pour le mot abbba, nous avons :

 

Prfixes

Infixes

Suffixes

e

e

e

a

a

a

ab

b

ba

abb

ab

bba

abbb

bb

bbba

abbba

ba

abbba

 

abb

 

 

bbb

 

 

bba

 

 

abbb

 

 

bbba

 

 

abbba

 

<

2.4.    Image miroir

Limage miroir w~ dun mot w est la lecture de droite gauche du mot w.

 

> (abc)~ = cba                           e~ = e                                          a~(bc)~ = acb

<

 

On a toujours : w~~ = w

 

Exercice : Dfinissez loprateur ~ par rcurrence.

 

Rponse :

 

n

 

Un mot w est un palindrome si w~= w.

 

> (aba)~ = aba                          (abccba)~ = abccba

<

 

Exercice : Soit V = {a, b}. Soit L le langage tels que w L puisse tre dcompos comme w = u . u~ avec u V*.

Que peut-on dire sur L ? et sur L ?

 

Soit L = {w | w = u . x . u~ avec x {a, b} et u V*}.

Que reprsente L ?

 

Que peut-on dire sur lintersection entre L et L ? Que se passe-t-il si x {e, a, b} ?

n

3.      Oprations sur les langages

Nous rappelons ici que lopration de concatnation est associative. LՎlment neutre pour la concatnation est e.

 

> On a donc : (ab . (ac . bd)) = ((ab . ac) . bd) = abacbd

et

u . e = e . u = u                                            <

3.1.    Oprations ensemblistes

Un langage est une partie de V*, il sagit dun ensemble de mots. Les oprations suivantes sont donc dfinies :

Union

Intersection

Complmentation

 

On gardera lesprit que L V* et que :

L V* = L

L V* = V*

 

L =

L = L

 

On notera L le complmentaire de L : L = V* - L

 

On se rappellera que :

L = L

L L = L L =

L L = L L = V*

(L1 L2)

 

(L1 L2)

 

 

 


Dautre part, nous avons :

L1 L2 (L1 L2)

Mais, nous avons :

L1 L2 = (L1 L2)

L1 L2 = (L1 L2)

 

 

 

Remarquons que lintersection peut tre exprime laide de lunion et du complmentaire :

L1 L2 = (L1 L2)

3.2.    Concatnation

On peut tendre lopration de concatnation aux ensembles en gnral et donc aux langages en particulier.

 

Si L1 et L2 V* et a V alors :

a . L1 = {a . w | w V}

L1 . L2 = { w1 . w2 | w1 L1, w2 L2 }

 

Exercice : Soit L le langage sur V = {a, b} dont les mots contiennent un nombre pair de a.

1) Que peut-on dire sur a . L ? Sur L . a ?

2) Que peut-on dire sur L ? Sur L? Sur (L2) ? Et sur (L)?

3) Avons nous (L2) = (L)2 ?

 

Rponses :

Tout dabord, jouons un peu avec L. On peut commencer numrer les mots de L par taille croissante (et par nombre de a dcroissant). On a donc L = {e, b, aa, bb, baa, aba, aab, bbb, aaaa, aaaab, aaaba, aabaa, abaaa, baaaa, bbaa, baba, baab, abab, aabb, }.

On remarquera que toutes les tailles de mots sont reprsentes (on peut construire des mots de toutes les tailles avec uniquement des b)

 

1) (a . L) contient tous les mots de L o un  a  a t concatn gauche. Le nombre de a est donc impair. Il sagit donc des mots ayant un nombre impair de a et commenant par a.

Idem pour (L . a), si ce nest que les mots contiennent un nombre impair de a se terminent par a.

 

2) L est le langage dont les mots contiennent un nombre impair de a. L = {a, ab, ba, aaa , abb, bab, bba, aaab, aaba, abaa, baaa, }. Comme prcdemment toutes les tailles de mot (sauf 0) sont reprsentes.

 

L2 est lensemble des mots w1w2 ou w1, w2 L. Clairement, le nombre de a des mots de L2 est pair (laddition de deux nombres pairs donne un nombre pair).

Donc L2 L.

 

Si on essaye dՎnumrer les mots de L2, on peut, pour chaque mot de L1, concatner lensemble L :

L2 = (e . L) (b . L) (aa , L) (bb . L) (baa . L) (aba . L) (aab . L)

On remarque alors que le premier terme (e . L) = L. Donc, a :

L2 = L (b . L) (aa , L) (bb . L) (baa . L) (aba . L) (aab . L)

Donc L L2.

 

Si L2 L et L L2 alors         L = L2

 

Par suite (L2)  = (L) = L

 

3) Nous avons : (L2) = L et (L)= (L) . (L)

La concatnation de deux mots dont le nombre de a est impair forme un mot dont le nombre de a est pair (mais non nul). Un tel ensemble est clairement L priv du mot vide. Donc :

(L)= (L) . (L) = L - e

A-t-on L - e = L ?

Clairement aa L - e, mais aa L.

 

Donc (L2¹ (L)2

n

 

On remarquera que, dans le cas gnral, on ne peut rien dire sur :

(L2) = (L)(L) ?

 

Exercice : Vrifier lassertion ci-dessus.

 

Cherchons un langage simple qui ne vrifie pas la proprit.

Choisissons L = {a}. Alors L = V* - {a}.

Donc L2 = {aa}.

Donc (L2) = V* - {aa}.

Or L = V* - {a}, donc (L)(L) = (V* - {a})(V* - {a})

Or aa (V* - {a})(V* - {a}). En effet : aa = e.aa

On a trouve un mot qui appartient (L2) et pas (L)(L)

Donc dans ce cas (L2) (L)(L).

 

Cherchons un langage qui vrifie la proprit.

Choisissons L = . Alors L = V*

Donc L2 = . = .

Donc (L2) = V*

Or L = V*, donc (L)(L) = V* . V* = V*

Donc dans ce cas (L2) = (L)(L).

n

3.3.    Opration puissance

Soit U un ensemble quelconque, nous avons par dfinition :

U0 = {e}

Un = U . Un-1 = Un-1 . U

 

Donc en particulier sur un langage L, nous avons :

L0 = {e}

Ln = L . Ln-1 = Ln-1 . L

 

>  Ainsi pour un langage L nous avons : L3 = L . L . L = LLL.

Si L est le langage sur V = {a, b} dont les mots contiennent un nombre impair de a, alors L2 = LL ne contient que des mots ayant un nombre pair de a. <

 

Donc en particulier sur un mot w, nous avons :

w0 = e

wn = w . wn-1 = wn-1 . w

 

> Ainsi : w3 = www                                 (abc)4 = abcabcabcabc

<

3.4.    Opration * (toile de Kleene)

Par dfinition, pour tout ensemble U, nous avons :

 

Cette dfinition est donc valable pour tout langage L. En particulier sur un vocabulaire V, nous avons :

V0 = {e}

V1 = V . {e} = V = mots de longueur 1

V2 = V . V  = mots de longueur 2

Vn = V . Vn-1 = V n-1 . V   = mots de longueur n

Cest--dire :           

V* est lensemble des mots de toutes les longueurs possibles, cest donc lensemble de tous les mots possibles.

4.      Expressions rgulires

4.1.    Dfinition en intention et dfinition en extension

Pour dfinir un langage, il est ncessaire de disposer dun moyen de description des mots de ce langage. La premire mthode consiste numrer les mots de ce langage. Cest ce quon appelle une dfinition en extension.

Cette mthode est trs lourde et ne permet pas de dfinir des ensembles infinis.

 

On peut aussi dfinir un langage par la description des proprits (ou du comportement) que doivent avoir les mots de ce langage. Cest ce quon appelle une dfinition en intention.

Il est possible de dcrire certains types de proprits laide dun autre langage. Ce mtalangage est dabord dcrit puis une interprtation des mots de ce mtalangage sera donne.

 

4.2.    Dfinition rcursive

Soit V un vocabulaire dans lequel les symboles de M = {+, ., *, (, ), , e} napparaissent pas. Une expression rgulire sur V sera dfinie comme un mot sur V = V M.

Ces mots sont dfinis rcursivement de la faon suivante :

      est une expression rgulire et reprsente le langage vide ;

      e est une expression rgulire et reprsente le langage contenant le mot vide ;

      w V* est une expression rgulire et reprsente le langage {w}

      si A et B sont deux expressions rgulires reprsentant les langage LA et LB alors (A + B) est une expressions rgulire reprsentant le langage LA LB.

      si A et B sont deux expressions rgulires reprsentant les langages LA et LB alors (A . B) est une expression rgulire reprsentant le langage LA . LB.

      A* est une expression rgulire reprsentant le langage LA avec :

 

      Lorsquil ny a pas dambigut, les parenthses ou les points peuvent tre supprims.

 

Un langage qui peut tre dcrit par une expression rgulire est appel langage rgulier. On remarquera que tous les langages possibles ne sont pas rguliers.

 

Exercices

Essayez de trouver quelques langages qui nont pas lair rguliers.

 

Rponse

L sur V = {a, b} o il y a le mme nombre de a que de b.

La dmonstration (un peu complique) consiste montrer quil faudrait une union infinie dexpressions rgulires pour dcrire L.

n

 

Exercices

Trouver une classe de langages incluse dans celle des langages rguliers.

Rponse

La classe des langages finis (cest--dire ayant un nombre fini de mots) est incluse dans celle des langages rguliers.

n

 

4.3.    Exemples

> Les nombres entiers sont reprsents par les mots du langage dfinis par lexpression rgulire :

 0 + (1+2+3+4+5+6+7+8+9).(1+2+3+4+5+6+7+8+9)* <

 

Une extension des expressions rgulires est parfois dfinie avec une dfinition de plage de caractres (entre crochets).

 

> Par exemple : 0 + [1-9].[0-9]*

 

Le langage compos alternativement de a et de b peut tre dcrit par lexpression rgulire :

(ab)*

 

Le langage compos alternativement dun a et dun nombre quelconque de b peut tre dcrit par lexpression rgulire :

a(b)* = ab*                                                                    <

 

En gnral, on prfrera rserver lutilisation du symbole + pour lunion. On crira donc plutt aa* (ou a*a) que a+.

aa* = a*a correspond au langage dont les mots ne sont composs que de a.

 

(a*b*)* = (a + b)* = V* si V = {a, b}

 

Exercice       Dmontrer lՎgalit prcdente

Rponse

Clairement nous avons                           (1)             a*b* a + b.

En effet, avec lexpression rgulire a*b* on dcrit (entre autres) les mots a et b.

De (1), on dduit                                        (2)             (a*b*)* (a + b)*

Or (a + b)* = V* est lensemble de tous les mots possibles, donc il ne peut pas exister de mots non inclus dans V*, donc (a*b*)* = (a + b)*

n

 

Exercice       Dmontrer que           L1 L2 Þ L1* L2*

lments de rponse :

La dmonstration peut se faire en plusieurs tapes.

(1) Dmontrer que si L1 L2 et  L3 L4 alors L1 . L3 L2 . L4

(2) Dduire par rcurrence de ce qui prcde que si L1 L2 alors (L1)n (L2)n

(3) Dduire de ce qui prcde en identifiant terme terme que si L1 L2 alors

              ( (L1)0 + (L1)1 + (L1)2 + (L1)3  + ) ( (L2)0 + (L2)1 + (L2)2 + (L2)3  + )

(4) Conclure que si L1 L2 alors L1* L2*

n

 

Exercice avons-nous            L1 L2 L1* L2*           ?

Rponse

On peut exhiber un contre-exemple, par exemple

a* e* Þ a e ce qui est clairement faux.

Donc dans le cas gnral, nous navons pas L1 L2 L1* L2*

 

Est-ce pour autant toujours faux ? Non, car on peut exhiber un exemple :

a* (a*)* Þ a a* ce qui est clairement vrai.

n

 

4.4.    Lois algbriques sur les expressions rgulires

 

  ( + R)      (R + ) R     lment neutre de lunion

  (e . R)      (R . e) R                       lment neutre de la concatnation

  ( . R)      (R . )       lment absorbant de la concatnation

  R + S      S + R

  R + (S + T)      (R + S) + T

  R . ( S . T)      (R . S) . T

  R . (S + T)      (R . S) + (R . T)

  ( S + T) . R      (S . R) + (T . R)

  R + R      R

  *      e

  R . R*      R* . R R+

  R . R* + e      R*

 

Exercice Justification de 7

Rponse Par la mthode de la double inclusion.

 

Soit x L(R.(S+T)) Þ x est de la forme : x = ry avec x L(R) et y L(S+T).

y L(S+T) Þ soit y L(S), soit y L(T), soit y L(S) et y L(T)

y L(S) Þ x = ry L(RS) Þ x L(RS+RT)

y L(T) Þ x = ry L(RT) Þ x L(RS+RT)

Donc x L(R.(S+T)) Þ x L(RS+RT)) et L(R.(S+T)) L(RS+RT))

 

Rciproque

x L(RS+RT)) Þ soit x L(RS), soit x L(RT), soit x L(RS) et x L(RT)

x L(RS) Þ x = ry et r L(R) et y L(S)  Þ y L(S+T) Þ x = ry L(R.(S+T))

x L(RT) Þ x = ry et r L(R) et y L(T)  Þ y L(S+T) Þ x = ry L(R.(S+T))

Donc x L(RS+RT)) Þ x L(R.(S+T)) et L(RS+RT)) L(R.(S+T))

 

(L(R.(S+T)) L(RS+RT)) et L(RS+RT)) L(R.(S+T)) )

Þ L(RS+RT)) = L(R.(S+T))

n

 

Exercice Dmontrer que a* = e + aa*

Rponse

 

a*             = a0 + a1 + a2 + a3 + a4 +

                  = e + a1 + a2 + a3 + a4 +

                  = e + a(a0 + a1 + a2 + a3 + a4 + )

                  = e + a(a*)

                  = e + aa*

 

Cette dmonstration est valable pour toutes expressions rgulires (point 12) :

R* = e + RR*

 

On remarquera que lon peut aussi bien factoriser a droite ce qui donne :

a*             = a0 + a1 + a2 + a3 + a4 +

                  = e + a1 + a2 + a3 + a4 +

                  = e + (a0 + a1 + a2 + a3 + a4 + )a

                  = e + (a*)a

                  = e + a*a

On en dduit que aa* = a*a

 

Dune faon gnrale R* = e + RR* = e + R*R

n

 

Exercice : Justification de *      e

Rponse :

*   =      0 + 1 + 2 + 3 +

                  e + + 2 + 3 +

Dmontrons par rcurrence que n = pour n>0.

Cas de base : 1 =

Rcurrence : Supposons n = vraie. Nous avons n+1 = n . = . = . cqfd

 

Donc * = e + + + + = e + = e

n

 

4.5.    Quelques proprits intressantes

Dans ce qui suit X et Y sont des expressions rgulires.

 

X(YX)* = (XY)*X

 

Dmonstration : faire en exercice

 

n

 

(XY)* = e + X(YX)*Y

 

Dmonstration : faire en exercice

 

n

 

(X+Y)* = X*(YX*)*

 

Dmonstration par double inclusion

a) (X+Y)* X*(YX*)*

Soit w (X+Y)*

Donc $ n ³ 0 et z1 zn (X+Y) tq w = z1..zn

Or zi = xy tq xi X* et y Y.

Donc w = x0 . y1 . x1 . . yn . xn                       avec xi X* et yi Y

 

Donc w X*(YX*)*

Donc (X+Y)* X*(YX*)*

 

b) Rciproque (X+Y)* X*(YX*)* faire en exercice

n

 

(X+Y)* = (X*Y)*X*

 

Dmonstration :

(X+Y)* = X*(YX*)* et x(yx)* = (xy)*x

donc si x = X* et y = Y nous avons X*(YX*)* = (X*Y)*X* = (X+Y)*

n

 

X* = (e + X + + Xn-1)(Xn)* pour n > 1

 

Dmonstration : faire en exercice

n

 

(a*)* = a*

 

Dmonstration : par double inclusion

1) Dmontrons (a*)* a*

(a*)*        = a*0 + a*1 + a*2 + a*3 + a*4 +

                  = e + a* + a*2 + a*3 + a*4 +                a*

 

2) (a*)* a*

Dmontrons par rcurrence que (e + a1 + a2 + ) (e + a1 + a2 + )n pour n>0

Pour n=1, la proprit est vraie (e + a1 + a2 + ) (e + a1 + a2 + )1

Supposons, le proprit vraie pour n, lest-elle pour n+1 ?

(e + a1 + a2 + ) (e + a1 + a2 + )n.(e + a1 + a2 + ) est vrai car

L1 L3 et L2 L4 alors L1L2 L3L4

or ici        L1 = (e + a1 + a2 + ) L3 = (e + a1 + a2 + )n

                  L2 = e L4 = (e + a1 + a2 + )

Donc nous avons (e + a1 + a2 + ) (e + a1 + a2 + )n+1 pour n>0  cqfd

 

(a*)*        = (a0 + a1 + a2 +  )*

                  = (e + a1 + a2 + )0 + (e + a1 + a2 + )1 + (e + a1 + a2 + )2 +

                  = e + a1 + a2 +

 

n

 

4.6.    Dfinition arborescente

Une arborescence est un graphe orient, o chaque point diffrent du point nomm  racine  a un et un seul antcdent. La racine na aucun antcdent. Un point est en gnral appel  nud .


 


La structure syntaxique dune expression rgulire sur V est une arborescence dfinie par rcurrence de la faon suivante :

 

Cas de base : Si lexpression rgulire est dfinie soit par un caractre x (x V), soit par les symboles e ou f, alors lexpression constitue la structure syntaxique.

x                                  e                                  f

 

Rcurrence : Si lexpression rgulire est un oprateur (unaire) portant sur une expression rgulire A ou un oprateur (binaire) portant sur deux expressions rgulires A et B. Soit respectivement :

A*                                A . B                            A + B


Alors, les structures syntaxiques de lexpression rgulire sont respectivement :

 



> Par exemple, lexpression rgulire (0 + 1)* . 11(1 + 01)* . (e + 0) a pour structure syntaxique :

 


En prenant comme prcdence des oprateurs :

(((0 + 1)*) . (1.1.(((1 + (0.1))*) . (e + 0))))                                               <

 

Nous appellerons occurrences doprateurs le nombre doprateurs prsents dans la structure syntaxique. Nous appellerons occurrences datomes, le nombre dՎlments de V {f, e} prsents dans la structure syntaxique. Nous appellerons occurrences de symboles la somme des occurrences doprateurs et doccurrence datomes.

 

> Dans lexpression rgulire prcdente, il y a 10 occurrences doprateurs et 9 occurrences datomes.                                                     <

 

On remarquera que les atomes sont les feuilles (nuds terminaux) de la structure arborescente et que les oprateurs sont les autres nuds.

 

5.      Conclusion

Ce chapitre a introduit les notions fondamentales de base que sont les mots, les vocabulaires, les langages. Nous avons illustr comment tout traitement informatique est prcd par une phase de codage et se termine par une phase de dcodage. Ces deux phases constituent un traitement sur des langages. Un algorithme est une suite finie dinstructions permettant deffectuer un traitement. Parmi, les traitements envisags on aura bien sur les phases de codage et dcodage.

Les langages sont des ensembles (potentiellement infinis) de mots et ce titre acceptent les oprations ensemblistes. La description densemble de cardinalit infini ne peut se faire quen intention.

Les expressions rgulires constituent un formalisme intressant pour dcrire en intention la classe des langages rguliers. Nous avons introduit certains des proprits et des oprateurs associs aux expressions rgulires.

 

 

 


Exercices

1.1.      Soit le vocabulaire V = {a, b, c}. numrer quelques mots de V*. quoi correspond V* ?

1.2.      Soit L1, le langage sur V = {a, b, c} compos dun nombre pair de a. Donner des mots de L1.

1.3.      Soit L2, le langage sur V = {a, b, c} compos dun nombre impair de a. Donner des mots de L2.
Que peut-on dire de L1
L2 ? Et de L1 L2 ? Quid de V* L1 ?

1.4.      Soit V = {0, 1}. Soit L lensemble des mots sur V et ne commenant pas par 0. Donnez des exemples de mots de L. quoi correspond L ?
Soit L = L
{0}. quoi correspond L ?

1.5.      Soit les rgles de codage suivantes de V1* sur V2* : a 0, b 11
Sagit-il dun codage dcodable ? Pourquoi ?
Mme question pour les rgles a
0, b 01

1.6.      Mme question que prcdemment pour a 0, b 1, c 01.
Que ce passe-il si le codage sapplique sur L2 qui est (V* - L1) ou L1 est le langage dont les mots contiennent au moins une fois  ab  ?

1.7.      Soit V = {a, b, r, c, d}.
Soit L lensemble des mots suivants : {abra, brac, acad, adab, dabra}.
Trouver un mot le plus court possible sur V* contenant les mots de L.

Solution immdiate mais non minimale : abracadabra (l = 11)

Solution minimale :
{brac,acad, adab, dabra} {acad, adab, dabrac}
                                       
{acad,  adabrac} {acadabrac}
                                       
acadabrac (l = 9).

1.8.      Trouver un algorithme qui pour un ensemble fini L de mots sur V*, calcule le mot le plus court possible sur V* contenant tous les mots de L.
(cet exercice est TRES difficile).

1.9.      L est le langage sur V = {a, b} dont les mots contiennent au moins une fois  ab .
Que peut-on dire sur L ?

L est le langage sur V = {a, b} dont les mots contiennent une fois  ab .
Que peut-on dire sur L ?

1.10.    Soit L un langage quelconque sur V. Que peut-on dire sur les expressions suivantes :
 L
L                          V* L  V* L                       L L                       L L ?

1.11.    Soit L le langage sur V = {a, b} ayant un nombre pair de a et quelconque de b. Que peut-on dire sur les langages suivants :
a.L                L.a
L0                  L1              L2              Ln              L*
(a.L)0           (a.L)1      (a.L)2       (a.L)n       (a.L)*
(L.a)0           (L.a)1       (L.a)2       (L.a)n       (L.a)*
a.L0              L1              a.L2          a.Ln          a.L*

1.12.    Rpondez aux questions prcdentes avec les complmentaires des langages indiqus.

1.13.    Soit L, le langage sur {x, y} o les mots ont un nombre pair de x et quelconque de y. Donner une expression rgulire dcrivant L.
Idem pour L.

1.14.    Soit L, le langage sur {x, y, z} o les mots ont un nombre impair de x, impair de y et pair de z. Donner une expression rgulire dcrivant L.
Idem pour L.

1.15.    Soit L, le langage sur {x, y} o chaque occurrence de y est prcde et suivi par une occurrence de x. Donner une expression rgulire dcrivant L.
Idem pour L.

1.16.    Montrer que tout langage fini peut tre dcrit laide dune expression rgulire.

1.17.    Dcrire les langages reprsents par les expressions rgulires suivantes :
a.                  (z + y)*x                   b.              xx* + yy*
c. (xx*)(yy*)                                 d.              (x*y*)z*

1.18.    Montrer que si le langage L peut tre dcrit par une expression rgulire alors L= Lp o p est pair peut aussi tre dcrit par une expression rgulire.
quoi correspondent :              a.              Lp                                                                b.              Lp

1.19.    Produire la structure syntaxique de toutes les expressions rgulire de ce chapitre.

1.20.    Produire la structure syntaxique de (ab*)*ab*. Idem pour ab* (ab*)*. Les structures sont diffrentes, mais les deux expressions rgulires dcrivent le mme langage. Expliquez.

En dduire des rgles de transformation darborescence applicables pour les expressions rgulires.

 

n                n                n

n                n

n