Mathématiques Discrètes
2005-2006
ESSI1 1999-2000
Documents
autorisés : cours
Durée : 3 heures
Déterminer si le raisonnement suivant est correct .
Si Superman était capable et désireux d’éliminer le mal, il le ferait. Si Superman n’est pas capable d’éliminer le mal, il est sans pouvoir. S’il n’est pas désireux d’éliminer le mal, il est maléfique. Superman n’élimine pas le mal. Si Superman existe il n’est ni sans pouvoir ni maléfique.
Donc Superman n’existe pas.
Soit A ={0,1,2,3,4}. On considère le graphe Gk dont les sommets sont tous les mots de longueur k sur l’alphabet A. Deux sommets x1 x2 . xk et y1 y2 . yk sont reliés par une arête si et seulement il existe un unique j entre 1 et k tel que xi= yi pour tous les i différents de j et xj= yj +1 modulo 5 ou xj = yj -1 modulo 5.
a) Dessiner G1 et G2.
b) Combien Gk a-t-il de sommets ? Quel est le degré d’un sommet ? Combien y a-t -il d’arêtes ? Quelle est la distance maximum entre deux sommets ?
c) Le graphe est-il biparti ?
1.
Soit A={0,1,2}. Donner un schéma inductif
libre pour l’ensemble E des mots sur A ne commençant pas par un zéro et ne
comportant pas deux zéros consécutifs.
2.
On interprète un mot de E comme la
représentation d'un nombre entier en base 3. Par exemple 102 représente 11, et
22 représente 8.
Soit L0 (resp. L1) l 'ensemble
des mots de E qui représentent un entier pair (resp. impair) . On note pn le
nombre de mots de longueur n dans L0
et in le nombre de mots de longueur n dans L1. Déduire du schéma de la
première question des relations de
récurrence liant les pn et les in
3.
Résoudre
On considère le programme java récursif suivant où b est une constante entière
On suppose défini un objet table à partir d’une classe Table dérivée de la classe Vector en y ajoutant la méthode table.echanger (int i, int j) qui échange table.elementAt(i) et table.elementAt(j).
public void T(int debut, int fin){ // opère sur la Table table dans la tranche table[debut..fin]
int n=fin-debut+1 ; //la dimension de la tranche
if (n>1) { if (n=2) {// tri par ordre croissant des deux éléments de la tranche
if (table.elementAt(debut)>table.elementAt(fin)) {table.echanger(debut, fin) ;}}
else { T( debut, debut+n/b) ;
T( fin-n/b, fin) ;
T(debut, debut+n/b) ;
}
}
}
a) Etablir la relation de récurrence vérifiée par la complexité de cet
algorithme
b) Si b=3/2, (dans ce cas bien sûr l’algorithme utilise la partie entière
de n/b) quelle en est la complexité ?
c) Question bonus : démontrer que si b=3/2, T est un tri