Chaîne d additions ATTENTION!



Documents pareils
Conversion d un entier. Méthode par soustraction

Représentation des Nombres

chapitre 4 Nombres de Catalan

Licence Sciences et Technologies Examen janvier 2010

ÉPREUVE COMMUNE DE TIPE Partie D

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Représentation d un entier en base b

Feuille TD n 1 Exercices d algorithmique éléments de correction

Algorithme. Table des matières

avec des nombres entiers

Les structures de données. Rajae El Ouazzani

Introduction à l étude des Corps Finis

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Développement décimal d un réel

Compter à Babylone. L écriture des nombres

V- Manipulations de nombres en binaire

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Le chiffre est le signe, le nombre est la valeur.

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

Définitions. Numéro à préciser. (Durée : )

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Transmission d informations sur le réseau électrique

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

1 Recherche en table par balayage

Cryptographie et fonctions à sens unique

Cours de Mécanique du point matériel

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

IV- Comment fonctionne un ordinateur?

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Exercices - Polynômes : corrigé. Opérations sur les polynômes

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

TP 2 Réseaux. Adresses IP, routage et sous-réseaux

Chapitre VI - Méthodes de factorisation

Introduction à l informatique en BCPST

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

ANNUITES. Les annuités définissent une suite de versements identiques ou non effectués à intervalles de temps égaux. -annuités non constantes

Par combien de zéros se termine N!?

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Chapitre 7. Récurrences

EXERCICES DE REVISIONS MATHEMATIQUES CM2

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

La mémoire. Un ordinateur. L'octet. Le bit

Fiche PanaMaths Calculs avec les fonctions sous Xcas

Précision d un résultat et calculs d incertitudes

Rappels sur les suites - Algorithme

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Chapitre 1 I:\ Soyez courageux!

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Représentation géométrique d un nombre complexe

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Exercices - Nombres complexes : corrigé. Formes algébriques et trigonométriques, module et argument

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

G.P. DNS02 Septembre Réfraction...1 I.Préliminaires...1 II.Première partie...1 III.Deuxième partie...3. Réfraction

Intégration et probabilités TD1 Espaces mesurés

Quelques tests de primalité

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Intégration et probabilités TD1 Espaces mesurés Corrigé

Cours d initiation à la programmation en C++ Johann Cuenin

EPIJEUX-WIN POUR MATERNELLE ET ELEMENTAIRE AUTEUR : JEAN-FRANÇOIS LUCAS. Documentation. «Labypro»

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Puissances d un nombre relatif

a) b)

1 Introduction au codage

Les portes logiques. Voici les symboles des trois fonctions de base. Portes AND. Portes OR. Porte NOT

Programmation par contraintes. Laurent Beaudou

Quelques Algorithmes simples

LES NOMBRES DECIMAUX. I. Les programmes

Informatique Générale

Algorithmique et Programmation

L informatique en BCPST

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

ARBRES BINAIRES DE RECHERCHE

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Architecture des Systèmes d Information Architecture des Systèmes d Information

DM 1 : Montre Autoquartz ETA

Correction du Baccalauréat S Amérique du Nord mai 2007

Sites web éducatifs et ressources en mathématiques

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Introduction à l approche bootstrap

Programmation linéaire

Mathématiques financières

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Programmation C. Apprendre à développer des programmes simples dans le langage C

Logiciel de Base. I. Représentation des nombres

Quantification Scalaire et Prédictive

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Protocoles réseaux. Abréviation de Binary Digit. C'est la plus petite unité d'information (0, 1).

Calculateur quantique: factorisation des entiers

Plus petit, plus grand, ranger et comparer

Les opérations binaires

L AUTOMATISME LE SIGNAL

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

BACCALAURÉAT GÉNÉRAL SÉRIE SCIENTIFIQUE

Transcription:

Chaîne d additions Épreuve pratique d algorithmique et de programmation Concours commun des écoles normales supérieures Durée de l épreuve: 3 heures 30 minutes Juin 2012 ATTENTION! N oubliez en aucun cas de recopier votre u 0 à l emplacement prévu sur votre fiche réponse Important. Sur votre table est indiqué un numéro u 0 qui servira d entrée à vos programmes. Les réponses attendues sont généralement courtes et doivent être données sur la fiche réponse fournie à la fin du sujet. À la fin du sujet, vous trouverez en fait deux fiches réponses. La première est un exemple des réponses attendues pour un ũ 0 particulier (précisé sur cette même fiche et que nous notons avec un tilde pour éviter toute confusion!). Cette fiche est destinée à vous aider à vérifier le résultat de vos programmes en les testant avec ũ 0 au lieu de u 0. Vous indiquerez vos réponses (correspondant à votre u 0 ) sur la seconde et vous la remettrez à l examinateur à la fin de l épreuve. En ce qui concerne la partie orale de l examen, lorsque la description d un algorithme est demandée, vous devez présenter son fonctionnement de façon schématique, courte et précise. Vous ne devez en aucun cas recopier le code de vos procédures! Quand on demande la complexité en temps ou en mémoire d un algorithme en fonction d un paramètre n, on demande l ordre de grandeur en fonction du paramètre, par exemple: O(n 2 ), O(n log n),... Il est recommandé de commencer par lancer vos programmes sur de petites valeurs des paramètres et de tester vos programmes sur des petits exemples que vous aurez résolus préalablement à la main ou bien à l aide de la fiche réponse type fournie en annexe. Enfin, il est recommandé de lire l intégralité du sujet avant de commencer afin d effectuer les bons choix de structures de données dès le début.

On s intéresse dans ce sujet au problème du calcul de x n, étant donnés x et n (n étant un entier positif). Pour calculer x n rapidement, il est utile de décomposer n : si n = pq + r par exemple, on peut utiliser le fait que x n = x pq+r = (x p ) q x r. Une chaîne d additions pour un entier n est une suite d entiers satisfaisant la propriété suivante 1 = a 0, a 1, a 2,..., a l = n a i = a j + a k, pour k j < i, pour i = 1, 2,..., l. La chaîne d additions la plus courte possible minimise le nombre de multiplications et correspond à un algorithme d exponentiation efficace. Une chaîne d additions de 23 peut s écrire : 1 2 3 4 7 8 16 23 (1) ou 1 2 3 5 10 20 23. La longueur de la chaîne L(n) = (a i ) 0 i l est l entier l et son haché est l entier défini par ( l ) H(L(n)) = a i mod 9973. i=1 On fera attention à effectuer la réduction modulo 9973 aussi souvent que possible dans le calcul de cette somme! 1 Génération des nombres On considère la suite d entiers (u k ) k 0 définie pour k 0 par : { votre u0 (À reporter sur votre fiche réponse) si k = 0 u k = 15091 u k 1 mod 64007 k > 0. Question 1 Donner la longueur et le haché de la chaîne d additions de la forme 1 2 3... n pour les entiers n suivants : u 10 u 20 u 50. Dans certaines questions, il pourra être utile de décomposer des entiers n sous forme binaire n = j i=0 n i 2 i avec n i {0, 1} un chiffre binaire (bit) et n j 0. L écriture de n en base 2 s écrira n = n j... n 2 n 0. Question 2 Donner le nombre total de bits à 1 dans les écritures binaires des entiers compris dans les intervalles suivants : [u 10 ; u 10 + 10] [u 20 ; u 20 + 20] [u 50 ; u 50 + 50]. 1 / 4

2 Méthode binaire Question à développer pendant l oral : Quelle est la chaîne d additions minimale pour n = 2 u? Plus généralement, on peut construire une chaîne d additions efficace en utilisant la décomposition de n = j i=0 n i2 i en base 2 avec n i {0, 1} et j = log 2 (n). La chaîne comprend d une part les valeurs 2 i nécessaires et d autre part les sommes partielles k i=0 n i2 i pour k = 0,..., j. Par exemple, la chaîne (1) donnée plus haut correspond à la chaîne d additions de 23 avec la méthode binaire. Question 3 Donner la longueur et le haché de la chaîne d additions obtenue avec la méthode binaire pour les valeurs de n suivantes : u 10 u 20 u 50. 3 Méthode des facteurs On s intéresse ici à une méthode qui exploite la factorisation de n de façon récursive. Si n = pq avec p le plus petit facteur premier de n, on calcule la chaîne d additions de p, suivie de la chaîne de q multipliée par p. Si n est premier, on utilise la chaîne de n 1 pour produire celle de n. Par exemple, la chaîne de 15 = 3 5 sera : 1 2 3 6 12 15. Question 4 Quelle est la longueur de la chaîne d additions otbenue par la méthode des facteurs pour les entiers suivants? u 10 u 20 u 50. Question à développer pendant l oral : Quelle est la complexité en temps de votre algorithme? 4 Méthode de l arbre des puissances Une autre méthode consiste à utiliser l arbre des puissances représenté ci-dessous. Le chemin menant de la racine de l arbre au nœud n indique une chaîne d additions pour n. Le (k + 1)-ème niveau de l arbre est défini à partir des k premiers niveaux de la façon suivante : prendre chaque nœud n du k-ème niveau, de gauche à droite, et le relier avec les nœuds n + 1, n + a 1, n + a 2,..., n + a k 1 = 2n dans cet ordre, où 1, a 1, a 2,..., a k 1 est le chemin de la racine de l arbre à n. On n ajoutera pas un nœud si celui-ci est déjà présent dans l arbre. 2 / 4

1 2 3 4 5 6 8 7 10 9 12 16 14 11 13 15 20 18 24 17 32 19 21 28 22 23 26 25 30 40 27 36 48 33 34 64 Question 5 Donner la longueur et le haché de la chaîne d additions obtenue à partir de l arbre des puissances pour les valeurs n suivantes : u 10 /64 u 20 /32 u 50 /32. Question à développer pendant l oral : Quelle est la complexité en temps de votre algorithme? 5 Méthode binaire améliorée On va s intéresser ici à une variante de la méthode binaire vue plus haut. Au lieu de lire l entier n en base 2, on va le lire en base 2 k avec k un entier petit : n = 2 jk c j +... + 2 2k c 2 + 2 k c 1 + c 0 avec 0 c i < 2 k pour 0 i j, c j 0 et jk log 2 (n) < (j + 1)k. On se placera dans le cas k = 3. On considère d abord la méthode qui calcule en premier de manière naïve les valeurs c i nécessaires pour 0 i j (comme à la question 1) et qui ensuite parcourt l écriture de n en base 2 k de c j vers c 0, en utilisant le fait que n = (((c j 2 k + c j 1 )2 k ) + + c 1 )2 k + c 0 ). On parle de fenêtres de k bits : 161 = 2 2 2 3 + 4 2 3 + 1 = }{{} 010 2 La chaîne d additions pour 161 est alors }{{} 100 4 }{{} 001. 1 1 2 3 4 8 16 20 40 80 160 161. Question 6 Donner la longueur et le haché de la chaîne d additions obtenue par cette méthode pour les valeurs de : 2 12 u 10 + u 11 2 12 u 20 + u 21 2 12 u 50 + u 51. Question à développer pendant l oral : Quelle est la complexité de votre algorithme en fonction de k et j? Pour quelle valeur de k la longueur de la chaîne est-elle minimale? On considère maintenant une autre méthode binaire qui repose toujours sur la décomposition n = 2 jk c j +... + 2 2k c 2 + 2 k c 1 + c 0 avec 0 c j < 2 k. On note d(z) la somme des 3 / 4

2 ik pour tout i tel que c i = z. On commence la chaîne par 1, 2, 4, 8,..., 2 jk. On calcule ensuite les d(z) pour z = 1,..., 2 k 1 comme des sommes de puissances de 2 k qu on accumule dans l ordre croissant. Question à développer pendant l oral : Montrer qu on peut calculer efficacement la somme n = 2 k 1 z=1 zd(z) en calculant en même temps les sommes partielles des d(z). La chaîne d additions obtenue par cette méthode pour n = 161 est alors : 1 2 4 8 16 32 64 72 73 88 161. Question 7 Donner la longueur et le haché de la chaîne d additions obtenue par cette méthode pour les valeurs de : 2 12 u 10 + u 11 2 12 u 20 + u 21 2 12 u 50 + u 51. 6 Chaîne d additions-soustractions On s intéresse au problème de trouver une chaîne d additions vectorielles, c est-à-dire trouver une chaîne d additions minimale pour (n 1, n 2 ) à partir des vecteurs unités (1, 0) et (0, 1). Question à développer pendant l oral : Montrer comment calculer avec l algorithme de la question 3 une chaîne d additions pour le vecteur (n 1, n 2 )? Dans les cas où le calcul de l inverse est efficace, il peut être utile de décomposer l entier n sur l alphabet { 1, 0, 1} et représenter n par deux entiers positifs (n +, n ) tels que n = n + n. On remarque que l on peut améliorer la chaîne obtenue à la question 3 dans le cas n = 15 : 1 2 3 4 7 8 15 en (1, 0), (0, 1) (2, 0) (4, 0) (8, 0) (16, 0) (16, 1) = 15. Question à développer pendant l oral : Montrer que quand l écriture binaire de n contient un paquet d au moins deux 1 consécutifs, on peut le remplacer par un bit 1 dans n + et un bit à 1 dans n. Question 8 Donner les valeurs de (n +, n ) pour les valeurs de n suivantes en appliquant la méthode de la question orale précédente. 2 12 u 10 + u 11 2 12 u 20 + u 21 2 12 u 50 + u 51. Question à développer pendant l oral : Montrer que quand l écriture binaire de n contient un paquet d au moins deux 1 consécutifs, suivi d un seul 0 et suivi d un autre paquet d au moins deux 1 consécutifs, on peut diminuer encore le nombre de bits à 1 dans n + et n. Question 9 Donner les valeurs de (n +, n ) pour les valeurs de n suivantes en utilisant la question orale précédente : 2 12 u 10 + u 11 2 12 u 20 + u 21 2 12 u 50 + u 51. 4 / 4

Fiche réponse type: Chaîne d additions ũ 0 : 1 Question 1 11034, 5964 29910, 27 4084, 8226 Question 2 77 190 255 Question 3 20, 1460 23, 3329 20, 2198 Question 4 20, 5668 20, 9793 17, 6398 13, 2359 10, 410 Question 6 35, 6587 37, 3946 34, 4259 Question 7 36, 559 37, 7708 34, 6752 Question 8 n+=46303234, n-=1056896 n+=139597121, n-=17072128 Question 5 9, 381 I / II

n+=16814146, n-=73992 n+=139466049, n-=16941056 Question 9 n+=46303234, n-=1056896 n=+16777282, n-=37128 II / II

Fiche réponse: Chaîne d additions Nom, prénom, u 0 :.......................................... Question 1 Question 2 Question 3 Question 6 Question 7 Question 8 Question 4 Question 5 I / II

Question 9 II / II