Résoudre une équation diophantienne linéaire approximativement


15

Considérez le problème suivant:

Entrée : un hyperplan , donné par un vecteur et en représentation binaire standard.H={yRn:uneTy=b}uneZnbZ

Sortie :XZn=argmin(X,H)

Dans la notation ci-dessus, (X,S) pour XRn et SRn est défini comme (X,S)=minySX-y2 , 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 (X1,X2) avec 0X1|une1|/gc(une1,une2) 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 xXZnuneTX=bxAKannan 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 1gcd(a1,a2)bbsta1s+a2t=gcd(a1,a2)x 2 = t b / g c d ( a 1 ,x1=sb/gcd(a1,a2)X2=tb/gc(une1,une2)gc(une1,une2)b ( x 1 , x 2 ) a 1 x 1 + a 2 x 2 = bX1,X2de telle sorte que la distance entre et la ligne soit minimisée?(X1,X2)une1X1+une2X2=b

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.



non, ce n'est pas le cas: l'approximation diophantienne est un problème différent de la résolution d'une équation diophantienne. dans un problème d'approximation diophantienne, on vous donne nombres réels et vous voulez les multiplier tous par un seul entier afin que tous soient dans partir d'un certain entier. le problème est de trouver le compromis optimal entre la taille de et . Je ne vois pas de relation entre mon problème et celui-ci. Q ϵ Q ϵnQϵQϵ
Sasho Nikolov

Quel est votre format d'entrée? Il semble que si deux valeurs de coordonnées de sont incommensurables, le minimum en question est zéro (intersectez avec le plan bidimensionnel approprié pour obtenir une équation de la forme avec et incommensurable , c'est-à-dire irrationnel, puis utilisez les résultats standard sur pour montrer que la ligne passe arbitrairement près des points du réseau. s x + t y = w s t α sasx+ty=wst {nα}αst{nα}(mod1)
Steven Stadnicki

En particulier, cela signifie que votre «min» doit être un «inf» (car vous le prenez sur une infinité de points), et le problème de savoir si est distinct de la question de savoir s'il existe des avec . Cela signifie que les coefficients de doivent être des nombres rationnels pour que le problème ait une solution non triviale, puis le problème semble prendre une forme très euclidienne, étroitement couplée à des algorithmes GCD multidimensionnels. Suis-je en train de manquer quelque chose? x d ( x , H ) = 0inf d(x,H)=0xd(x,H)=0une
Steven Stadnicki

@StevenStadnicki à droite. vous pouvez supposer et (j'ajouterai cela à la question, je dois l'avoir manqué). l'entrée est donnée en représentation binaire standard. la question est intéressante même lorsque . alors il suffit de considérer toutes les solutions possibles avec , mais la recherche bruteforce sera superpolynomiale dans la représentation binaire de . b Z n = 2 ( x 1 , x 2 ) x 1| un 1 | / g c d ( a 1 , a 2 ) a 1 , a 2uneZnbZn=2(x1,x2)x1|a1|/gcd(a1,a2)a1,a2
Sasho Nikolov

Réponses:


5

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=2n xx

  • Si , alors l'ensemble des valeurs prises par est précisément ; en outre, les valeurs et avec peuvent être trouvées efficacement (c'est exactement l'algorithme euclidien étendu).ax = a 1 x 1 + a 2 x 2 { 0 , ± g , ± 2 g , ± 3 g , } x 1 x 2 a 1 x 1 + a 2 x 2 = gg=GCD(a1,a2)ax=a1x1+a2x2{0,±g,±2g,±3g,}x1x2a1x1+a2x2=g
  • La distance minimale de l'hyperplan à un point du réseau est la distance minimale d'un point du réseau à l'hyperplan (évidente, mais une inversion utile du problème).
  • La distance d'un point donné à l'hyperplan est proportionnelle à(spécifiquement, c'est fois cette valeur - mais comme la multiplication de toutes les distances par cette valeur n'a aucun effet sur l'emplacement du minimum, nous pouvons ignorer le facteur de normalisation).ay = b | axxay=b1 / | a ||axb|1/|a|

Cela suggère la procédure suivante:

  • Calculez , avec telle sorte que .x 0 1 , x 0 2 a 1 x 0 1 + a 2 x 0 2 = gg=GCD(a1,a2)x10,x20a1x10+a2x20=g
  • Calculez et calculez ; est la distance minimale (mise à l'échelle) du réseau à l'hyperplan. Soit soit soit ( = bd=min(b-rg,(r+1)g-b)dsrr+1r=bgd=min(brg,(r+1)gb)dsrr+1, sauf sibest un multiple deg) selon celui qui atteint la distance minimale.=bgbg
  • Calculer et x 2 = s x 0 2 ; alors est le multiple le plus proche de à , et doncatteint le minimum de cette distance sur tous les points du réseau.x1=sx10x2=sx20ax=sggb|axb|

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 à .ngb

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.