Lösen einer linearen Diophantingleichung ungefähr

15

Betrachten Sie das folgende Problem:

Eingabe : eine Hyperebene H={yRn:aTy=b} , gegeben durch einen Vektor aZn und bZ in binärer Standarddarstellung.

xZn=argmind(x,H)

In der obigen Notation ist für und definiert als , dh es ist der natürliche euklidische Abstand zwischen einer Menge von Punkten und einem einzelnen Punkt .d(x,S)xRnSRnd(x,S)=minySxy2

In Worten, wir erhalten eine Hyperebene und suchen den Punkt im Ganzzahlgitter, der der Hyperebene am nächsten liegt.

Die Frage ist:

Wie komplex ist dieses Problem?

Beachten Sie, dass Polynomzeit hier Polynom in der Bitgröße des Eingangs bedeutet. Soweit ich sehen kann, ist das Problem auch in zwei Dimensionen interessant. Dann ist es nicht schwer zu erkennen, dass es ausreicht, nur die Lösungen (x1,x2) mit 0x1|a1|/gcd(a1,a2) aber das sind superpolynomiell viele Optionen.

Ein eng verwandtes Problem ist das Lösen einer linearen diophantinen Gleichung, dh das Finden eines so dass \ mathbf {a} ^ T \ mathbf {x} = b oder das Bestimmen, dass kein solches \ mathbf {x} existiert. Das Lösen einer linearen Diophantingleichung ist also gleichbedeutend mit der Feststellung, ob für das oben definierte Problem eine Lösung mit dem Wert 0 vorliegt. Eine lineare Diophantingleichung kann in Polynomzeit gelöst werden; Tatsächlich können sogar Systeme linearer diophantiner Gleichungen in Polynomzeit gelöst werden, indem die Smith-Normalform der Matrix \ mathbf {A} berechnet wird , die das System ergibt. Es gibt polynomielle Zeitalgorithmen, die die Smith-Normalform einer Ganzzahlmatrix berechnen, die erste, die durch gegeben istxZnaTx=bxAKannan und Bachem .

Um einen Einblick in lineare diophantische Gleichungen zu erhalten, können wir den zweidimensionalen Fall noch einmal betrachten. Es ist klar, dass es keine genaue Lösung gibt, wenn nicht teilt . Wenn , können Sie den erweiterten GCD-Algorithmus ausführen, um zwei Zahlen und so zu erhalten, dass und und . Jetzt können Sie sehen, wie sich die ungefähre Version unterscheidet: Wenn nicht teilt , wie finden wir die Ganzzahlengcd(a1,a2)bbsta1s+a2t=gcd(a1,a2)x1=sb/gcd(a1,a2)x2=tb/gcd(a1,a2)gcd(a1,a2)bx1,x2so dass der Abstand zwischen (x1,x2) und der Linie a1x1+a2x2=b minimiert wird?

Das Problem klingt für mich ein bisschen wie das nächstliegende Vektorproblem in Gittern, aber ich sehe keine offensichtliche Reduktion von einem Problem zum anderen.

Sasho Nikolov
quelle
Nein, das ist nicht der Fall: Die Diophantin-Approximation ist ein anderes Problem als die Lösung einer Diophantin-Gleichung. In einem diophantinen Approximationsproblem erhalten Sie reelle Zahlen, und Sie möchten sie alle mit einer einzelnen ganzen Zahl multiplizieren, so dass alle von einer ganzen Zahl innerhalb von . Das Problem besteht darin, den optimalen Kompromiss zwischen der Größe von und . Ich sehe keinen Zusammenhang zwischen meinem Problem und diesem. nQϵQϵ
Sasho Nikolov
Was ist Ihr Eingabeformat? Es scheint, als wären zwei Koordinatenwerte von inkommensurat, dann ist das fragliche Minimum Null (schneide mit der entsprechenden zweidimensionalen Ebene, um eine Gleichung der Form mit und incommensurat zu erhalten , dh irrational, und verwenden dann die Standard - Ergebnisse auf zu zeigen , dass die Leitung zum Gitterpunkten beliebig nahe passiert. s x + t y = w s t α sasx+ty=wstαst{nα}(mod1)
Steven Stadnicki
Dies bedeutet insbesondere, dass Ihre 'min' eine 'inf' sein sollte (da Sie unendlich viele Punkte übernehmen) und das Problem, ob unterscheidet sich von der Frage, ob mit . Dies bedeutet, dass die Koeffizienten von rationale Zahlen sein müssen, damit das Problem keine triviale Lösung findet. Dann scheint das Problem eine sehr euklidische Form anzunehmen, die eng an mehrdimensionale GCD-Algorithmen gekoppelt ist. Vermisse ich etwas? inf d(x,H)=0xd(x,H)=0a
Steven Stadnicki
@StevenStadnicki richtig. Sie können annehmen, dass und (das werde ich der Frage hinzufügen, ich muss es verpasst haben). Die Eingabe erfolgt in Standard-Binärdarstellung. Die Frage ist auch dann interessant, wenn . dann ist es ausreichend, alle möglichen Lösungen mit , aber die Bruteforce-Suche wird in der binären Darstellung von superpolynomial sein . aZnbZn=2(x1,x2)x1|a1|/gcd(a1,a2)a1,a2
Sasho Nikolov

Antworten:

5

Gut, nachdem ich mehr darüber nachgedacht habe, glaube ich, dass ich eine explizite Reduktion von diesem Problem auf erweitertes GCD habe; Ich werde es im Fall erklären , aber ich glaube, dass es sich auf beliebiges . Beachten Sie, dass dies ein ergibt , das den Abstand zur Hyperebene minimiert, aber nicht unbedingt den kleinsten (es gibt tatsächlich unendlich viele Werte, die den gleichen Mindestabstand erreichen) - ich glaube, das letztere Problem ist auch machbar, habe aber noch nicht wirklich darüber nachgedacht. Der Algorithmus basiert auf einigen einfachen Prinzipien:n=2n xx

  • Wenn , dann ist die Menge der Werte, die von werden, genau ; Außerdem können Werte und mit effizient gefunden werden (dies ist genau der erweiterte euklidische Algorithmus).g=GCD(a1,a2)ax=a1x1+a2x2{0,±g,±2g,±3g,}x1x2a1x1+a2x2=g
  • Der minimale Abstand von der Hyperebene zu einem Punkt auf dem Gitter ist der minimale Abstand von einem Punkt auf dem Gitter zur Hyperebene (offensichtlich, aber eine nützliche Umkehrung des Problems).
  • Der Abstand von einem gegebenen Punkt zur Hyperebene ist proportional zu(Insbesondere ist es das -fache dieses Werts. Da jedoch das Multiplizieren aller Abstände mit diesem Wert keine Auswirkung auf die Position des Minimums hat, können wir den Normalisierungsfaktor ignorieren.)xay=b|axb|1/|a|

Dies schlägt die folgende Prozedur vor:

  • Berechne zusammen mit so dass .g=GCD(a1,a2)x10,x20a1x10+a2x20=g
  • Berechne und berechne ; ist der (skalierte) Mindestabstand vom Gitter zur Hyperebene. Let entweder oder ( , es sei denn ein Vielfaches von ist ) in Abhängigkeit von der man erreicht den minimalen Abstand.r=bgd=min(brg,(r+1)gb)dsrr+1=bgbg
  • Berechne und ; dann ist das nächste Vielfache von zu und somitErreicht das Minimum dieser Distanz über alle Gitterpunkte.x1=sx10x2=sx20ax=sggb|axb|

Soweit ich weiß, sollte das gleiche Verfahren in beliebigen Dimensionen korrekt funktionieren. Der Schlüssel ist, dass die dimensionale GCD immer noch Bezouts Identität erfüllt. Um den Mindestabstand zu einem Gitterpunkt zu finden, muss nur das nächste Vielfache von zu .ngb

Steven Stadnicki
quelle