Bit le plus significatif de multiplication d'entiers et de diagrammes de décision binaires

15

Soit et y deux nombres binaires à n bits et z = x y le nombre binaire (longueur 2 n ) du produit de x et y . Nous voulons calculer le bit le plus siginifcant z 2 n - 1 du produit z = z 2 n - 1z 0 .xynz=xy 2nxyz2n1z=z2n1z0

Afin d'analyser la complexité de cette fonction dans le modèle des diagrammes de décision binaires (en particulier les programmes de branchement à lecture unique), j'essaie de rechercher des expressions équivalentes pour le cas . La première chose évidente est z 2 n - 1 = 1 x y 2 2 n - 1 (ici x et y sont les entiers correspondants aux nombres binaires). Je veux avoir une intuition de ce qui se passe si je fixe des bits d'entrée constants. Par exemple, si je règle le bit d'entrée le plus significatif dez2n1=1z2n1=1xy22n1xy et y à 0 J'obtiens la fonction constante 0. Mais les bits de moindre importance n'ont pas une telle influence sur le résultat.xy

Existe-t-il d'autres expressions équivalentes pour le cas qui aident davantage à voir ce qui se passe si je corrige certains bits d'entrée? Existe-t-il des méthodes raffinées pour calculer le produit de deux nombres binaires qui peuvent aider? Ou avez-vous une autre approche à ce problème?z2n1=1

Marc Bury
la source
Je trouve les trois questions du dernier paragraphe assez vagues. Veuillez envisager de poser une question plus concrète.
slimton
Les questions sont intentionnellement vagues. Peut-être que quelqu'un a une nouvelle approche ou de nouvelles idées pour ce problème.
Marc Bury
Recherchez-vous la largeur d'un BDD pour le problème?
Sylvain Peyronnet
Je suis intéressé par une limite inférieure de la taille BDD.
Marc Bury
1
Vous voulez dire une borne inférieure polynomiale? La multiplication est en L, donc elle a des BDD de taille polynomiale uniforme (même largeur 5, car elle est en uniforme ). NC1
Emil Jeřábek soutient Monica

Réponses:

5

Une source intéressante est DE Knuth: The Art of Computer Programming, Volume 4, Fascicle 1, Bitwise Tricks & Techniques; Diagrammes de décision binaires , Addison-Wesley, Pearson Education 2009

À la page 96, il existe un BDD pour tous les bits de z = x⋅y, où x et y ont 3 bits. Il montre que dans le cas de 3 bits, BDD représentant le bit le plus significatif a 7 nœuds non terminaux. Voir l'image ci-dessous, je l'ai redessinée en utilisant vos indices x = (x2, x1, x0) et y = (y2, y1, y0).

À la page 140 du livre de Knuth, il y a une question (n ° 183) sur BDD représentant le bit le plus significatif pour la multiplication de deux nombres avec une infinité de bits (il est appelé "limitation de la fonction de bit de tête") - ceci est similaire à ce que vous loking pour! La réponse à la page 223 donne les premiers niveaux du BDD résultant et discute du nombre de nœuds à tous les niveaux, mais malheureusement, il ne donne pas d'algorithme pour construire un tel BDD.

Le bit le plus significatif pour la multiplication de deux nombres de 3 bits

Fig.1: Le bit le plus significatif pour la multiplication de (x2, x1, x0) * (y2, y1, y0)

méolique
la source
1
Merci pour cette référence. Je ne savais pas que les diagrammes de décision binaires faisaient partie de cette "encyclopédie de programmation".
Marc Bury