Mathématiques Discrètes
2005-2006
ESSI1 2002-2003
Mathématiques Discrètes
Contrôle du Vendredi 15 Novembre
Durée : 2 heures
Documents autorisés : cours et TD
Toutes vos réponses doivent être accompagnées d’une preuve
ou d’un contre-exemple.
Le barème est donné à titre indicatif, et les correcteurs se
réservent le droit d’enlever des points
pour toute énormité donnée comme réponse.
Exercice 1 (8 points)
On rappelle que l’on a définit en cours l’ensemble LP des
mots bien parenthésés comme étant l’ensemble défini
inductivement par
Base : eÎLP
Règle : m et m’ Î LP Þ(m)m’ Î LP
Soit E l’ensemble défini inductivement par
Base : eÎE
Règle : m et m’ Î E Þ(m)(m’) Î E
1) A-t-on E inclus dans LP ?
2) A-t-on LP inclus dans E ?
3) Le schéma définissant E est-il libre ?
1) E est inclus dans LP, en effet on a vu en cours que les mots de LP
formaient l’ensemble des mots vérifiant la propriété P :
P(m) : d(m)=0
et d(p)³0 pour tout prefixe p de m, où la fonction d est la fonction qui compte le nombre de parenthèses ouvrantes
moins le nombre de parenthèses fermantes.
On montre facilement par
induction structurelle que tous les mots de E vérifient la propriété P :
Base : le mot vide vérifie P
Induction : Supposons que m
et m’ vérifient P. Alors
-
on a d ((m)(m’))=0.
-
Soit p un prefixe
propre de (m)(m’). Considérons toutes les formes
possibles pour p et montrons qu’à chaque fois, d(p) ³0
-
p=(pm où pm est un prefixe
de m, donc d(p) >0
-
p=(m) , donc d(p)
=0
-
p=(m)( pm’
où pm’ est un prefixe de m’, donc d(p) >0
2) LP n’est pas inclus dans E, car () est dans LP mais pas dans E.
3) Le schéma définissant E est libre.
En effet, si un mot est dans la
base, il ne peut pas être créé par la règle. Supposons qu’un mot m de E puisse s’écrire à la fois sous la forme (m1)(m1')
et (m2)(m2'), avec m1,m1',m2,m2'
dans E. D'après la question 1 , m a un seul
préfixe propre pour le quel le compteur d
s’annule. Or d ((m1))=d ((m2))=0, on a donc (m1)=(m2) et
par suite m1=m2
et donc aussi m1’=m2’.
Exercice 2 (5 points)
Soit l’alphabet A={1,0}, définir
inductivement le sous ensemble de A*, formé de mots ayant un nombre impair de
0.
Voir Exercice 3 de l’examen de Novembre 2001. Il n’y a que
la base à changer.
Exercice 3 (7 points)
On définit inductivement l’ensemble S des suites d’entiers
naturels par le schéma libre suivant
Base : e est dans S
Règle : Si s Î S et n ÎN,
alors s’=sÅn
Î
S
L’opérateur Å ajoute l’entier n en fin de suite.
On pourra si on le souhaite utiliser les opérateurs dernierElement
(de S dans N) et debut
( de S dans S)
qui sont définis sur les suites non vide par :
dernierElement(sÅn)=n
debut(sÅn)=s
1) On suppose que l’on a une fonction maxDansNxN
de NxN dans N, définir inductivement la fonction maxDansS de S
dans N, qui retourne le plus grand élément de la suite (on pourra si on le
souhaite donner une valeur à maxDansS([])
2) Définir inductivement la fonction longueur de S dans N, qui
compte le nombre d’éléments de S (distincts ou non)
3) Définir inductivement, la fonction egal
de SxS dans {vrai, faux} qui teste l’égalité de deux
suites (deux suites sont égales si elles
ont la même longueur et contiennent les mêmes entiers dans le même ordre)
4) Définir inductivement la fonction inclus de SxS
dans {vrai, faux}. La suite s est incluse dans la suite s’, si on peut
l’obtenir à partir de s’ en « rayant » des
éléments de s’ , sans modifier l’ordre.
Pour les deux premières questions, on utilise la définition
inductive libre de suites données dans l’énoncé.
1) maxDansS([])=0 ;
maxDansS(sÅn)=maxDansNxN(maxDansS(s),n)
Ou
si l’on préfere :
Si
s est vide maxDansS(s)=0,
sinon maxDansS(s)= maxDansNxN(dernierElement(s), maxDansS(debut(s))
2)
longueur([])=0
longueur(sÅn)= longueur(s)+1
Ou si l’on préfere :
Si
s est vide longueur(s)=0,
sinon longueur(s)= 1+longueur (debut(s))
Pour les questions 3 et 4, on
utilise la définition inductive libre des couples de suites CdS
suivantes :
Base
([],[]) est un CdS
Règles
Si
([],s’) Î CdS et n’ ÎN,
alors ([],s’Ån’)
Î
CdS
Si
(s,[],) Î CdS et n ÎN,
alors (sÅn,[])
Î
CdS
Si
(s,s’) Î CdS et n,n’ ÎN
alors (sÅn,
s’Ån’)
Î
CdS
3) egal([],[])=vrai
egal ([],s’Ån’)=faux
egal (sÅn,[]) = faux
egal (sÅn, s’Ån’)= (n=n’) et egal(s,s')
ou si l’on préfère
Si
s=[], alors egal
(s,s’)=(s’=[])
Sinon
si (s’=[])
alors egal (s,s’)=faux
Sinon
egal(s,s’) =( (dernierElement(s)=dernierElement(s’))
et (egal(debut(s), debut(s’)))
4) inclus([],s’)=vrai
inclus (sÅn,[])= faux
inclus (sÅn, s’Ån’)=((n=n’) et inclus (s,s')) ou (inclus (s, s’Ån’) )
ou si l’on préfère
Si
s=[], alors inclus(s,s’)=vrai
Sinon
si (s’=[]), inclus (s,s’)=faux
Sinon
inclus(s,s’)= (dernierElement(s)=dernierElement(s’) et inclus (debut(s), debut(s’)))
ou
inclus (s, debut(s’)).