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.