Vous êtes sur la page 1sur 28

Chapitre 1 1

Alphabets et langages
Définitions :
1. Alphabet : Ensemble fini de symboles, noté en général par 
• Alphabet Latin ={a,b,c,…,z}
• Alphabet binaire ={0,1}
• ={rouge,noir,0,1,a}
2. Mot ou chaîne : Séquence de symboles de l’alphabet. Noté w.
• w1= voiture ; w2 = voyage deux mots définies sur l’alphabet Latin
•w1=00101 ; w2=101101 sont deux mots définies sur l’alphabet
binaire.
•w1=noir01rouge ; w2=10aanoir : sont deux mots définies sur
l’alphabet ={rouge,noir,0,1,a}
Chap1 : Alphabets et langages
Définitions 2

3. Taille d’un mot : |w|= nombre de symboles constituant le mot.


• |rouge| = 5 en considérant l’alphabet Latin
• |001|=3 en considérant l’alphabet binaire
• |rouge|=1 en considérant l’alphabet ={rouge,noir,0,1,a}
4. Chaîne vide : notée e s’il n’appartient pas à l’alphabet ou 
||=0.
5. Sous chaîne : x est une sous chaîne de w si il existe y et z
(chaînes sur le même alphabet). Tel que w = y x z.

Chap1 : Alphabets et langages


Définitions 3

6. Préfixe : x est un préfixe de w si il existe y tel que: w = x y.

7. Suffixe : x est un suffixe de w si il existe y tel que w = y x.

• x = voit est un préfixe de w = voiture, car il existe y = ure


tel que w = voit ure = x y
• x = ture est un suffixe de w = voiture, car il existe y = voi
tel que w = voi ture = yx

Chap1 : Alphabets et langages


Opérations sur les mots 4

1. Concaténation : soient u et v deux mots définis sur l’alphabet


, tel que :
ux1x2...xn vy1y2...ym

wu.vx1x2...xn y1y2...ym

Concaténation est non commutative

Propriétés :
• |w|=|uv|=|u|+|v|
• . Est associative
  est l’élément neutre pour la concaténation. x = x = x

Chap1 : Alphabets et langages


Opérations sur les mots 5

2. Facteur : soit u,v,w,t des mots définis sur  tel que w =


uvt
• si u =  alors v est dit facteur gauche de w (ou préfixe).
• si t =  alors v est dit facteur droit de w (ou suffixe).
• si u = t =  alors w est un facteur de lui même.
3. Occurrence d’un symbole dans un mot :
|abaaba|a=4
4. Image (reverse) : w=aabab wR=babaa
• Si x  alors xR=x
• Si w=xu alors wR=uRx

Chap1 : Alphabets et langages


Exercice 6

Monter que (wu)R = uRwR k /u k

Par induction sur la longueur de u .


• |u|=1, (wu)R=uwR=uRwR.
•Supposons que c’est vrai pour k>1 et montrons le pour n>k.
• u=tx, avec |u|  k et |t| <k, x .
•(wu)R= (wtx)R=xR(wt)R=xtRwR, par HI, |t| ≤k.
=xRtRwR= (tx)RwR= uRwR

Chap1 : Alphabets et langages


Langage 7

Ensemble de mots choisis dans un alphabet.


 langage peut être infini mais il existe un nombre finie de
symboles permettant de composer les mots de ce langage.

k = ensemble des mots de longueur k avec des symboles


de 
Exemple :  ={0,1}
• 1 ={0,1}
• 2 ={00,01,10,11}
• 0 ={}

Chap1 : Alphabets et langages


Langage 8

* : Ensemble de toute les séquences de taille fini défini sur 


: Fermeture de l’alphabet.

*  12...
12...
  *

Si  est un alphabet, et L  * alors L est un langage

Un langage c’est un ensemble de mots appartenant à * et


qui vérifie une propriété donnée :
L= {w  * | w possède la propriété P}

Chap1 : Alphabets et langages


Langage 9

• Ensemble des mots anglais légales


• Ensemble de programmes C légales
• Ensemble des mots de l’alphabet binaire contenant un
nombre de n de 0 suivie par le même nombre n de 1.
L={ ; 01 ; 0011; 000111; … }.
• Ensemble des mots de l’alphabet binaire ayant un même
nombre de 0 et de 1.
L={ ; 01 ; 10; 0101; 1001; … }.
• Ensemble des mots de l’alphabet binaire tel que leur
valeur est premier.
L={10; 11; 101; 111; 1011; …}
Chap1 : Alphabets et langages
Langage 10

• Le langage vide L=  ;
• Le langage {} contenant le mot vide.
Note:   {} .
Note: L’alphabet  est un ensemble fini.
• Ensemble des palindromes sur l’alphabet  = {a,b}
L = {w  * | w = wR}
L = {,aba,bab,a,b,…}

Chap1 : Alphabets et langages


Langage 11
Propriétés
• * est infinie et dénombrable.
• L = L1  L2 = {w  * | w  L1 ou w  L2 }
• L = L1  L2 = {w  * | w  L1 et w  L2 }
• Concaténation :
L = L1 . L2 = L1L2={w  * |  x , y , w = x y , x  L1, y  L2
}
• Fermeture de Kleene.
L* = {w  *| w = w1w2…wk, k 0 et w1,w2,…,wk L}
k = 0 w =  ; k =1 w  L ;
Si L est un langage alors L* désigne l’ensemble de
toutes les chaînes de longueurs finies formées par
concaténation de mots de L, où chaque mot peut être
Chap1 : Alphabets et langages
utilisé de 0 à n fois, la chaîne vide est incluse.
Langage 12
Propriétés

• L  M = M  L.
Union est commutative.
• (L  M)  N = L  (M  N).
Union est associative.
• (LM)N = L(MN).
Concaténation est associative
Note: Concaténation n’est pas commutative, i.e.,
Il existe L et M tel que LM  ML.

Chap1 : Alphabets et langages


Langage 13
Propriétés
Exemple :
• L={aa,b}
•L*={,b,aa,bb,aab,baa,bbb,aaaa,aabb,baab,bbaa,bbbb,
aaaab,aabaa,aabbb,baaaa,bbaab,bbbaa,bbbbb,…}

Note : * ={} 
Exercice
Soit  ={0,1}
L={w  *| w contient un nombre de 1 différent de
nombre de 0.}
Montrer que L*= *

Chap1 : Alphabets et langages


Langage 14
Propriétés

•L(M  N) = LM  LN.
Concaténation est distributive à gauche pour l’union.
• (M  N)L = ML  NL.
Concaténation est distributive à droite pour l’union.
• L  L = L.
Union est idempotent.
• * = {} , {}*={}
• L+ = LL* = L*L, L*= L+ {}
•(L*) *= L* . Fermeture est idempotente

Chap1 : Alphabets et langages


15

Il y a une différence?

Il faut faire la différence entre:



la chaîne vide ( “” )

 l’ensemble vide( { } )

l’ensemble qui contient tout simplement la chaîne vide.

Chap1 : Alphabets et langages


16

Exercise

Completer

L*{} = _________
L+ {} = _________
{} {} = _________
 L = _________
L* L* = _________
(L*)* = _________
LL* = _________
* = _________
{}* = _________

Chap1 : Alphabets et langages


Représentation finie de 17
langages

Définition : langages formels


Tout sous ensemble de * dont les mots peuvent
être définis de deux façons

Définition par propriété :


Modélisation formelle d’une description naturel d’un
langage.
Exemple :
L1 : {ensemble de mots définies sur {a,b} de longueur pair}
L1 = {w  {a,b}* / |w| =2n ; n  0}

Chap1 : Alphabets et langages


Représentation finie de 18
langages

Définition récursive : Définition dans laquelle, un langage


est définie sur lui même.
L2={w   *| w = a ou w = aw1; w1 L2}={a,aa,…,aaaa,…}
L3={w   *| w =  ou w = w1w2; |w1| =2 et w2 L3}
L3  L1

Chap1 : Alphabets et langages


Représentation finie de 19
langages
Expressions régulières :
L4={,x,xx,xxx,xxxx,….}
soit S = {x} alors L4=S* ou L4={x}*

Considérons l’étoile de la fermeture de Kleene appliquée à la


lettre x.
x*

• x* indiquera une séquence quelconque de x qui peut être vide.


• x* =  ou x ou xx ou xxx…
L4 = langage (x*)
Chap1 : Alphabets et langages
Représentation finie de 20
langages

• Considérons le langage
L = {a,ab,abb,abbb,abbbb,…}
Toutes les chaînes constitués par un a suivi d’un nombre quelconque
de b
On peut noter : L=Langage(ab*)
Langage dans lequel les mots sont la concaténation
d’un a (a) initial avec un nombre quelconque de b (b*).

Appliquons l’étoile de Kleene à toute la chaîne ab, on aura :


(ab)*=  ou ab ou abab ou ….

Chap1 : Alphabets et langages


Représentation finie de 21
langages

• Le langage définit par l’expression :


ab*a
Ensemble de toutes les chaînes de a et de b qui ont au
moins deux lettres, qui commencent et finissent par un a. et
qui n’ont que des b ou rien à l’intérieur.
langage (ab*a)={aa,aba,abba,abbba,…}
Remarque :
Fausse description : Ensemble de tous les mots qui commencent
et puis finissent par a et qui n’ont que des b (ou rien) entre eux.
Le mot a appartient a cette description.

Chap1 : Alphabets et langages


Représentation finie de 22
langages

• Le langage définit par l’expression :


a*b*
Ensemble de toutes les chaînes de a et de b dans lesquelles
les a’s viennent avant les b’s.
langage (a*b*)={ ,a,b,aa,bb,ab,bb,aaa,abb,…}
Remarque :
a*b* (ab)*
Le langage à droite contient abab tandis que celui à gauche ne le
contient pas

Chap1 : Alphabets et langages


Représentation finie de 23
langages

T définie sur ={a,b,c}


T={a,c,ab,cb,abb,cbb,abbb,cbbb,abbbb,cbbbb,…}
• Tous les mots de T commencent avec un a ou un c ensuite ils
sont suivis par un nombre quelconque éventuellement nulle de b.
Symboliquement T=langage ((ac)b*)
Exemple :
• Ensemble des chaînes de a et de b de longueur 3.
L=lang ( ((ab) (ab) (ab)))
• Ensemble des chaînes de a et de b de longueur quelconque
L=lang((ab)*)

Chap1 : Alphabets et langages


Expression régulière 24
Définition

Une expression régulière sur un alphabet  est une chaîne de


caractère sur l’alphabet ,(,), ,*,. Tel que :
1. Toute lettre de   {} et  est une expression régulière
2. si r1 et r2 sont deux expressions régulières alors ;

• (r1)

• r1 r2

• r1  r2

• r1 *
Sont des expressions régulières
3. Rien d’autre n’est une expression régulière.
Chap1 : Alphabets et langages
Expression régulière 25
Définition

Exemple 1 :
={a,b}
L={w  *| w contient la sous chaîne aa }
R = (a b)*aa (a b)*
Exemple 2 :
={a,b}
L={w  *| w ne contient pas 3 b consécutifs }
R= (a ba bba)* ( b  bb)

Chap1 : Alphabets et langages


Expression régulière 26
Langage régulier

Théorème :
Un langage L est dit régulier si et seulement si il existe une
expression régulière qui le génère.

Exemple :
={a,b}
L={w  *| w contient un nombre paire de a et un nombre pair de b }

R= (aa  bb  (ab  ba)(aa  bb)*(ab  ba))*

Chap1 : Alphabets et langages


Expression régulière 27
Langage régulier

Propriétés
Étant donné deux langages réguliers L1 et L2

• L1  L2 : est un langage régulier


• L1 . L2 : est un langage régulier
• L1* : est un langage régulier
L1
• = * \ L1: est un langage régulier
(L
1
L2)
• L1  L2 = est un langage régulier
• LR : est un langage régulier
• L1\L2 : est un langage régulier

Chap1 : Alphabets et langages


Expression régulière 28
Langage régulier
Définition : Deux expressions régulières  et  sont dites
équivalentes si L() = L()
Autrement s’ils génèrent le même langage
Exemple :
Langage de tous les mots qui ont au moins 2 a’s
peut être décrit par l’expression régulière :
(a b)*a (a b)*a (a b)*
Autre expression régulière
b*ab*a(a b)*
On peut noter :
(a b)*a (a b)*a (a b)*= b*ab*a(a b)*
Chap1 : Alphabets et langages

Vous aimerez peut-être aussi