• Aucun résultat trouvé

IFT2105 – Introduction à l'informatique théorique Cours 1, lundi 1

N/A
N/A
Protected

Academic year: 2022

Partager "IFT2105 – Introduction à l'informatique théorique Cours 1, lundi 1"

Copied!
49
0
0

Texte intégral

(1)

IFT2105 – Introduction à l'informatique théorique

Cours 1, lundi 1

er

mai 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

n

et v=b

1

, ..., b

m

sont des mots, alors leur concaténation uv=a

1

...a

n

b

1

...b

m

est un mot.

On note l'esemble des mots sur  par *.

Si u=a

1

...a

n

est 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 *=

kk

. 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, 

0

est 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

1

et L

2

est L1L

2

= {uv | u  L

1

, v  L

2

} ex.: L

1

= 

 L1

= *, L

2

= 

L

2

= *

L

3

={}

 L3

= *\L

3

= 

k+k

 L1L2

=  ! (puisque L

1

est vide)

 L3L2

= * (puisque  est absorbé)

(2)

(3) L

1k

=L

1L1k-1

et L

10

= {}

[ L

1k

= {u

1

...u

k

| u

i

 L

1

, i=1,...,k} ]

(4) L

1

* = 

k

L

1k

[fermeture/clôture de Kleene]

Question: Est-ce que (L*)* = L* ? Oui.

Preuve: Second sens: L

*

 (L*)* (Évident)

L' = LL

0

= {uv|u  L, vL

0

} = {uv|uL, v=} = {u|uL} = L Premier sens (sera vu plus tard)

Exercice: Prouver (vrai ou faux): L

mLn

=?= L

nLm

Le 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 | uL, t.q. !u!

a

≥ 1}.

Définition: Soit u=a

1

...a

k

un mot sur un alphabet  et soit a. On note |n|

a

le 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.

(3)

Démo 1, lundi 1

er

mai 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

a

est 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

b

est 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

b

est aussi {w{0,1}* | w fini par 0}

ex.: L

d

contient unquement le mot vide: L

d

= {}

ex.: L

e

contient 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|

1

L

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

1

ou w  L

2

} L

1

 L

2

:= { w  * | w  L

1

et w  L

2

} L

1

:= * \ L

1

= {w  * | w  L

1

} L

1L2

:= {w

1

w

2

| w

1

 L

1

et w

2

 L

2

}

L

1

* := 

k

L

k * = {} L=

L

0

= {} L

k

= LL

k-1

Exercice: (L

n

)

m

=?= (L

m

)

n

ex.: 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

1L2

où 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 }

(4)

Un AFD pour L = {w  {0,1}* | w termine par "1"}

M = {Q, ={0,1}, , s, F} (D)

ex.: (E)

(5)

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

iQ, 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=0k

est 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-1

a

i

)=(^(s,a

1

…a

i-1

),a

i

)=(r

i-1

,a

i

)=r

i

Dé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

R

et ces langages s'appellent réguliers ou algébriques.

Exemple: (B)

Preuve de la solution:

(Appelons s q

0

et q, q

1

)

On veut prouver que ^(q

0

,w)q

|w|(mod 2)

(q

0

si |w|=2kq

1

si |w|=2k+1) Ce qui est évidemment vrai pour |w|=0 ou 1:

^(q0

,)=q

0

et

^(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)

(6)

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 LL(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

1

et M

2

sont é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

1L2

, L

1L2

, L

1

*L

2

, (L

1

)*  L

R

...

Lemme1: LL

R

 LL

R

Plus précisément, si L

1

est un langage sur l'alphabet  et si L

1

est régulier, alors *\L est régulier.

Esquisse:

^(s,w)F ssi §^(s,w)F

Preuve: 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. wL ssi wL. Donc L(M)=L.

Lemme2: Soit L

1

, L

2

 L

R

. Alors L

1L2

 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

i

et sans faire de généralité, 

1

=

2

. On définit un AFD M=(Q,,,s,F), par Q=Q

1

xQ

2

.

(Produit cartésien me perettant d'exécuter «en parallèle» les deux machines.)

=1

=

2

s=(s1,s2)

F=(Q

1

xF

2

)(Q

2

xF

1

)

=1

x

2

(7)

Avec cette définition, on a que ^((s

1

,s

2

),w) = (

1

^(s

1

,w))  F ssi 

2

^(s,w)F

1

ou ^(s

2

,w)F

2

, donc L

1L2

=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 pQ. Posons Q'=Q{P} et définissons s'=s, F'=F et '(q,a)=(q,a) si qQ, a

'(q,a)=p qQ, a\ '(p,a)=p, a

Q' = Q{p}, p  Q s' = s

F' = F

'(q,a) = (q,a) si a   qp

= p sinon

Il faut prouver que w  ()*, wL(M) ssi wL(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 wL(M) et uL(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) qQ, a

On a que ^(q,w)=^(q,w) si w*.

(8)

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

: QxQ

(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

e

pos.)

ex.: L

c

:= { w {0,1}* | 2/|w| et w[1]=1 ou 2!/|w| et w[1]=0 } (C)

(9)

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

2L3

) (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

2

xQ

3

= {(20,30), (20,31), ..., (21,32)}

 = {0,1}

s = (20,30)

F

2,3

= Q

2

xF

3

 F

2

xQ

3

2,3

= ((q

1

,q

2

),a) = (

2

(q

1

,a), 

3

(q

2

,a))

(10)

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

i

et tel que Q

1Q2

=.

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 qQ

i

, a

i

.

Il faut maintenant prouver que 

i

^((s

i

,i)w)  F

i

ssi 

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

1L2

 L

R

.

Preuve: Soit M

i

, i=1,2, les AFD pour L

1

et L

2

respectivement avecle même alphabet .

Soit M=(Q

1

xQ

2

, , , (s

1

,s

2

), F

1

xF

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

, wL 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

R

sur . 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

i

zL pour i.

Preuve: (B)

(11)

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=0

une 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

k

y = a

k+1

...a

l

z = a

l+1

...a

n

.

On a que |y| ≤ p car les états r

0

,...,r

l+1

sont 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

i

z  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

i

z)=^(s,xyz)  F, car w=xyzL.) (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

sQ: Un état initial

FQ: Un ensemble d'états acceptants.

d:Qx()2

Q

(2

Q

= P(Q)={x|xQ}) 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)

pEk(q)(p,) pour k>0.

E(q) = 

k=0|Q|

E

k

(Q) = 

k=0

E

k

(q) = 

k

E

k

(p)

= {pQ, :k, p

0

...p

kQ tels que p0

=q, p

k

=p et p

i+1(pi

,),i=0...k-1 }.

(12)

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

kmax(a,b)

On montre max(x

i

,y

i

) ≤ 2

lmax(x0

,y

0

) où x

i

,y

i

sont les valeurs de x et y après i instructions.

Base: l=0

max(x

0

,y

0

) = max(x

0

,y

0

) 2

0max(x0

,y

0

)=max(x

0

,y

0

)

Pas: Soit i>0, supposons que max(x

i-1

,y

i-1

) ≤ 2

i-1max(x0

,y

0

) alors max(x

i

,y

i

) dépend de l'instruction «i».

Cas 1: la i

em

instruction est «x:=y»

x

i

= y

i-1

y

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-1

y

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(2x

i-1

,2y

i-1

) = 2max(x

i-1

,y

i-1

) ≤ 2(2

i-1max(x0

,y

0

)) = 2

imax(x0

,y

0

)

On a montré que i≥0, max(x

i

,y

i

) ≤ 2

imax(x0

,y

0

)

Donc, f(a,b) ≤ max(x

k

, y

k

) ≤ 2

kmax(x0

,y

0

) = 2

kmax(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

1

o(a

2

o(a

3

o...(a

n-1

oa

n

)...)) Base: n=2 (a

1

oa

2

) = a

1

o(a

2

) = a

1

oa

2

n=3 a

1

o(a

2

oa3) = (a

1

oa

2

)oa

3

(associatif)

(13)

Pas: Soit n>3, supposons que  1<k≤n-1, tout parenthèsage est équivalent à a

1

o(a

2

o(...(a

k-1

oa

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

1

o(...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

1

o(a

2

o(...)...)) Donc: (A)o(B) équivaut à: a

1

o((A')o(B)) (pas associativité de o)

Et on est rendu au cas 1.

ex.: Montrer que (L

n

)

m

= (L

m

)

n

L  * où L

0

= {

} et Lk = Lk-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)) = ... = (LLL...L)...(LL...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,020) = ^(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.

(14)

Lemme du pompiste:

Si

(P) L est un langage régulier, alors

(Q) p tel que wL |w|>px,y,z* tel que (1) |xy| < p (2) |y| > 1 (3) xyizL i

(P)(Q)  Q¯¯P

Q¯(L) p wL |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=apap , alors |v|>p et vL (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+apL 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 wL |w|=2n, n, |w|a=2n Soit p, posons w=a2^p, alors |w|>p et wL (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  xy2zL, donc L n'est pas régulier!

(15)

Cours 4, lundi 8 mai 2006

Rappel: (A)

Pour qQ 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)

(16)

 ^(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 L1L2  LR. (3) Si L  LR, alors (L)* est régulier.

Preuves:

(1) Soit w=a1...ak  * (on suppose que L  * et fini) wL. 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

(17)

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). qQ.

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) = pXE(p) s' = E(s) ( note: E(q) = E({q}) ) F' = { E(X) | X  2Q et E(X)F }

':QxQ' féfini par (X,a) = qX^(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 (R1R2) est une e.r.

(5) " " (R1R2) est une e.r.

(6) Si R est une e.r., alors (R)* est une e.r.

(18)

Cours 5-6, mardi 9 mai 2006 Retour:

AFN M  AFD M' Q'={E(x) | x  2Q} F' = {X | Q', xF' }

s' = E(s)

'(X,a) = qX^(q,a) Montrons que ^'(X,w) = qX§^(q,w)

Ceci nous permettra de prouver que ^'(s',w)  F' ssi ^(s,w)F 

^'(E(s),w)  F' ssi qE(s)^(q,w)  F' ssi qE(s)^(q,w)F  ssi ^(s,w)F

(1) Si w=, ^'(X,) = X = E(X) = pXE(q) = pX§^(q,) (2) Si w = ua, e*, a et si  '(X,u) = qX^(q,a) alors

^'(X,ua) = '(^'(X,u), a) = '(qX^(q,a), a) = qXp(q,u)^(p,a) = qXp(q,a)r^(q,a)E(X) = qX^(q,ua) = qX^(q,w)

Ramassons: LAFD = LR = LAFN

Retour sur L*: (A)

Expressions régulières: , , a, (R1  R2), (R1R2), (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  abc = (ab)c 4) On écrit  pour a1a2...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(R1R2) = L(R1)L(R2) e) L(R1R2) = 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 = R1R2

5) R = R1R2

6) R=(R1)*

(19)

Exercices: Soit  un alphabet, L1,L2,L *

1- L1LR, L1L2  L2 LR Faux, contre-exemple: L1=, L2LR | L={anbn | n}

2- L1LR, L2L1  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 LLR , 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 = qkFR0k .

(20)

L(Rij) = {w* | ^(qi,w)=qj}, pour i,j  [n]

Si on réussi, on aura que L(RL) = L pour RL = qkFR0k

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(qkFR0kn) et qkFR0kn 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 xX

(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}iI (I un ensemble d'indices) si i,j  I, Xi, Xj  X, XiXj  Xi=Xj et iIXi = X . (On appelle des Xi des "classes"). (On note la classe par [classe] ) 5.  partition  = {Xi}iI  une relation équivalente R: xRy ssi  iI avec x,y  Xi.

6. {X[X]}xX, où [x] = {yX | 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.)

(21)

Soit L, un langage sur . Soit RL la relation sur * définie par xRy ssi u* xuL exactement quand yuL.

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): LLR   AFD ML tel que L(ML) = L. On a déjà vu que RM est d'index fini, invariante à droite.

De plus L=qFCq = qF{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] | XL}

([x], a) = [xa]

On a que [x] = [y] ssi xRLy ssi xzL ssi yzL, donc pour a, xaz L ssi yazL et alors xaRLya.

De plus, ^([x],y) = [xy].

Exercice: par récurrence.

Donc ^([],w) = [w] et wL(M) ssi [w]F ssi wL.

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 :Q1Q2 telle que

(s1) = s2 F2 = {(1) | qF1}

(1(q,a)) = 2((q),a)) a

(22)

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 wL 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 L1L2 est régulier.

Ce qui implique que si L1L2 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 L1L2

On cherche L1 régulier tel que L1L = {0n1n | n ≥ 0}

 L1 = {0n1m | n,m ≥ 0}

parce que: wL alors wL ssi |w|2=0

wL1 alors wL ssi n=m i.e. |w|0=|w|1

donc L1L = {0n1n | n ≥ 0}

Ayant trouvé un L1 régulier, on sait que L n'est pas régulier!

(23)

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}}

(24)

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}

(25)

L1, L2 reg  L1L2 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)*

(26)

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.

(27)

Cours 7, lundi 15 mai 2006

L = LR  RL sur * (xRLy ssi (z xzL ssi yzL)) 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 wL, ssi wL, car ^L([], w)=[].

ex.: L = {anbn | n  , ab }

[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] !

(28)

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* xzL ssi yzL 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 qQ, 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 :QQL 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 | AV, (V)* } [ V =  ]

Une grammaire G génère des mots, donc un langage L(G)  *

ex.: G = ({S} , {a,b}, {SaSb |  }, 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 AV et Aw  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*| > |*|

(29)

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 := { yA | (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 = { zX | (x,z)R } [y]R = { zY | (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 :Q1Q2 telle que (s1)=s2 et que F2={(q)|qF } 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

:M1M2,  est une bijection (s1)s2, mais le reste est vérifié et L(M1)  L(M2) Trouver ... tels que (s1)=s2, mais F2{(q) | qF1}

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}* xzL  yzL } y[x]RL  z{a,b}* xzL  yzL } donc

y[x]RL  z{a,b}* xzL alors xyL ou xzL alors yzL

Prenons [ab]RL et [aab]RL, elles sont  , car (ab,aab)R  aab[ab]RL

Soit z=ba, alors xz=abbaL, mais yz=aabbaL On peut faire pareil avec z=baa pour [aab] et [aaab] ...

En général, [aib]RL  [ajb] ssi ij i,j, car aibbaiL, mais ajbba  L , car ij.

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, nm}

3. {aibjak | j > 0, i=k}

4. {aibjak | j = k, i>2}

5. {aibjakbl | i=l, j  k, i,j,k,l ≥0}

(30)

1. G = ({S,X,Y},{a,b},{S XYb, XaXb|, YYb|},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:XY. De même |X| < |Y| s'il existe une injection g:XY.

Nota: Fonction: f  XxY

F Injective: Si f(y)=f(x)  x=y

F surjective: Si yY, xY 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 xX, x2x) Il reste à prouver l'inégalité.

Supposons f:X2X existe qui est bijective.

Soit D = {xX | xf(x)}.

Puisque f est surjective,  dX tel que f(d)=D.

Mais alors, dD ssi df(d) ssi dD. 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) L1L2  LHC VRAI (2) L1L2  LHC VRAI

(3) L  LHC PAS VRAI

(4) L1L2  LHC PAS VRAI Preuve de (1):

Soit Gi , i=1,2 tels que L(Gi) = Li. Définissons G tel que L(G)=L1L2.

G = ({S}V1V2, 12, {SS1|S2}R1R2,S) en supposant V1V2=. (nouveau S) ...

Preuve de (2):

Soit Gi , i=1,2 tels que L(Gi) = Li. Définissons G tel que L(G)=L1L2. Idée: SS1S2 =*=> w1w2 où wiLi , i1,2

G = (V1x{1} V2x{2} {S}, 12, {SS1S2}R1'R2',S) en supposant V1V2=.

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)=L1L2. Corollaire: LL  LHC si L  HC

S0  SS Lk  LHC

S0  SS...S L*  LHC

S   | SS...S

Motivation (Pompiste Hors-Contexte): SaSa|bSb| (A)

Rappels:

Graphe: G = (V,E) E(V,2)={ {x,y} | xy  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,vV  chemin u-v.

Cycle: chemin {vi}0n tel que v0=vn

Arbre: graphe connexe sans cycle.

(31)

Arborescence: Un arbre avec un sommet distingué r. (B)

(32)

Démo 8, mercredi 17 mai 2006

Suite de l'exercice: Donnez une GHC pour:

2. {anbm | 0 < n, 1 ≤ m, nm}

G = (...) S aTb TaTb|A|B AaA|a BbB|b

aabbbbb: SaTbaaTbbaaBbbaabBbbaabbBbbaabbbbb 3. {aibjak | j > 0, i=k}

G = (...) SaSa|B BbB|b 4. {aibjak | j = k, i>2}

G = (…)

On décompose et on uni: S1aaaA S2bS2c| SS1S2

AaA|

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 rR ont la forme XaU pour a, U,X  V ou X .

Exercices:

L1 := {w {a,b,c}* | wanbncn, n ≥ 0}

L2 := {x # y | x,y  {a,b}* n'est pas un palindrome}

L3 := {x#y | xy, x,y{a,b}* }

(33)

Cours 10, lundi ...

Références

Documents relatifs

professionnels et dirigeants de centres techniques parlent d'une même voix pour affirmer leur soutien à l'industrie en général, au secteur du décolletage en particulier, cela

Déterminons à l'aide du graphique les abscisses des points de la courbe d'ordonnée 1.. Je trace la droite d'équation y

En déduire que la droite (HB) et le plan P son sécants en un point T dont on précisera les coordonnées.. Calculer, en unités de volume, le volume du tétraèdre F

Soit ƒ (jr, r , z,t) = o l'équation de cette quadrique en coordonnées homogènes : nous remplacerons aussi les coordonnées cai lésiennes du point a, b, c, par des.. Examinons d'abord

Mais il y a plus : de ce que deux surfaces sont applicables l'une sur l'autre dans le sens ordinaire du mot, on ne peut pas conclure qu'à une courbe fermée sur l'une correspond

Je prends Tune quel- conque de ces coniques (T) correspondant à la qua- drique S (y, s correspondant à Q et S.) Le cône C de sommet P et s'appuyant sur &lt;7 a pour axes de symétrie

On sait d'une manière générale qu'il existe deux transformations liomographiques qui permutent circu- laireinent les racines d'une équation du troisième degré}. ces deux

On donne la longueur de la bissectrice de l'angle A d'un triangle ABC, et la somme des deux côtés Al^^ AC qui comprennent cet angle : on demande d'étudier la variation de la surface