Considérez le problème suivant:
Entrée : un hyperplan , donné par un vecteur et en représentation binaire standard.
Sortie :
Dans la notation ci-dessus, pour et est défini comme , c'est-à-dire qu'il s'agit de la distance euclidienne naturelle entre un ensemble de points et un seul point .
En d'autres termes, on nous donne un hyperplan et nous recherchons le point du réseau entier le plus proche de l'hyperplan.
La question est:
Quelle est la complexité de ce problème?
Notez que le temps polynomial signifie ici un polynôme dans la taille de bits de l'entrée. Pour autant que je puisse voir, le problème est intéressant même en deux dimensions. Ensuite, il n'est pas difficile de voir qu'il suffit de considérer uniquement les solutions avec mais c'est superpolynomial beaucoup d'options.
Un problème étroitement lié consiste à résoudre une équation diophantienne linéaire, c'est-à-dire à trouver un tel que ou à déterminer que tel existe. Ainsi, résoudre une équation diophantienne linéaire équivaut à déterminer s'il existe une solution de valeur 0 au problème que j'ai défini ci-dessus. Une équation diophantienne linéaire peut être résolue en temps polynomial; en fait, même des systèmes d'équations diophantiennes linéaires peuvent être résolus en temps polynomial en calculant la forme normale de Smith de la matrice donnant le système. Il existe des algorithmes de temps polynomiaux qui calculent la forme normale de Smith d'une matrice entière, la première donnée para T x = b xKannan et Bachem .
Pour avoir une intuition sur les équations diophantiennes linéaires, nous pouvons à nouveau considérer le cas bidimensionnel. Clairement, il n'y a pas de solution exacte si ne divise pas . S'il divise , vous pouvez exécuter l'algorithme GCD étendu pour obtenir deux nombres et tels que et définir et . Vous pouvez maintenant voir en quoi la version approximative est différente: quand ne divise pas , comment trouver les entiersb b s t a 1 s + a 2 t = g c d ( a 1 , a 2 ) x 1 = s b / g c d ( a 1 , a 2 ) g c d ( a 1 , a 2 ) b x 1x 2 = t b / g c d ( a 1 , ( x 1 , x 2 ) a 1 x 1 + a 2 x 2 = bde telle sorte que la distance entre et la ligne soit minimisée?
Le problème pour moi ressemble un peu au problème vectoriel le plus proche dans les réseaux, mais je ne vois pas de réduction évidente de l'un ou l'autre problème.
la source
Réponses:
Très bien, après y avoir réfléchi davantage, je pense avoir une réduction explicite de ce problème à GCD étendu; Je vais l'expliquer dans le cas , mais je pense que cela s'étend à arbitraire . Notez que cela trouve un qui minimise la distance à l'hyperplan, mais pas nécessairement le plus petit (il y a en fait une infinité de valeurs qui atteignent la même distance minimale) - je crois que ce dernier problème est également faisable, mais je n'y ai pas encore vraiment réfléchi. L'algorithme est basé sur quelques principes simples:n x xn=2 n x x
Cela suggère la procédure suivante:
Pour autant que je sache, la même procédure devrait fonctionner correctement dans des dimensions arbitraires; la clé est que le GCD à dimensions satisfait toujours l'identité de Bezout, et donc pour trouver la distance minimale à un point de réseau, il suffit de trouver le multiple le plus proche de à .n g b
la source