ESSI1 1999-2000

Informatique Théorique

Mathématiques Discrètes

 

Examen du 31 Janvier 2000

 

 

Documents autorisés : cours

Durée : 3 heures

EXERCICE 1 : Logique (4pt)

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.

 

Exercice 2 : Graphes (4Pt)

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 ?

 

Exercice 3 : Induction ( 7 Pt) 

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 

 

Exercice 4 : Analyse de complexité et preuve d’algorithme récursif.  (5 PT)

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