Corrigé du Test1 2014

publicité
ICC Test1 MT & EL vendredi 24 octobre 2014 QUIZZ Remarque : l’ordre des réponses était différent selon les variantes. Donc ne faites pas attention à la lettre correspondant à la réponse correcte mais seulement à la réponse correcte elle‐même qui est surlignée en jaune. ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ Question 1 : Le nombre décimal 13,125 s’exprime en base 2 avec la notation positionnelle par: A 1011,001 B 1101,111 C 1011,101 D 1101,001 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ Soit l’algorithme récursif algo_X. Cet algorithme est destiné à être appelé comme suit : algo_X( L , 1 , Taille(L)) où Taille(L) fournit le nombre d’éléments de la liste non‐vide L. Un élément de la liste L peut être accédé avec la notation L(i), avec i compris entre 1 et Taille(L). algo_X entrée : Liste L, entier deb, entier fin sortie : la Liste L est éventuellement modifiée par l'algorithme Si deb < fin et fin > 0 Si L(deb) > L(deb+1) a  L(deb) L(deb)L(deb+1) L(deb+1) a algo_X(L, deb+1, fin) algo_X(L, deb, fin‐1) Question 2 : Les réponses indiquent l’ordre des modifications effectuées par l’algorithme sur la liste fournie. Indiquer la réponse correcte lorsque algo_X est appelé avec la liste {9, 3, 7, 2}. {9, 3, 2, 7} ‐> {9, 2, 3, 7} ‐> {2, 9, 3, 7} ‐> {2, 3, 9, 7} ‐> {2, 3, 7, 9} A B {9, 7, 3, 2} {3, 9, 7, 2} ‐> {3, 7, 9, 2} ‐> {3, 7, 2, 9} ‐> {3, 2, 7, 9} ‐> {2, 3, 7, 9} C D {3, 9, 7, 2} ‐> {3, 9, 2, 7} ‐> {3, 2, 9, 7} ‐> {2, 3, 9, 7} ‐> {2, 3, 7, 9} Question 3 : n désigne la taille de la liste L. Quelle est la complexité de cet algorithme ? On suppose que le coût calcul de Taille(L) est O(1) dans l’appel initial algo_X( L , 1 , Taille(L)). A O(n2) mais pas O(n log n). B O(n log n) mais pas O(n). C O(n) mais pas O(log n). D O(2n) mais pas O(n2). ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 1 ICC Test1 MT & EL vendredi 24 octobre 2014 Pour les questions suivantes, on suppose qu’on travaille avec une représentation en virgule flottante exprimée uniquement par la formule normalisée : 2exposant x 1, mantisse où x représente la multiplication. L’exposant est représenté par trois bits et la mantisse est représentée par 1 bit. Question 4 : Le plus grand nombre représentable avec cette formule est: A 12 B 192 C 8,5 D 15 Question 5 : L’erreur relative maximum sur le domaine couvert est de: A 8% B 12,5% C 50% D 100% ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ Question 6 : Parmi les affirmations suivantes, laquelle est vraie ? A NP est la classe des problèmes qu’on peut résoudre en temps Non‐Polynomial B La classe P est contenue dans NP. C Il est difficile de calculer la solution d’un problème appartenant à la classe P. D Il est difficile de vérifier la solution d’un problème appartenant à la classe NP. ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ Question 7 : On représente un nombre entier sur 8 bits en utilisant la représentation des entiers négatifs par complément à 2. Comment s’écrit le nombre −42 avec cette représentation ? A 11010100 B 11010101 C 11010110 D 10101010
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ On considère l’algorithme suivant : algo_Y entrée : n, un entier naturel sortie : ? ? ? Si n b 1 sortir : n b  0 c  1 Pour i allant de 2 à n a  b b  c c  a + b sortir : c 2 ICC Test1 MT & EL vendredi 24 octobre 2014 Question 8 : Quelle est sa sortie lorsque n = 10 ? A 33 B 34 C 54 D 55 Question 9 : Quelle est l’ordre de complexité de cet algorithme ? A O(n2) mais pas O(n log n). B O(n log n) mais pas O(n). C O(n) mais pas O(log n). D O(log n) mais pas O(1). ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ Question 10 : Quel est le résultat de la conversion en hexadécimal (base 16) du nombre suivant donné en octal (base 8) : 7332 A ECA B EDA C EBA D EFA ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ Question 11 : Parmi les affirmations suivantes sur la représentation des entiers avec le complément à deux sur n bits, laquelle est fausse ? A Le domaine couvert n’est pas symétrique B Le maximum des entiers positifs est 2n‐1 ‐1 C Le seul entier égal à son opposé est la représentation de zéro D Le minimum des entiers négatifs est ‐2n‐1 Question 12 : Lequel de ces 4 algorithmes fonctionne correctement ? A C algo_A algo_C entrée : n, un entier entrée : n, un entier sortie : un nombre entier sortie : un nombre entier Si n < 0 Si n < 0 sortir : 2*n + algo_C(n‐1) sortir : 0 Si n = 0 Si n = 0 sortir : 1 sortir : 1 sortir : algo_C(‐n) sortir : 2*n + algo_A(2*n+1) B D algo_D algo_B entrée : n, un entier entrée : n, un entier sortie : un nombre entier sortie : un nombre entier Si n > 0 Si n < 0 sortir : 2*n sortir : 2*n + algo_D(n+1) Si n = 0 Si n = 0 sortir : 1 sortir : 1 sortir : algo_B(n‐1) sortir : algo_D(‐n) 3 ICC Test1 MT & EL vendredi 24 octobre 2014 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ Questions Ouvertes [couleur de la copie indiquée entre crochets] Question 1 : on suppose qu’on travaille avec la représentation en virgule flottante exprimée uniquement par la formule normalisée : 2exposant x 1, mantisse où x représente la multiplication. On utilise ici les mêmes valeurs que dans le cours : 2 bits pour l’exposant de la base deux, et 2 bits pour la mantisse. a) Quelle est la représentation de 1110 (onze) [blanc], 1310 (treize) [vert], 9 [chamois, bleu] en supposant que l’approximation, s’il y en a une, est effectuée par troncation. Indiquer le motif binaire de l’exposant et de la mantisse : 16 nombres sont représentés avec cette représentation sont (optionnel)
1, 1.25, 1.5, 1.75, 2, 2.5, 3, 3.5, 4, 5, 6, 7, 8, 10, 12, 14
Le nombre n’est pas représenté exactement avec cette représentation.
L’approximation par troncation donne le nombre représenté immédiatement inférieur :
10 pour 1110, 10 correspond à 23 x 1,25
exposant: 11 en binaire
Mantisse : 01 en binaire
12 pour 1310, 12 correspond à 23 x 1,5
exposant: 11 en binaire
Mantisse : 10 en binaire
8 pour 9, 8 correspond à 23 x 1,0
exposant: 11 en binaire
Mantisse : 00 en binaire
b) En déduire l’erreur absolue et l’erreur relative (éventuellement nulles) sur cette représentation de 1110 [blanc], 1310 (treize) [vert], 9 [chamois, bleu] en virgule flottante ? Erreur absolue = _ 10 pour 1110, erreur absolue = 11-10 = 1
12 pour 1310, erreur absolue = 13-12 = 1
8 pour 9,
erreur absolue = 9-8
= 1
Erreur relative, exprimée en %, arrondie à l’unité = _ 10 pour 1110, erreur relative = erreur absolue/11 = 1/11 => 0.0909 => 9%
12 pour 1310, erreur relative = erreur absolue/13 = 1/13 => 0.0769 => 8%
8 pour 9,
erreur relative = erreur absolue/9 = 1/9
Question 2 : On considère l’algorithme suivant : algo_Z entrée : n, un entier naturel non nul sortie : ? ? ? Si n =1 sortir : 1 Sinon sortir : 2*algo_Z(n ‐ 1) + 1 4 => 0.1111 => 11%
ICC Test1 MT & EL vendredi 24 octobre 2014 a) Indiquer les étapes pour obtenir la sortie pour n=5 : algo_Z(5) donne sortir : 2*algo_Z(4) +1
algo_Z(4) donne sortir : 2*algo_Z(3) +1
algo_Z(3) donne sortir : 2*algo_Z(2) +1
algo_Z(2) donne sortir : 2*algo_Z(1) +1
algo_Z(1) donne 1
Donc algo_Z(2) donne 2*1 +1 = 3
Donc algo_Z(3) donne 2*3 +1 = 7
Donc algo_Z(4) donne 2*7 +1 = 15
Donc algo_Z(5) donne 2*15 +1= 31
b) Quel est l’ordre de complexité de cet algorithme ? Pourquoi ? Linéaire O(n) car l’algorithme s’appelle récursivement une seule fois, et le paramètre de l’appel
récursif est seulement décrémenté de 1. Il faudra donc un nombre d’appels proportionnel à n
pour atteindre la condition d’arrêt quand n vaut 1. Ensuite le calcul de la valeur finale est aussi
proportionnel à n. Le tout correspond à un coût linéaire O(n).
c) Proposer une version non récursive pour cet algorithme. plusieurs variantes à coût linéaire sont acceptées.
Variante 1:
Entrée : n r  1 Pour i allant de 2 à n r  2*r +1 Sortir : r variante 2 :
Entrée : n r  1 Pour i allant de 1 à n r  2*r Sortir : r ‐1 Remarque : la sortie « directe » de 2n‐1 rapporte seulement la moitié des points car cette expression n’est pas un calcul à coût constant comme nous l’acceptons dans le cadre du cours ICC. En effet, si on pose que la multiplication est une opération à coût constant (hypothèse de travail du cours ICC), on remarque par contre que 2n = 2*2*…*2 , ce calcul représente donc (n‐
1)multiplications, c'est‐à‐dire un coût linéaire. 5 
Téléchargement