IFT2105 – Introduction à l'informatique théorique
Cours 1, lundi 1
ermai 2006
Devoir du mercredi à remettre le lundi suivant à la démo.
Site web: .../~dift2105 Modèle de calcul:
Ruban infini à droite (début, mais pas de fin) (A)
On doit pouvoir déterminer les règles... ce qu'on a le droit d'écrire, de faire, etc.
Convention:
Les variables non-explicités (i,j,k,...) sont des naturels.
[n] = {0,...,n-1}
Définitions: Un alphabet est un ensemble fini de symboles ou lettres. On le note, souvent, .
ex.: {a.b.c.d....,z}, {0,1}
Un mot sur l'alphabet est définit récursivement par:
1. Le mot vide est noté
2. Tout symbole a est un mot
3. Si u=a
1...a
net v=b
1, ..., b
msont des mots, alors leur concaténation uv=a
1...a
nb
1...b
mest un mot.
On note l'esemble des mots sur par *.
Si u=a
1...a
nest un mot, sa longueur, |u| est n.
Soit un alphabet. Soit k . On définit
k={a
1...a
n|a
i , i=1...k} et *=
kk. Si u
k, sa longueur |u| est k.
nb.: Le mot vide est le seul élément de
0.
nb2: Ne pas confondre et
0. ( est le mot vide,
0est un ensemble qui contient un seul élément, ) Soit un alphabet. Un langage sur est une partie de *. On le note souvent L.
Définitions: Soit un alphabet et soient L
1, L
2 *.
(1) Le complément de L
1, noté L
1, est l'ensemble {w * | w L
1} = *\L
1(2) La concaténation de L
1et L
2est L1L
2= {uv | u L
1, v L
2} ex.: L
1=
L1= *, L
2=
L
2= *
L
3={}
L3= *\L
3=
k+k L1L2
= ! (puisque L
1est vide)
L3L2
= * (puisque est absorbé)
(3) L
1k=L
1L1k-1et L
10= {}
[ L
1k= {u
1...u
k| u
i L
1, i=1,...,k} ]
(4) L
1* =
kL
1k[fermeture/clôture de Kleene]
Question: Est-ce que (L*)* = L* ? Oui.
Preuve: Second sens: L
* (L*)* (Évident)
L' = LL
0= {uv|u L, vL
0} = {uv|uL, v=} = {u|uL} = L Premier sens (sera vu plus tard)
Exercice: Prouver (vrai ou faux): L
mLn=?= L
nLmLe problème principal est de reconnaître un langage. Plus précisément, le problème est de décider si un mot donné appartient au langage donné L sur un alphabet donné. (Parfois, on prend comme l'ensemble
L
= {a | uL, t.q. !u!
a≥ 1}.
Définition: Soit u=a
1...a
kun mot sur un alphabet et soit a. On note |n|
ale nombre d'occurrences de a dans n, i.e.: |{i|i{1...k}, a
i=a}|.
Exemple: (B)
= {a,b,c} L={u | v *, u = va}. Tous les mots qui sont composés de a, b ou c et qui se terminent par a.
Définition: Un automate fini déterministe (AFD) est un quintuplet M=(Q,,,s,F) où: (C)
Q est un ensemble fini d'états. (q,p,q
i...)
est un alphabet
s Q est un état initial
F Q est un ensemble d'états acceptants
: Qx Q.
Démo 1, lundi 1
ermai 2006
Alphabet: ensemble fini de symboles.
Si est un alphabet, alors * est l'ensemble de tous les mots formés des symboles de . (de longueur finie) Un langage L est un sous-ensemble de *.
ex.: (a) L'alphabet ={0,1}
L
aest un langage des mots sur de longueur paire.
L
ai= {w {0,1}* | |w| = 2k, k } {0,1}*
Soit n , <n> est l'encodage de "n".
ex.: 3 encodé en binaire: <3>=11
ex.: L
best le langage sur {0,1} des encodages d'entiers positifs pairs.
L
b= { <n> {0,1}* | n = 2k, k≥0 } <n> est représenté en binaire, mais la valeur de n est paire...
On remarque que L
best aussi {w{0,1}* | w fini par 0}
ex.: L
dcontient unquement le mot vide: L
d= {}
ex.: L
econtient uniquement le mot "a": L
e= {a} Nota: a , mais {a}
ex.: L
f {0,1}* est l'ensemble des mots "w" tels que |w|
0= |w|
1L
f= {w{0,1}* | |w|
0= |w|
1}
ex.: L
f' sur = {a,b} (pour la même définition de L) = *
L
1 L
2:= { w * | w L
1ou w L
2} L
1 L
2:= { w * | w L
1et w L
2} L
1:= * \ L
1= {w * | w L
1} L
1L2:= {w
1w
2| w
1 L
1et w
2 L
2}
L
1* :=
kL
k * = {} L=L
0= {} L
k= LL
k-1Exercice: (L
n)
m=?= (L
m)
nex.: Sur = {0,1} {w* | w[1]=0} {w{0,1}* | w[1]=1}
= {0,1}*\{}
ex.: { <n> | n est une puissance de } { <n> | n est une puissance de 3 }
= { <m> {0,1} | m=1 } = { 1, 01, 001, ... }
ex.: L
1L2où L
1:= {w {0,1}* | w finit par "1" } et L
2= {w {0,1}* | w ne finit pas par "1" }
On remarque qu'on aura au moins un "1" dans la concaténation et qu'on n'aura pas .
!!!= {w {0,1}* | |w|
1≥ 1 }
Un AFD pour L = {w {0,1}* | w termine par "1"}
M = {Q, ={0,1}, , s, F} (D)
ex.: (E)
Cours 2, mardi 2 mai 2006
Définition: Soit M=(Q,,,s,F) un AFD.
Soit w *, w=a
1...a
k. Un calcul (une exécution) de M sur w est une suite {r
i}
i=0k, r
iQ, i=1...k, telle que r0=s et pour i=0...k-1, (r
i, a
i+1)=r
i+1.
Définition: Soit M=(Q,,,s,F) un AFD. On définit une extension ^ de ,
^:Qx*Q ,récursivement:
(1)
^(q,) = q(2)
^(q1,ua) = (^(q
1,u),a) (A)
ex.: Si {r
i}
i=0kest une exécution de M sur a
1...a
k, alors ^(s,a
1...a
i)=r
i(s=r
0) Parce que:
^(s,a1)=(^(s,)a
1)=(s,a
1)=r
1^(s,a1
…a
i-1a
i)=(^(s,a
1…a
i-1),a
i)=(r
i-1,a
i)=r
iDéfinition: Soit M=(Q,,,s,F) un AFD.
Le langage décidé (reconnu) par M est L(M)={ w* | ^(s,w) F }
L'ensemble de langages décidé par des AFD est noté L
Ret ces langages s'appellent réguliers ou algébriques.
Exemple: (B)
Preuve de la solution:
(Appelons s q
0et q, q
1)
On veut prouver que ^(q
0,w)q
|w|(mod 2)(q
0si |w|=2kq
1si |w|=2k+1) Ce qui est évidemment vrai pour |w|=0 ou 1:
^(q0
,)=q
0et
^(q0,x)=q
1 x .Supposons vrai pour les mots w de longueur ≤n.
Soit w=ua, |u|=n. Alors ^(q
0,w)=^(q
0,ua)=^(^(q
0,u),a)=(q
|u|(mod 2),a)=q
|u|+1(mod 2)=q
w (mod 2)parce que (*) peut être réécrit comme (q
i,x)=q
(i+1)(mod 2)Exemple: Construire un AFD qui décide L={w* | w=uaaav, u,v*, a }avec
={a,b,c}.(C)
En général, si on construit un AFD M qui décide d'un langage donné L, il faut prouver que LL(M) et L(M)L - Tout ce qui appartient au langage est accepté.
- Tout ce qui est accepté appartient au langage
Exercice: Prouver: ^(q,uv) = ^(^(q,u),v) (D)
Définition: Soit M
i=(Q
i,
i,
i,s
i,F
i), i=1,2, deux AFD
On dit que M
1et M
2sont équivalents (M
1==M
2) si L(M
1)=L(M
2) (Deux automates sont équivalents si leurs langages sont égaux.)
On voudrait que si L
1,L
2 L
R, alors L
1, L
1L2, L
1L2, L
1*L
2, (L
1)* L
R...
Lemme1: LL
R LL
RPlus précisément, si L
1est un langage sur l'alphabet et si L
1est régulier, alors *\L est régulier.
Esquisse:
^(s,w)F ssi §^(s,w)FPreuve: Soit M=(Q,,,s,F) un AFD tel que L=L(M). Soit M=(Q,,^,s,F) avec F=Q\F un AFD. Alors
^(s,w)F ssi ^(s,w)F, i.e. wL ssi wL. Donc L(M)=L.
Lemme2: Soit L
1, L
2 L
R. Alors L
1L2 L
R(E)
Preuve: Soit M
i, pour i=1,2, M
i=(Q
i,
i,
i,s
i,F
i), tel que L(M
i)=L
iet sans faire de généralité,
1=
2. On définit un AFD M=(Q,,,s,F), par Q=Q
1xQ
2.
(Produit cartésien me perettant d'exécuter «en parallèle» les deux machines.)
=1
=
2s=(s1,s2)
F=(Q
1xF
2)(Q
2xF
1)
=1
x
2Avec cette définition, on a que ^((s
1,s
2),w) = (
1^(s
1,w)) F ssi
2^(s,w)F
1ou ^(s
2,w)F
2, donc L
1L2=L(M).
Exercice: Prouver que ^((q,p),w) = (^
1(q,w),^
2(p,w)).
Lemme: Soit M=(Q,,,s,F) un AFD et soit un alphabet. Alors il existe un AFD M'=(Q',,',s',F')
équivalent à M. (F)
Preuve: Soit pQ. Posons Q'=Q{P} et définissons s'=s, F'=F et '(q,a)=(q,a) si qQ, a
'(q,a)=p qQ, a\ '(p,a)=p, a
Q' = Q{p}, p Q s' = s
F' = F
'(q,a) = (q,a) si a qp
= p sinon
Il faut prouver que w ()*, wL(M) ssi wL(M'), c.à.d., ^(s,w) F ssi ^'(s,w)F.
Soit w ()*, disons w=a
1...a
n. Soit k = max{k | k{1,…,n}, a
k }.
(1)
^'(s,a1…a
i)Q pour i=1…k.
'(s,a1
)=(s,a, Qs … a
i^'(s,a1
…a
i)='(^'(s,a
1…a
i-1),a
i) = (^(s,a
1…a
i-1),a
i) = ^(s,a
1…a
i)Q [ ^'(s,a
1…a
i) = ^(s,a
1…a
i) ]
Donc, si k=n, ^'(s,w) = ^'(s,w) F ssi wL(M) et uL(M').
Si k<n, alors ^'(s,a
1...a
k)Q et ' ... suite et fin dans les notes
Prouvons que L(M) = L(M'):
Puisque '(q,a)=(q,a) qQ, a
On a que ^(q,w)=^(q,w) si w*.
Démo 2, mardi 2 mai 2006
Un AFD M est un 5-tuplet (Q,,,s,F) où:
Q: ensemble fini d'états
: alpabet d'entrée
: QxQ
(q,a) a' s:
Q est l'état initial.F:
Q: ensemble des états acceptants.ex.: L
a:= { w {0,1}* | w=1u0 où u{0,1}* } (A)
(Tous les nombres notés en binaires qui débutent par 1 et finissent par 0)
ex.: L
b:= { w {0,1}* | w[3]=0 et |w|≥3 } (B)
(Tous les nombre binaires de plus de 2 chiffres et ayant un 0 en 3
epos.)
ex.: L
c:= { w {0,1}* | 2/|w| et w[1]=1 ou 2!/|w| et w[1]=0 } (C)
ex.: L
d:= { w {0,1}* | w[2n-1]=1, n
+} (D)
ex.: L
e:= { w {a,b}* | |w|
a= 2n, n ou |w|
b=2 } (E)
ex.: L
2,3:= {<n>{0,1}* | n et 2/n } {<n>{0,1}* | n et 3/n} (=L
2L3) (F)
n, n=3k+r, 0≤r<3 2(3k+r)+t
6k+2r+t
3k' + (2r+t)
Le 2r+t justifie la forme de M3. Q
2,3= Q
2xQ
3= {(20,30), (20,31), ..., (21,32)}
= {0,1}
s = (20,30)
F
2,3= Q
2xF
3 F
2xQ
32,3
= ((q
1,q
2),a) = (
2(q
1,a),
3(q
2,a))
Cours 3, mercredi 3 mai 2006
Lemme: Soit L
1, L
2 L
R. Alors il existe des AFD M
i=(Q
i,
i,
i,s
i,F
i), i=1,2, tel que L(M
i)=L
iet tel que Q
1Q2=.
Preuve: Soit M
i'=(=(Q'
i,'
i,'
i,s'
i,F'
i) tel que L
i=L(M
i), i=1,2. (Ces AFD existent car L
1, L
2 L
R.
On construit M
ià partir de M
i' en notant Q
i=Qx{i},
i=
i', s
i=(s
i',i), F
i=F
i'x{i},
i((q,i),a)=('(q,a),i) pour qQ
i, a
i.
Il faut maintenant prouver que
i^((s
i,i)w) F
issi
i'(s
i',w) F
i' pour w
i*.
Ceci est facile, si on prouver par récurrence que
i(s
i',w) = (^'(s
i,w),i) w*.
(la récurrence sur la longeur de w).
Lemme: Soit L
1, L
2 L
R. Alors L
1L2 L
R.
Preuve: Soit M
i, i=1,2, les AFD pour L
1et L
2respectivement avecle même alphabet .
Soit M=(Q
1xQ
2, , , (s
1,s
2), F
1xF
2) avec ((q
1,q
2),a) = (
1(q
1,a),
2(q
2,a)).
à finir en exercice.
Nota: Reviser théorie des ensembles de IFT1063 pour bientôt.
Tout langage fini est régulier. (preuve à venir)
Prenons L L
R, wL tel que |w|>|Q|, w=a
1...a
n. Soit M tel que L(M)=L. (A)
Théorème: (Pumping lemma)
Soit L L
Rsur . Alors il existe une constante p telle que pour tout mot w L, |w|≥p, il existe x,y,z * tel que:
(1) w = xyz (2) |xy| ≤ p (3) |y| > 0
(4) xy
izL pour i.
Preuve: (B)
Soit M un AFD tel que L(M)=L . Soit p tel que p ≥ |Q| . Soit w L, |w| ≥ p.
Disons w=a
1...a
n.
Soit {r
i}
ni=0une exécution de M sur w. Puisque n≥p≥|Q|, au moins un des états de l'exécution se répète.
Soit l, le plus petit indice tel que il existe un k < l avec r
k=r
l. Soit x = a
1...a
ky = a
k+1...a
lz = a
l+1...a
n.
On a que |y| ≤ p car les états r
0,...,r
l+1sont distincts et le mot les traversant est de longueur < |Q| (Car on n'utilise pas une lettre pour arriver dans s). De plus, |y| > 0 et xy
iz L, car ^(s,xy)=^(s,xy
i) pour tout i .
(Car ^(q,y)=q si on met q=r
k=r
l) et alors ^(s,xy
iz)=^(s,xyz) F, car w=xyzL.) (Ce théorème permet de prouver qu'un langage n'est pas régulier, pas l'inverse!)
Définition: Un automate fini non-déterministe (AFN) M=(Q,,d,s,F) est défini par: (C)
Q: Un ensemble d'états
: Un alphabet
sQ: Un état initial
FQ: Un ensemble d'états acceptants.
d:Qx()2
Q(2
Q= P(Q)={x|xQ}) 2
Q: l'ensemble des parties possibles de l'ensemble.
Définition: Soit M, un AFN. On définit:
E(q) pour q Q: (transitions spontanées avec ) E
0(q): {q}
E
k+1(q): E
k(q)
pEk(q)(p,) pour k>0.E(q) =
k=0|Q|E
k(Q) =
k=0E
k(q) =
kE
k(p)
= {pQ, :k, p
0...p
kQ tels que p0=q, p
k=p et p
i+1(pi,),i=0...k-1 }.
Démo 3, mercredi 3 mai 2006 fonction bateau(a:entier; b:entier)
var x,y:entier;
début x := a y := b
k instructions du type: x := y y := x x := x+y bateau := x
fin f:x
(a,b)f(a,b)
Montrer que f(a,b) ≤ 2
kmax(a,b)
On montre max(x
i,y
i) ≤ 2
lmax(x0,y
0) où x
i,y
isont les valeurs de x et y après i instructions.
Base: l=0
max(x
0,y
0) = max(x
0,y
0) 2
0max(x0,y
0)=max(x
0,y
0)
Pas: Soit i>0, supposons que max(x
i-1,y
i-1) ≤ 2
i-1max(x0,y
0) alors max(x
i,y
i) dépend de l'instruction «i».
Cas 1: la i
eminstruction est «x:=y»
x
i= y
i-1y
i= y
i-1 max(xi
,y
i) = max(y
i-1,y
i-1) ≤ max(x
i-1,y
i-1) ≤ 2
i-1(x0,y
0) < 2
i(x0,y
0) Cas 2: «y:=x», mutadis mutandis
Cas 3: «x:=x+y»
x
i:=x
i-1+y
i-1y
i:=y
i-1 max(xi
,y
i) = max(x
i-1+y
i-1,y
i-1) = x
i-1+y
i-1≤ max(2x
i-1,2y
i-1) = 2max(x
i-1,y
i-1) ≤ 2(2
i-1max(x0,y
0)) = 2
imax(x0,y
0)
On a montré que i≥0, max(x
i,y
i) ≤ 2
imax(x0,y
0)
Donc, f(a,b) ≤ max(x
k, y
k) ≤ 2
kmax(x0,y
0) = 2
kmax(a,b)CQFD
L'induction généralisée:
Si p est vrai pour n
0, n
0+1,...,n
0+k (k cas de base) et
n>n0
[p est vrai pour n
0,n
0+1...,n-1] p est vrai pour n alors
p est vrai n≥n
0.
On considère une opération associative «o». ao(boc) = (aob)oc
Montrer que tout parenthèsage de n éléments est équivalent à a
1o(a
2o(a
3o...(a
n-1oa
n)...)) Base: n=2 (a
1oa
2) = a
1o(a
2) = a
1oa
2n=3 a
1o(a
2oa3) = (a
1oa
2)oa
3(associatif)
Pas: Soit n>3, supposons que 1<k≤n-1, tout parenthèsage est équivalent à a
1o(a
2o(...(a
k-1oa
k)...)) On sépare le parenthèsage de nos n éléments en deux blocs (A)o(B), |A|,|B| ≥ 1
Cas 1: n
a=1 (A)o(B)
a
1o(...B...) |B|=n-1
Par hypothèse, on a la forme recherchée.
Cas 2: 1<n
a<n, alors on applique l'hypothèse d'induction sur le bloc (A) qui donne (a
1o(a
2o(...)...)) Donc: (A)o(B) équivaut à: a
1o((A')o(B)) (pas associativité de o)
Et on est rendu au cas 1.
ex.: Montrer que (L
n)
m= (L
m)
nL * où L
0= {
} et Lk = Lk-1 k>0(Ln)m = (Ln)(Ln)m-1 = (Ln)(Ln)(Ln)m-2 = ... = (Ln)(Ln)(Ln)... (Ln)(L0) = (L(Ln-1))(L(Ln-1))...(L(Ln-1)) = ... = (LLL...L)...(LL...L) = (Lm)n
exercice 2 [notes de cours]: Montrer que ^(s,w)=(1^(s1,w),2^(s2,w))
((q1,q2),a) = (1(q1,a),2(q2,a))
^(s,a0a1...an) = ^((s,a0), a1a2...an) < ^(((s,a0),a1)a2…an)
ex.: (D)
Montrer que [ ^(q2,0i) = q2 ] [ I est pair ]
() Base: i=0, ^(q2,0i) = (q2,) = q2 or 0 est pair, donc p q P(i) == ^(q2,0i) = q2
Q(i) == i est pair P(i) Q(i)
pour i=0 P(i)=P(0) est vrai Q(i)=Q(0) est vrai donc P(0) Q(0) est vrai.
i=1 P(1)=faux
^(q2,0i) = q3
P(i)=P(1)=faux (P(1)Q(1)) est vrai
Pas: Soit i>1, supposons 1≤k≤i P(k)Q(k) est vrai Alors: P(i) ^(q2,0i) =?= q2
^(q2,0i) = ^(^(q2,00), 0i-2) = ^(q2,0i-2) =?= q2
Si [ ^(q2,0i-2) = q2 ] alors [i-2 est pair] [^(q2,0i) = q2]
^(q2,0i) = q2 q2 ^(q2,0i-2) = q2 i-2 est pair i est pair () [i est pair] [^(q2,0i) = q2 ] i=2j,j
j´, ^(q2,02j) = q2
[i est pair] ^(q2,0i) = q2 j ^(q2,02j) = q2
Base: j=0, ^(q2,020) = ^(q2,) = q2
Pas: j>0, supposons ^(q2,02(j-1)) = q2 alors ^(q2, 02-j) = ^(^(q2,00),02j-2) = ^(q2,02(j-1)) = q2 par hypothèse.
Lemme du pompiste:
Si
(P) L est un langage régulier, alors
(Q) p tel que wL |w|>px,y,z* tel que (1) |xy| < p (2) |y| > 1 (3) xyizL i
(P)(Q) Q¯¯P
Q¯(L) p wL |w|>p x,y,z * w=xyz
ex.: Soit L := {w w | w{a,b,c}* } Montrer que L n'est pas régulier.
Preuve: Prenons p
Posons v=apap , alors |v|>p et vL (longueur suffisante et appartient au langage) Soit x,y,z {a,b,c,}* tels que w=xyz, |xy|<p et |y|>0, alors xy=a où 0<<p
y=a où 0<<p On veut l'inverse de (3), soit: i xyiz L
Posons i=2, alors xy2z = a- aaap-ap
|v'| = -+++p- = p+
|v| = p p+ > p
v' v
ap+apL donc Q(L) est faux donc L n'est pas régulier.
ex.: L := {a2^n | n≥0, n}, montrer que L n'est pas régulier. Avec wL |w|=2n, n, |w|a=2n Soit p, posons w=a2^p, alors |w|>p et wL (parce que juste des a et |w|a=2p)
Soit x,y,z {a}* tel que w=xyz et |xy|<p et |y|>0 Alors x=a y=a et z=a2^p-- où 0<<p et +<p
Posons i=2, alors xy2z=xyyz=aaaa2^p-- = a2^p+p L ? Est-ce que 2p+ est une puissance de 2?
Non, parce que <p 2p+ < 2p+2p = 2-2p = 2p+1 < 2p
coinçons 2p < 2p- < 2p+1 xy2zL, donc L n'est pas régulier!
Cours 4, lundi 8 mai 2006
Rappel: (A)
Pour qQ dans l'AFN M. E(q) = l'ensemble de tous les états atteignables à partir de q sur des transitions vides, i.e. . (spontanées)
On doit évaluer les états atteignables par à chaque étape: (B)
Donc, w est accepé par un automate fini (déterministe ou non-déterministe) s'il existe une exécution qui mène de s en lisant w vers un état acceptant.
Pour le faire précisément, il nous faut un extension de à ^.
Définition: Soit M=(Q,,,s,F) un AFN. Soit ^:Qx*2Q défini récursivement: (C)
^(q,)=E(q) pour q Q
^(q,ua) = p^(q,u) ^(r,)r(p,a) = p^(q,u)r(p,a) E(r) pour q Q, a , u *
Définition: Un mot w* est accepté par l'AFN M si ^(s,w)F.
Définition: Soit M, un AFN. Le langage décidé par M est L(M)={w* | ^(s,w)F}.
Notation: LAFD est la classe de langages décidés par des AFD. (Et on sait LAFD = LR) LAFN est la classe de langages décidés par des AFN.
Supposons que LAFD = LAFN. On peut alors prouver:
(1) Tout langage fini est régulier (2) Si L1,L2 LR alors L1L2 LR. (3) Si L LR, alors (L)* est régulier.
Preuves:
(1) Soit w=a1...ak * (on suppose que L * et fini) wL. Alors: (D)
(2) Soit L1, L2 LR. Donc M1, M2 tels que L(Mi) = Li, i=1,2 (E)
(3) Même que (2), mais en bouclant sur s plutôt qu'en passant à s2...
Il est presque clair que L(M*) = L* si L.
Mini-devoir: Si L, comment s'assurer que soit dans L(M*).
Théorème: LAFD = LAFN
Preuve: Découle des deux lemmes suivants:
Lemme "" LAFD LAFN: ( AFD, AFN équivalent) Soit M, un AFD. On construit un AFN M' tel que:
Q' = Q
' = s' = s
F' = F
'(q,a) = {(q,a)}
Il faut donc montrer que ^'(s,w)F ssi (s,w) F.
On a que ^'(q,) = {q} = E(q). qQ.
Donc (par récurrence), ^'(q,w)={'(q,w)}. (Exercice!)
Ceci dit que ^'(s,w)F ssi {^'(s,w)}F ssi ^'(s,w)F. (où ^'(s,w)={^(s,w)}. (F)
Lemme "<=" LAFN LAFD ( AFN, AFD équivalent) Soit M, un AFN. On construit un AFD M' tel que:
' =
Q' = {E(X) | X 2Q } où E(X) = pXE(p) s' = E(s) ( note: E(q) = E({q}) ) F' = { E(X) | X 2Q et E(X)F }
':QxQ' féfini par (X,a) = qX^(q,X) Exercice: (Important) Réfléchir à pourquoi ça marche.
Définition:
Soit un alphabet. Une expression régulière (e.r.) sur est définie récursivement:
(1) est une expression régulière (2) est une expression régulière.
(3) a est une expression régulière a.
(4) Si R1 et R2 sont des e.r., alors (R1R2) est une e.r.
(5) " " (R1R2) est une e.r.
(6) Si R est une e.r., alors (R)* est une e.r.
Cours 5-6, mardi 9 mai 2006 Retour:
AFN M AFD M' Q'={E(x) | x 2Q} F' = {X | Q', xF' }
s' = E(s)
'(X,a) = qX^(q,a) Montrons que ^'(X,w) = qX§^(q,w)
Ceci nous permettra de prouver que ^'(s',w) F' ssi ^(s,w)F
^'(E(s),w) F' ssi qE(s)^(q,w) F' ssi qE(s)^(q,w)F ssi ^(s,w)F
(1) Si w=, ^'(X,) = X = E(X) = pXE(q) = pX§^(q,) (2) Si w = ua, e*, a et si '(X,u) = qX^(q,a) alors
^'(X,ua) = '(^'(X,u), a) = '(qX^(q,a), a) = qXp(q,u)^(p,a) = qXp(q,a)r^(q,a)E(X) = qX^(q,ua) = qX^(q,w)
Ramassons: LAFD = LR = LAFN
Retour sur L*: (A)
Expressions régulières: , , a, (R1 R2), (R1R2), (R)* a si R1, R2, R sont des e.r.
Convention:
1) On écrit souvent "+" à la place de
2) On omeles parenthèses quand cela ne créer pas d'ambiguïté.
3) est plus importante que la réunion abc = (ab)c 4) On écrit pour a1a2...an.
Définition: Soit un alphabet. Une expression régulière R représente (décrit) un langage L(R) sur définit récursivement:
(Pour R1, R2 et R des expressions régulières sur )
a) L() = ( de gauche est une expression, de droit c'est un ensemble) b) L() = {}
c) L(a) = {a} pour a
d) L(R1R2) = L(R1)L(R2) e) L(R1R2) = L(R1)L(R2) f) L(R*) = (L(R))*
Lemme: Pour toute expression régulière R sur un alphabet , L(R)LR.
Preuve: On prouve que pour toute expression régulière R, il existe un automate fini M tel que L(R) = L(M).
La preuve est par récurrence.
1) R = . (B)
2) R = 3) R = a 4) R = R1R2
5) R = R1R2
6) R=(R1)*
Exercices: Soit un alphabet, L1,L2,L *
1- L1LR, L1L2 L2 LR Faux, contre-exemple: L1=, L2LR | L={anbn | n}
2- L1LR, L2L1 L2 LR Faux également, pensons à * comme langage régulier.
3- L={wwR | w * } w=a1...ak wR=ak…a1 à solutionner.
4- Soit ={a}. Est-ce que L* est régulier L * } à solutionner.
Lemme: Pour tout LLR , L sur , il existe une e.r. RL telle que L(RL) = L.
Preuve: Soit ML=(Q,,,s,) un AFD tel que L(ML) = L. (C)
Sans faire de généralité, soit Q=[q0,..., qn}, q0=s.
On cherche {w* | ^(q,w)=qj } = L(Rij) . Si on obtient cet ensemble de mots, on n'a alors qu'à unir les expressions régulières comme RL = qkFR0k .
L(Rij) = {w* | ^(qi,w)=qj}, pour i,j [n]
Si on réussi, on aura que L(RL) = L pour RL = qkFR0k
Rijk = {w* | qui permettent d'aller de qi à qj en ne passant que par des étapes q0...qk} Rij-1 = {w* | ^(qi,w) = qj } = { a | (qi,a) = qi }
Rij0 = Ri0-1 R00-1 R0-1
Rijk = Rikk-1 Rkkk-1 Rkjk-1
Rijn = Rin Rnn Rnj-1 = Rij
Pour k{-1,0,1,...,n} et i,j[n] soit Rijk = {w=a1...am * | ^(qi,w) = qi et t {1,...,m-1}, ^(qi,a1...at) {a0,...,ak} } On a que L(Rij-1) = {a | (qi, a) = qj} = a (qi,a)=qj a, ce qui est une expression régulière.
Puisque Rijk = Rijk-1 Rikk-1 (Rkkk-1)* Rkjk-1 est une expression régulière pour tout k{-1,0,1,...,n}, Rijn est une expression régulière et L(Rijn) = {w* | ^(qi,w) = qj}. Donc L(M2) = L(qkFR0kn) et qkFR0kn est une expression régulière.
Ramassons:
LR = Le.r. = LAFD = LAFN
Rappels:
1. 2Q = R(Q) = {X | X Q}
2. Soit X en ensemble. Une relation binaire R sur X est une relation d'équivalence.
(Relation binaire sur X est R XxX, i.e: R={(x,y) | x,y X vérifiant certaines conditions}
on écrit xYy )
(a) R est réflexive xRx xX
(b) R est symétrique xRy yRx x,y X
(c) R est transitive xRy, yRx xRz x,y,z X
3. Soit R1 et R2 deux relations d'équivalence sur X. Alors R1 raffine R2 si xR1 xR2y.
4. Une partition de X est = {Xi}iI (I un ensemble d'indices) si i,j I, Xi, Xj X, XiXj Xi=Xj et iIXi = X . (On appelle des Xi des "classes"). (On note la classe par [classe] ) 5. partition = {Xi}iI une relation équivalente R: xRy ssi iI avec x,y Xi.
6. {X[X]}xX, où [x] = {yX | xRy} est une classe d'équivalence.
Définition: La relation d'équivalence R sur X est d'index fini si elle a un nombre fini de classes d'équivalence.
Exemple: Soit M un aFD. Soit RM la relation sur * définie par xRy ssi ^(s,x) = ^(s,y) (D)
[x] = {y* | xRMy} = {y* | ^(s,x) = ^(s,y)}
Appelons [x], ^(s,x)
Si y[x] alors [y] s'appelera ^(s,x)
Mieux, la classe d'équivalence [x] est C^(s,x) . CQ = {w* | ^(s,w) = q}
N.B.: ^(s,xu) = ^(s,yu) pour xRy, u *
Définition: Une relation d'équivalence sur l'ensemble * (où est un alphabet) est invariante à droite si x,y,u*, xRy xyRyu.
Exercice: Prouver que RM est une relation d'équivalence (sym, réfl, trans.)
Soit L, un langage sur . Soit RL la relation sur * définie par xRy ssi u* xuL exactement quand yuL.
Exercice: Prouver que RL est une relation d'équivalence.
Prouver que RL est invariante à droite.
Théorème (MgHill-Nerode): Soit un alphabet L *.
Les données suivantes sont équivalents.
(1) L LR
(2) L est la réunion de (certaines) classes d'une relation d'équivalence sur * d'index fini et invariante à droite.
(3) La relation RL est d'indice fini...
Preuve:
(1) (2): LLR AFD ML tel que L(ML) = L. On a déjà vu que RM est d'index fini, invariante à droite.
De plus L=qFCq = qF{u* | ^(s,w) = q}
(2) (3): On montre que toute relation d'équivalence E qui vérifie (2) raffine RL et donc le nombre de classes d'équivalence d'équivalence de RL est d'au plus le nombre de classes d'équivalence de Soit E une relation d'équivalence qui vérifie (2).
Pour x,y* tel que xEy et tout z*, xyEyz, car E est invariante à droite.
Donc xz et yz appartienent à la même classe z*. Mais alors xz, yz L où xz, yz L.
Donc xRLy.
(3) (1): On va construire ML = (Q,,,s,F) par:
Q= {[x]L | x*} où [x] = {y* | xRLy}
s= []
F= {[x] | XL}
([x], a) = [xa]
On a que [x] = [y] ssi xRLy ssi xzL ssi yzL, donc pour a, xaz L ssi yazL et alors xaRLya.
De plus, ^([x],y) = [xy].
Exercice: par récurrence.
Donc ^([],w) = [w] et wL(M) ssi [w]F ssi wL.
Exercice: Prouver que {anan | n} n'est pas régulier à partir de ce théorème (infinité)
Définition: Deux AFD Mi = (Qi,,i,si,Fi) (i=1,2) sont isomorphe s'il existe une bijection :Q1Q2 telle que
(s1) = s2 F2 = {(1) | qF1}
(1(q,a)) = 2((q),a)) a
Démo 5-6, mercredi 10 mai 2006 ex.: Soit L={0n1n2m | n,m ≥ 0} {0,1,2}*
On veut montrer que L n'est pas régulier.
Supposons le contraire, soit p, l'entier donné par le lemme du pompiste Posons w=0p1p22p
On voit que wL et |w|≥p.
Soit x,y,z {0,1,2}*, tels que w=xyz et |xy|≤p et |y|>0. Ainsi x=0, y=0 et z=0p--1p22p où + ≤ p et ≥1
Soit i = 0, alors xy0z = xz = 00p-a-b1p22p = 0p-b1p22p on remarque |xz|0 = p-
|xz|1 = p
Or p- < p, car ≥ 1, donc xz L donc, L n'est pas régulier.
Autre méthode (par fermeture):
L = {0n1n2m | n,m >0}
On sait {0n1n | n ≥ 0} n'est pas régulier
Utiliser les fermetures sur REG
On sait que si L1,L2 sont réguliers, alors L1L2 est régulier.
Ce qui implique que si L1L2 n'est pas régulier, L1 ou L2 n'est pas régulier.
Autrement dit, si L1 est régulier, alors L2 est irrégulier.
On prend 0n1n2m comme L2
On prend 0n1n comme L1L2
On cherche L1 régulier tel que L1L = {0n1n | n ≥ 0}
L1 = {0n1m | n,m ≥ 0}
parce que: wL alors wL ssi |w|2=0
wL1 alors wL ssi n=m i.e. |w|0=|w|1
donc L1L = {0n1n | n ≥ 0}
Ayant trouvé un L1 régulier, on sait que L n'est pas régulier!
ex.: Minimiser l'AFD suivant: M=( {a,b,c,d,e,f}, {0,1}, , a, {b,c} ) (A) AFN: A=(Q,,,s,F)
:Qx P(Q)
ex.: Q={1,2} P(Q)={, {1}, {2}, {12}}
ex.: Donnez AFN pour L={w00 | {0,1}* }
AL = (Q, {0,1}, , q0, F) (B)
Q = {q0, q1, q2} F = {q2}
0 1
q0 {q0,q1} {q0}
q1 {q2}
q2
ex.: L = {w{a,b}* | |w|aa = 0 |w|aba ≥ 1 } in: aa, aba, baba, bbbaabb, ...
out:, a, bb, babba
Donnez A={Q,{a,b},,s,F) (C)
Q = {q0, qa, qab, qr } F = {qr }
s = q0
a b
q0 {q0,qa} {q0}
qa {qr} {qab}
qab {qr}
qr {qr} {qr} {qr}
L1, L2 reg L1L2 reg est facile avec AFN, on prend 2 AFD et un nouveau s avec des transitions . (D)
AFD A1 tel que L(A1)=L1
AFD A2 tel que L(A2)=L2
ex.: Convertir l'AFN suivant en AFD: (E)
À noter, on pourrait obtenir jusqu'à 25 = 32 états ! (pas nécéssairement tous accessibles!) Q = { 123, 4, 45, 34, 1234, 234 }
s = 123
On bâti le tableau en ajoutant les noms d'états nécessaires au besoin, ligne par ligne [Ne pa oublier de fermer les !!!]
a b
123 4 45
4 123 34
45 1234 234
34 1234 34
1234 1234 345
234 1234 34
345 1234 234
F = {123, 234, 1234} (ceux qui contiennent 2) (E')
Expressions régulières:
ex.: Les mots sur {a,b} contenant au moins 1 "a". L1 = { w {a,b}* | |w|a ≥ 1}
Donnez une e.r. telle que L€=L1
Première analyse: { u a v | u,v {a,b}* } L( (a+b)* ) = * = {a,b}*
Donc: (a+b)* a (a+b)*
ex.: Les mots ayant exactement 3 "a". L2 = { w {a,b}* | |w|a = 3}
(b)* a (b)* a (b)* a (b)*
ex.: L3 = { w {a,b,d}* | |w| ≥ 3 }
= { abcx | a,b,c {a,b,d}, x {a,b,d}* } Donc: (a+b+d)(a+b+d)(a+b+d)(a+b+d)*
ou (a+b+d) (a+b+d)*(a+b+d)(a+b+d)*(a+b+d)(a+b+d)*
ex.: Les mots sur {a,b} qui ne contiennent pas deux "a" consécutifs.
= { xy | a,b {a,b}* | |w|aa = 0 }
(b)*(ab)*(b)*(ba)*(b)* oups, oublie a et aba...
b*a(ba)*b*+b*(ba)*b* ne fait pas abba
b*(abb*)*(a+) ok
(ab+b)*(a+) ok
ex.: Trouver le complément:
E1 = (a+b)*b L1 = { w {a,b}* | termine par b et |w| > 0 } L1 = { ... termine par a ou 0 } E1 = + (a+b)*a
E2 = ((a+b)(b+a))* L2 = { ... | pair! } impair E2 = (a+b)((a+b)(b+a))*
E3 = * (L())* = {}* = {} E3 = (a+b)(a+b)*
ex.: Donnez une e.r., E, telle que L(E) génère le langage de: (F)
Mémo: voir les Rij ...
Note: Rabx: Part de a, veut te rendre à b, ne peut passer que par a, b et x ou moins.
k = -1 (initialisation)
R00-1 = étiquettes qui vont directement de i à j = b R01-1 = a R02-1 = R10-1 = R11-1 = R12-1 = b
R20-1 = R21-1 = a R22-1 = b k = 0
Rij0 = Ri0-1 + Ri0-1 (R00-1)* R0j-1
R000 = b + b(b)* b R100 = + (b)*a = R200 = R20-1 + R20-1(R00-1)*R02-1 =
R010 = a + b(b)*a R110 = = R200 = R21-1 + R20-1(R00-1)*R02-1 = a + b* = a R020 = + b(b)* = R120 = = b R220 = b+ = b
k = 1
Rij1 = Rij0 + Rij0(R110)*Rij0
R001 + R010R
100 = b + a+bb*a = b + bb*b etc.
Cours 7, lundi 15 mai 2006
L = LR RL sur * (xRLy ssi (z xzL ssi yzL)) a un nombre fini de classes d'équivalence et est invariante à droite.
ML = (QL, , L, sL, FL) QL={[x]RL | x*}
sL = []
FL = {[x] | x L}
L = ([x], a) = [xa]
^L([], w) FL ssi wL, ssi wL, car ^L([], w)=[].
ex.: L = {anbn | n , ab }
[ai] [aj] aibi L ajbi L
ex.: L = {ab, bc, ac} (A)
RL: []
[a]
[b]
[c]
[ab] = [bc] = [ac]
Si |w| ≥ 3 [w] = [c], ne reste donc que les <3 [ba] = [ca] = [cb] = [aa] = [bb] = [cc] = [c] !
Cours 8, mardi 16 mai 2006
Théorème: Soit L un langage régulier sur , L'automate ML de la preuve du théorème de Myhill-Nerode est l'unique AFD minimum près décidant L. (à un isomorphe près)
Preuve: Soit ML = (QL, , L, sL, FL), l'AFD du théorème de M-N.
Soit M = (QL , , s, F) un AFD minimum tel que L(M)=L(ML)=L
ML : QL={[x]RL | x*} nota: xRLy z* xzL ssi yzL sL = []
FL = {[x] | x L}
L = ([x], a) = [xa]
On a vu que toute relation d'équivalence E invariante à droite, d' est la réunion de (1) L LR
(2) L est la réunion de classes d'équivalences d'une relation d'équivalence sur *, invariante à droite, d'indice fini.
(3) RL a un nombre fini de classes d'équivalences.
a) L'AFD M nous donne une relation d'équivalence RM dont les classes d'équivalence correspondent à Q.
Donc |QL| ≤ |Q|. De plus que, |QL| ≥ |Q|, car M est minimum. On en déduit donc que |QL| = |Q|.
b) Pour tout qQ, il existe wq* tel que ^(s,wq)=q, car sinon q ne peut pas être atteint et donc M n'est pas minimum.
c) Définissons ;a bijection :QQL par (q)=[wq]. Il faut prouver que est bien définie et que ((q,a)) = L((q),a).
i. Pour la première partie, si wq et w sont tels que ^(s,wq) = ^(s,w) = q alors [wq]RL = [w]RL . ii. Pour la seconde, L((q),a)=L([wq],a)=[wqa] = (^(s,wqa)) = ((^(s,wq),a))
Définition: Une grammaire hors contexte est noté G = (V,,R,S) où V est un ensemble fini de variables,
est un alphabet (parfois noté T, pour ensemble de terminaux)
R est un ensemble fini de règles / productions, S est le symbole de départ.
R { A | AV, (V)* } [ V = ]
Une grammaire G génère des mots, donc un langage L(G) *
ex.: G = ({S} , {a,b}, {SaSb | }, S}
S aSb aaSbb ... akSbk akbk
Définition: Soit G une g.h.c. Soit u,v(V)* (Prenons u=aSSbaSbSS et v=aSSbaSbSaSb) On dit que u donne v en k étape, u=k=>v, et on le définit récursivement:
1. u =0=> u ( ^(q,) = q )
2. u =k=> v ( ^(q,xa) = (§^(q,x),a)) )
s'il existe w,u1,u2 (V)* et AV et Aw R tel que u=(k-1)=>u1Au2 =1=> u1wu2 = v Définition: On dit que u donne v (éventuellement) s'il existe un k tel que u=k=>v. On écrit u=*=>v.
Avec ceci on définit L(G) = { w* | S=*=>w }
Définition: Un langage L(G) généré par une g.h.c. s'appelle un langage hors contexte.
Exercice: Est-ce que chaque langage régulier est généré par une g.h.c.
Exercice: Trouver une g.h.c. pour le langage des palindromes sur {a,b,c,d}
aSa, bSb, cSc, dSd, . Et on le prouve par induction avec comme base ...
Un peu de mathématiques:
Un ensemble X est dénombrable s'il existe une bijection :X.
a) * est dénombrable .
b) |2X| > |X|
c) |2*| > |*|
L'ensemble de langages sur {0,1} n'est pas dénombrable, mais pour tout modèle de calcul, l'ensemble d'exemplaires (machines, grammaire,...) est dénombrable. Donc il existe des langages indécidables.
Démo 7, mardi 16 mai 2006
Une relation d'équivalence R*x* est telle que:
1) Réflexve: (x,x) R
2) Symétrique: (x,y) R (y,x) R 3) Transitive: (x,y) et (y,z) R (x,z) R ex.: X un ensemble et R une relation d'équivalence sur X.
Montrer que: [x]R = [y]R (x,y) R [x]R := { yA | (x,y) R }
X [x]R.
trivial parce x est équivalent à x par réflexivité.
= [y]R x[y]R (y,x) R (x,y) R (par symétrie)
<== (x,y)R [x]R = [y]R
[x]R = { zX | (x,z)R } [y]R = { zY | (y,z)R } [x]R [y]R et [y]R [x]R
z[x]R (x,z)R, or (y,x)R (y,z)R par transitivité.
donc [x]R [y]R ( z[x]R z[y]R ) z[y]R (y,z)R par hypothèse (x,y)R
etc., par transitivité aussi ...
Soit M1, M2. On dit que M1 est isomorphe à M2 s'il existe une bijection :Q1Q2 telle que (s1)=s2 et que F2={(q)|qF } et 2((q),a) = (1(q,a)).
exemple: (B)
Test: 2((1),a) = 2(2',a) = 1' \__ q=1, pour a (on le fait pour 1b 2a et 2b)
(1(1),a) = ... / exercice: Trouver M1 et M2 tels que
:M1M2, est une bijection (s1)s2, mais le reste est vérifié et L(M1) L(M2) Trouver ... tels que (s1)=s2, mais F2{(q) | qF1}
Théorème [Myhill-Nerode] (une partie) L est régulier RL est d'index fini (nombre de classe d'équivalence fini)
ex.: Montrer que L = [uuR | u{a,b}* } n'est pas régulier.
[x]RL = { y{a,b}* | z{a,b}* xzL yzL } y[x]RL z{a,b}* xzL yzL } donc
y[x]RL z{a,b}* xzL alors xyL ou xzL alors yzL
Prenons [ab]RL et [aab]RL, elles sont , car (ab,aab)R aab[ab]RL
Soit z=ba, alors xz=abbaL, mais yz=aabbaL On peut faire pareil avec z=baa pour [aab] et [aaab] ...
En général, [aib]RL [ajb] ssi ij i,j, car aibbaiL, mais ajbba L , car ij.
donc RL n'est pas d'index fini et L n'est pas régulier.
exercice: Donnez une GHC pour: 1. {anbm | 0 ≤ n < m}
2. {anbm | 0 < n, 1 ≤ m, nm}
3. {aibjak | j > 0, i=k}
4. {aibjak | j = k, i>2}
5. {aibjakbl | i=l, j k, i,j,k,l ≥0}
1. G = ({S,X,Y},{a,b},{S XYb, XaXb|, YYb|},S) Cours 9, mercredi 17 mai 2006
Théorème (Cantor):
Soit X un ensemble. Alors |2X| > |X|. ()
Définition: Soit X et Y deux ensembles, on dit que X et Y sont équipotent ou qu'ils ont la même cardinalité et on note ce fait
|X|=|Y|, s'il existe une bijection f:XY. De même |X| < |Y| s'il existe une injection g:XY.
Nota: Fonction: f XxY
F Injective: Si f(y)=f(x) x=y
F surjective: Si yY, xY tel que f(x)=y
et F bijective: injective et surjective cardinalités égales.
Exercice: Définir la fonction de bijection entre et x. (Matrice infinie, on regarde les diagonale de osmmes identiques)
Preuve: Il est évident que |2X| ≥ |X|. (Puisque xX, x2x) Il reste à prouver l'inégalité.
Supposons f:X2X existe qui est bijective.
Soit D = {xX | xf(x)}.
Puisque f est surjective, dX tel que f(d)=D.
Mais alors, dD ssi df(d) ssi dD. CQFD.
Exercice: Utiliser cette sorte d'argument pour prouver qu'il n'existe aucun programme qui prend en entrée un programme P et son entrée X et qui répond OUI ssi P s'arrête sur X.
Notation: LHC est la classe d'un langage hors contexte.
Théorème(?): SoitL1, L2, L LHC, alors:
(1) L1L2 LHC VRAI (2) L1L2 LHC VRAI
(3) L LHC PAS VRAI
(4) L1L2 LHC PAS VRAI Preuve de (1):
Soit Gi , i=1,2 tels que L(Gi) = Li. Définissons G tel que L(G)=L1L2.
G = ({S}V1V2, 12, {SS1|S2}R1R2,S) en supposant V1V2=. (nouveau S) ...
Preuve de (2):
Soit Gi , i=1,2 tels que L(Gi) = Li. Définissons G tel que L(G)=L1L2. Idée: SS1S2 =*=> w1w2 où wiLi , i1,2
G = (V1x{1} V2x{2} {S}, 12, {SS1S2}R1'R2',S) en supposant V1V2=.
avec S1' = (S1,1), S2' = (S2,2) et si A Ri alors (A)' Ri' où (A)' est A où toute variable est remplacée par (x,i).
Exercice: Prouver que L(G)=L1L2. Corollaire: LL LHC si L HC
S0 SS Lk LHC
S0 SS...S L* LHC
S | SS...S
Motivation (Pompiste Hors-Contexte): SaSa|bSb| (A)
Rappels:
Graphe: G = (V,E) E(V,2)={ {x,y} | xy V }
Chemin: Suite {vi}0n, vi V, vivi+1 E pour c{0,...,n-1}, la longueur du chemin est n.
Chemin u-v: chemin {vi}0n avec v0=u, vn=v Connexe: u,vV chemin u-v.
Cycle: chemin {vi}0n tel que v0=vn
Arbre: graphe connexe sans cycle.
Arborescence: Un arbre avec un sommet distingué r. (B)
Démo 8, mercredi 17 mai 2006
Suite de l'exercice: Donnez une GHC pour:
2. {anbm | 0 < n, 1 ≤ m, nm}
G = (...) S aTb TaTb|A|B AaA|a BbB|b
aabbbbb: SaTbaaTbbaaBbbaabBbbaabbBbbaabbbbb 3. {aibjak | j > 0, i=k}
G = (...) SaSa|B BbB|b 4. {aibjak | j = k, i>2}
G = (…)
On décompose et on uni: S1aaaA S2bS2c| SS1S2
AaA|
5. {aibjakbl | i=l, j k, i,j,k,l ≥0}
G = (…) S aSb|T T bTa|A|B A aA|a B bB|b
Devoir: On veut montrer qu'il une GHC L régulier…
Grammaire linéaire à droite: Un GHC telle que toutes les règles rR ont la forme XaU pour a, U,X V ou X .
Exercices:
L1 := {w {a,b,c}* | wanbncn, n ≥ 0}
L2 := {x # y | x,y {a,b}* n'est pas un palindrome}
L3 := {x#y | xy, x,y{a,b}* }
Cours 10, lundi ...