Supposons que l'on me donne entiers de largeur fixe (c'est-à-dire qu'ils s'inscrivent dans un registre de largeur w ), a 1 , a 2 , … a n tels que leur somme a 1 + a 2 + ⋯ + a n = S s'inscrit également dans un registre de largeur w .
Il me semble que l'on peut toujours permuter les nombres à telle sorte que chaque somme de préfixe S i = b 1 + b 2 + ⋯ + b i rentre également dans un registre de largeur w .
Fondamentalement, la motivation est de calculer la somme sur des machines à registre à largeur fixe sans avoir à se soucier des débordements d'entiers à n'importe quel stade intermédiaire.
Existe-t-il un algorithme rapide (de préférence linéaire) pour trouver une telle permutation (en supposant que les sont donnés comme un tableau d'entrée)? (ou dire si une telle permutation n'existe pas).
-2^(n-1)
à 2^(n-1)-1
. Bien sûr, cela nécessite un complément à deux et un comportement de débordement bien défini, mais dans un langage comme C #, cela devrait fonctionner.