Selon l'article de KW Regan "Connect the Stars" , il mentionne à la fin qu'il est toujours difficile de trouver une représentation des nombres entiers de sorte que les opérations d'addition, de multiplication et de comparaison sont calculables en temps linéaire:
Existe-t-il une représentation d'entiers de sorte que l'addition, la multiplication et la comparaison sont toutes réalisables en temps linéaire? Fondamentalement, existe-t-il un anneau linéaire ordonné discrètement?
(1) Dans quelle mesure pouvons-nous nous rapprocher de la multiplication et de l'addition linéaires du temps, sans comparaison? Ici, je suppose que les tailles de problème peuvent varier, de sorte que nous pouvons avoir besoin d'une structure / algorithme de données qui permet de changer les tailles entières.
(2) Pour le problème complet, nous pouvons supposer que nous trouverons un schéma optimal pour multiplier, additionner et comparer sur les entiers. À quelle distance pouvons-nous obtenir le plus lent de ces trois opérations (dans le pire des cas) vers le temps linéaire? Et sur cette note, quelle serait la vitesse des autres opérations?
DÉCLARATION FORMELLE DU PROBLÈME
Comme Emil Jeřábek le mentionne, nous aimerions exclure les cas insignifiants et nous concentrer sur le pire des cas pour cette question.
Nous demandons donc, pour les entiers non négatifs et où et , pouvons-nous trouver une structure / algorithme de données qui peut effectuer l'addition, la multiplication et la comparaison avec \ entre et dans temps et espace?0 ≤ y < n
la source
Réponses:
Probablement pas la meilleure réponse, mais c'est peut-être un point de départ utile. Si nous souhaitons représenter un entier non négatif, nous pouvons le stocker comme un ensemble de résidus nombres premiers séquentiels modulo à partir de 2. Dans cette forme, la comparaison est potentiellement difficile, mais la multiplication et l'addition peuvent être effectuées assez rapidement. Le produit des premiers nombres premiers est approximé par p n # = exp ( ( 1 + o ( 1 ) ) n log n ) . Par conséquent, pour représenter un entier N, vous avez besoin de résidus modulo les n premiers nombres premiers, oùn
la source