Multiplication par une constante entière



Documents pareils
Représentation des Nombres

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

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

Chapitre 7. Récurrences

Représentation d un entier en base b

V- Manipulations de nombres en binaire

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Conversion d un entier. Méthode par soustraction

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

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

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Licence Sciences et Technologies Examen janvier 2010

Continuité et dérivabilité d une fonction

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

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

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

La persistance des nombres

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

La fonction exponentielle

I. Cas de l équiprobabilité

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Programmation linéaire

Image d un intervalle par une fonction continue

Logiciel de Base. I. Représentation des nombres

1 Recherche en table par balayage

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

I. Polynômes de Tchebychev

Introduction à l étude des Corps Finis

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

Optimisation multi-critère pour l allocation de ressources sur Clouds distribués avec prise en compte de l énergie

Probabilités sur un univers fini

Cours d Analyse. Fonctions de plusieurs variables

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

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

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

Développements limités, équivalents et calculs de limites

Chapitre 11. Séries de Fourier. Nous supposons connues les formules donnant les coefficients de Fourier d une fonction 2 - périodique :

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Continuité en un point

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

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

ARBRES BINAIRES DE RECHERCHE

Quelques tests de primalité

Chapitre VI - Méthodes de factorisation

Informatique Générale

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

Glossaire des nombres

EXCEL TUTORIEL 2012/2013

Exemple d implantation de fonction mathématique sur ST240

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

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

Correction de l examen de la première session

Probabilités sur un univers fini

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

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

I. Ensemble de définition d'une fonction

Limites finies en un point

Les structures de données. Rajae El Ouazzani

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

IV- Comment fonctionne un ordinateur?

ASR1 TD7 : Un microprocesseur RISC 16 bits

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes

Limitations of the Playstation 3 for High Performance Cluster Computing

Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Axiomatique de N, construction de Z

Plan du cours Cours théoriques. 29 septembre 2014

DOCM Solutions officielles = n 2 10.

Objets Combinatoires élementaires

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

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

Présentation du cours de mathématiques de D.A.E.U. B, remise à niveau

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Estimation: intervalle de fluctuation et de confiance. Mars IREM: groupe Proba-Stat. Fluctuation. Confiance. dans les programmes comparaison

Algorithme. Table des matières

Vous revisiterez tous les nombres rencontrés au collège, en commençant par les nombres entiers pour finir par les nombres réels.

Représentation d un nombre en machine, erreurs d arrondis

Université Paris-Dauphine DUMI2E 1ère année, Applications

Fonctions de plusieurs variables

Algorithmique et Programmation

Pour l épreuve d algèbre, les calculatrices sont interdites.

Introduction à la théorie des graphes. Solutions des exercices

Architecture de l ordinateur

Chaînes de Markov au lycée

Cryptographie et fonctions à sens unique

Cours de Master Recherche

Complément d information concernant la fiche de concordance

Théorie et codage de l information

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

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Raisonnement par récurrence Suites numériques

Théorème du point fixe - Théorème de l inversion locale

Transcription:

Multiplication par une constante entière Vincent Lefèvre Juin 2001

Introduction But : générer du code optimal à l aide d opérations élémentaires (décalages vers la gauche, additions, soustractions). Utile pour : la compilation, quand le processeur n a pas d instruction MUL ou si celle-ci est très lente (constante : au plus 32 ou 64 bits) ; un certain type de calcul matriciel, e.g. algo du style Toom-Cook pour la multiplication de grands entiers ; le calcul approché des valeurs successives d un polynôme (constante : quelques centaines de bits). Introduction 1 Juin 2001

Exemples Calcul de 1997x. 17x (x << 4) + x 51x (17x << 2) 17x 1997x (x << 11) 51x Calcul de 2001x. 2049x (x << 11) + x 3x (x << 2) x 2001x 2049x (3x << 4) Introduction 2 Juin 2001

Formulation du problème On se donne un entier positif impair n (notre constante). On cherche une suite d entiers positifs u 0, u 1, u 2,..., u q telle que : valeur initiale : u 0 = 1 ; pour i > 0, u i = s i u j + 2 c i u k, avec j < i, k < i, s i { 1, 0, 1}, c i N; valeur finale : u q = n. calcul des u i x successifs. Algorithme qui détermine une suite minimale? Introduction 3 Juin 2001

Complexité du problème : inconnue. NP-complet? Heuristiques? Note : si on se restreint à s i = 1 et c i = 0, c est le problème des chaînes d additions pour calculer une puissance (Knuth, vol. 2). En pratique : décalages retardés. Cas n pair non traité. On choisira toujours s i 0. Avec nos heuristiques : c i 0. i, u i impair. Introduction 4 Juin 2001

Méthode binaire Exemple : 113x. 113 = 1110001 2 3x (x << 1) + x 7x (3x << 1) + x 113x (7x << 4) + x Nombre d opérations = (nombre de 1) 1. Si m est la taille de la constante (m = log 2 (n) + 1), on a q av m/2. Anciennes heuristiques 5 Juin 2001

Amélioration : chiffres signés et recodage de Booth. On utilise la transformation 0 1111...1111 } {{ } k chiffres 1 0000...000 } {{ } 1. k 1 chiffres basée sur la formule : 2 k 1 + 2 k 2 +... + 2 2 + 2 1 + 2 0 = 2 k 1. 113 = 1110001 2 = 10010001 2 après recodage. 7x (x << 3) x 113x (7x << 4) + x 2 opérations au lieu de 3. On peut montrer que q av m/3. Anciennes heuristiques 6 Juin 2001

Algorithme de Bernstein Robert Bernstein. Multiplication by integer constants. Software Practice and Experience, vol. 16 (7), 641 652, juillet 1986. On se restreint à k = i 1, j = 0 ou i 1, s i 0 et c i 0. De manière plus générale : il est actuellement implémenté dans des compilateurs, avec la possibilité d avoir des coûts différents pour l addition, la soustraction, et le décalage. Algorithme branch-and-bound. Anciennes heuristiques 7 Juin 2001

Formules utilisées : Cost(1) = 0 Cost(n pair) = Cost(n/2 c impair) + ShiftCost Cost(n + 1) + SubCost Cost(n 1) + AddCost Cost(n impair) = min Cost(n/(2 c + 1)) + ShiftCost + AddCost Cost(n/(2 c 1)) + ShiftCost + SubCost (avec diverses techniques permettant d éviter des recherches inutiles dans l arbre) Complexité de cet algorithme : exponentielle. Anciennes heuristiques 8 Juin 2001

Mon algorithme idée Basé sur la méthode binaire. On considère le nombre comme un vecteur de chiffres 0, +1, 1, notés 0, P et N (après recodage de Booth). Idée (appliquée récursivement) : on cherche des motifs qui se répètent, de façon à faire disparaître (apparaître) le plus de chiffres non nuls (P et N) en une seule opération. Pour simplifier, on cherche seulement des motifs qui apparaissent deux fois (au moins). Algo / recherche de motifs 9 Juin 2001

Mon algorithme exemple 20061 = 100111001011101 2, recodé en P0P00N0P0N00N0P. L utilisation du motif P000000P0N permet de faire disparaître 3 chiffres non nuls avec seulement une opération supplémentaire. P000000P0N - P000000P0N + 00P000000000000 ------------------ P0P00N0P0N00N0P Sur cet exemple, on obtient 4 opérations (avec l algorithme de Bernstein, on en obtient 5). Algo / recherche de motifs 10 Juin 2001

Recherche du motif Problème : trouver rapidement un motif qui contient le nombre maximal de chiffres non nuls, que l on appellera poids du motif. Trouver un motif trouver un décalage et un signe (+/ ). On tient compte du fait que la proportion des chiffres non nuls est faible en moyenne, surtout près des feuilles de l arbre de calcul : w(père) = 2 w(motif) + w(reste). Exemple : 7 = 2 3 + 1. Solution : on calcule toutes les distances entre deux chiffres non nuls du nombre (en distinguant si ces chiffres sont identiques ou opposés). On obtient ainsi un majorant du poids du motif associé à chaque distance. Algo / recherche de motifs 11 Juin 2001

Recherche du motif exemple Positions : 432109876543210 Nombre : P0P00N0P0N00N0P Recherche du motif : opération distance majorant poids u j 2 2 u k 2 (P-N) 3 2 u j 2 5 u k 5 (P-N) 3 3 u j + 2 7 u k 7 (P-P) 3 2 décalage de 5 avec soustraction. Complexité de mon algorithme (constr. du code) : O(m 3 ) au pire. O(m 2 ) en moyenne? Algo / recherche de motifs 12 Juin 2001

Améliorations possibles Recherche de sous-motifs communs, e.g. P0N0N00P0N0N000P0N avec motif P0N0N et reste P0N. Essai de plusieurs motifs de même poids maximal. Mais attention à la complexité! Transformation P0N 0PP (et N0P 0NN), e.g. 11010101001 2 : P0N0P0P0P00P 5 opérations, P00N0NN0P00P 3 opérations (motif P00N00N). Mais attention à la complexité! Possibilité de faire la transformation tant que le poids du motif courant est inférieur à une certaine valeur toujours polynomial. Utilisation d autres opérations ( autre formulation). Algo / recherche de motifs 13 Juin 2001

Nouvel algorithme (sous-motifs communs) Généralisation naturelle de l algo précédent à la multiplication d un même nombre par plusieurs constantes : recherche d un motif qui se répète dans une même constante ou dans 2 constantes différentes. Au lieu de chercher une distance (décalage), on cherche un triplet (i, j, d) où i et j sont les numéros de deux constantes dans l ensemble, et d un décalage, avec les restrictions suivantes : 1. i j ; 2. si i = j, alors d > 0. Algo / sous-motifs communs 14 Juin 2001

Nouvel algorithme exemple n = 47804853381, qui s écrit en binaire : 101100100001011001000010110010000101 2 Après recodage de Booth : P0N0N00P000P0N0N00P000P0N0N00P0000P0P 1 re itération : Triplet (i, j, d) : (0, 0, 11) Motif associé : Reste associé : P0N0N00P P0N0N00P00000000000000000000000000P0P { P0N0N00P00000000000000000000000000P0P, P0N0N00P } Algo / sous-motifs communs 15 Juin 2001

Rappel : { P0N0N00P00000000000000000000000000P0P, P0N0N00P } 2 e itération : Triplet (i, j, d) : (0, 1, 29) Motif associé : P0N0N00P Reste associé : P0P { P0P, P0N0N00P } 3 e itération : Triplet (i, j, d) : (0, 1, 3) Motif associé : P0P Reste associé : P000000P { P000000P, P0P } Algo / sous-motifs communs 16 Juin 2001

Maintenant, on ne peut plus trouver de motif se répétant de poids supérieur ou égal à 2. On utilise donc la méthode binaire pour les constantes restantes. 129x x + x << 7 (P000000P) 5x x + x << 2 (P0P) 89x 129x 5x << 3 (P0N0N00P) 47781511173x 5x + 89x << 29 (P0N0N00P00000000000000000000000000P0P) 47781522565x 47781511173x + 89x << 7 (P0N0N00P00000000000000P0N0N00P0000P0P) 47804853381x 47781522565x + 89x << 18 (P0N0N00P000P0N0N00P000P0N0N00P0000P0P) Algo / sous-motifs communs 17 Juin 2001

Recherche de coûts par arbre de calcul Nous nous intéressons à la recherche des coûts optimaux. Utiliser des propriétés de la fonction de coût optimal q opt provenant de propriétés algébriques de la multiplication. Définir une fonction f à valeurs dans N, majorant q opt. f : plus grande fonction de N dans N s annulant en 1 et en 2 telle que a N, b N, a > b f(a ± b) f(a) + f(b) + 1 (distributivité). a N, b N, f(ab) f(a) + f(b) (associativité). Recherche de coûts par arbre de calcul 18 Juin 2001

Calcul de f Déterminer les antécédents de 0 (ce sont les puissances de 2). Déterminer successivement les antécédents de i = 1, 2, 3, etc. en utilisant la 1 re propriété avec a et b tels que f(a) + f(b) = i 1 et la 2 e propriété avec a et b tels que f(a) + f(b) = i. Problème : les ensembles considérés sont infinis. On se limite à un intervalle fixé 1, n et on trouve une fonction f n telle que f n f q opt. Inconvénient de cette approche : pas de réutilisation de résultats (sauf sous une certaine forme, grâce à la propriété d associativité). Recherche de coûts par arbre de calcul 19 Juin 2001

Résultats et comparaison des algorithmes Note concernant les implémentations : Algo de Bernstein : réimplémenté en C, bien optimisé. Algo basés sur des recherches de motifs : implémentés en Perl en utilisant des fonctions de haut niveau, non optimisés. Pas de temps d exécution des algorithmes. Résultats 20 Juin 2001

q m plus petite valeur 1 2 3 11 2 4 11 1011 3 6 43 101011 4 8 213 11010101 5 11 1703 11010100111 6 14 13623 11010100110111 7 18 174903 101010101100110111 8 21 1420471 101011010110010110111 9 24 13479381 110011011010110111010101 Tab. 1 Plus petites valeurs pour lesquelles le nouvel algorithme génère un code de longueur supérieure ou égale à q. Résultats 21 Juin 2001

q m plus petite valeur 1 2 3 11 2 4 11 1011 3 6 43 101011 4 10 683 1010101011 5 14 14709 11100101110101 6 20 699829 10101010110110110101 7 28 171398453 1010001101110101010100110101 Tab. 2 Minorants de la plus petite valeur pour laquelle on obtient un code de longueur supérieure ou égale à q avec un algorithme optimal (q = 6 et 7 : résultats obtenus par Ross Donelly, postés dans le groupe rec.puzzles). Exactement les plus petites valeurs? Résultats 22 Juin 2001

[2 transparents suivants] Tab. 3 Nombre moyen d opérations pour une constante de taille m avec l algorithme de Bernstein, notre algorithme de recherche de sous-motifs communs (SMC), le même algorithme, mais en considérant toutes les transformations P0N 0PP et N0P 0NN possibles (SMC+), une recherche de coûts par arbre de calcul (résultats sur f n avec n = 2 29, donc non prouvés), une recherche exhaustive bornée à un milliard ( optimal?). Résultats 23 Juin 2001

m Bernstein SMC SMC+ Arbre DAG 2 1 ( 0.0 %) 1 ( 0.0 %) 1 ( 0.0 %) 1 (0.0 %) 1 3 1 ( 0.0 %) 1 ( 0.0 %) 1 ( 0.0 %) 1 (0.0 %) 1 4 1.5 ( 0.0 %) 1.5 ( 0.0 %) 1.5 ( 0.0 %) 1.5 (0.0 %) 1.5 5 1.75 ( 0.0 %) 1.75 ( 0.0 %) 1.75 ( 0.0 %) 1.75 (0.0 %) 1.75 6 2 ( 0.0 %) 2 ( 0.0 %) 2 ( 0.0 %) 2 (0.0 %) 2 7 2.281 ( 0.0 %) 2.313 ( 1.4 %) 2.281 ( 0.0 %) 2.281 (0.0 %) 2.281 8 2.563 ( 0.6 %) 2.578 ( 1.2 %) 2.547 ( 0.0 %) 2.547 (0.0 %) 2.547 9 2.758 ( 1.1 %) 2.836 ( 4.0 %) 2.75 ( 0.9 %) 2.727 (0.0 %) 2.727 10 3.047 ( 5.5 %) 3.066 ( 6.2 %) 2.945 ( 2.0 %) 2.887 (0.0 %) 2.887 11 3.287 ( 6.2 %) 3.311 ( 6.9 %) 3.176 ( 2.6 %) 3.096 (0.0 %) 3.096 12 3.534 ( 5.7 %) 3.532 ( 5.7 %) 3.406 ( 1.9 %) 3.343 (0.0 %) 3.343 13 3.765 ( 6.0 %) 3.762 ( 5.9 %) 3.621 ( 1.9 %) 3.554 (0.0 %) 3.553 14 4.009 ( 8.1 %) 3.985 ( 7.4 %) 3.818 ( 2.9 %) 3.724 (0.4 %) 3.710 Résultats 24 Juin 2001

m Bernstein SMC SMC+ Arbre DAG 15 4.246 (10.9%) 4.204 ( 9.8%) 4.011 ( 4.8%) 3.876 (1.3%) 3.828 16 4.479 (13.0%) 4.422 (11.5%) 4.209 ( 6.2%) 4.071 (2.7%) 3.964 17 4.712 (14.1%) 4.639 (12.3%) 4.405 ( 6.6%) 4.269 (3.3%) 4.131 18 4.944 (14.2%) 4.848 (12.0%) 4.588 ( 6.0%) 4.461 (3.1%) 4.329 19 5.174 (14.6%) 5.060 (12.1%) 4.769 ( 5.6%) 4.624 (2.4%) 4.514 20 5.403 (15.8%) 5.268 (12.9%) 4.953 ( 6.1%) 4.765 (2.1%) 4.667 21 5.630 (17.8%) 5.475 (14.5%) 5.132 ( 7.3%) 4.904 (2.6%) 4.780 22 5.858 (20.2%) 5.677 (16.5%) 5.312 ( 9.0%) 5.071 (4.1%) 4.871 23 6.083 (22.4%) 5.880 (18.3%) 5.487 (10.4%) 5.252 (5.6%) 4.972 24 6.309 (23.5%) 6.078 (18.9%) 5.657 (10.7%) 5.433 (6.3%) 5.110 25 6.532 (23.8%) 6.277 (19.0%) 5.827 (10.5%) 5.589 (6.0%) 5.274 26 6.755 (24.0%) 6.473 (18.8%) 5.999 (10.1%) 5.721 (5.0%) 5.447 27 6.978 (24.6%) 6.668 (19.1%) 6.170 (10.2%) 5.841 (4.3%) 5.599 Résultats 25 Juin 2001

m q algo 1 q algo 2 gain 8 2.6 2.6 0.0% 16 4.4 4.4 0.0% 32 8.0 7.6 5.0% 64 14.5 13.4 7.6% 128 26.3 23.7 9.9% 256 47.6 42.2 11.3% 512 86.5 75.5 12.7% 1024 157.7 135.4 14.1% 2048 290.0 243.3 16.1% 4096 536.9 440.3 18.0% 8192 1001.9 802.8 19.9% Tab. 4 Nombre moyen d opérations pour des constantes aléatoires de taille m avec les deux algo basés sur des recherches de motifs. Résultats 26 Juin 2001

Questions ouvertes Complexité du problème et des différentes heuristiques (en temps et en espace)? Comment améliorer les heuristiques? Utilisation d autres opérations élémentaires? D autres voies à explorer, par exemple comme écrire la constante dans un système de numération bien choisi. Étudier la relation suivante sur les entiers strictement positifs : m n si le calcul de n peut faire intervenir m comme résultat intermédiaire. Nombres ayant beaucoup de successeurs? Conclusion 27 Juin 2001