Risolvere un'equazione diottantina lineare approssimativamente


15

Considera il seguente problema:

Input : un hyperplane , dato da un vettore e nella rappresentazione binaria standard.H={yRn:aTy=b}aZnbZ

Output :xZn=argmind(x,H)

Nella notazione sopra per e è definito come , ovvero è la distanza euclidea naturale tra un insieme di punti e un singolo punto .d(x,S)xRnSRnd(x,S)=minySxy2

In parole, ci viene dato un iperpiano e stiamo cercando il punto nel reticolo intero che è più vicino all'iperpiano.

La domanda è:

Qual è la complessità di questo problema?

Si noti che il tempo polinomiale qui significherà polinomio nella dimensione in bit dell'input. Per quanto posso vedere il problema è interessante anche in due dimensioni. Quindi non è difficile vedere che è sufficiente considerare solo quelle soluzioni (x1,x2) con 0x1|a1|/gcd(a1,a2) ma sono molte opzioni superpolinomiali.

Un problema strettamente correlato è la risoluzione di un'equazione diottantina lineare, ovvero la ricerca di un xZn tale che aTx=b o la determinazione del fatto che no x esiste. Quindi, risolvere un'equazione diofantea lineare equivale a determinare se esiste una soluzione di valore 0 al problema che ho definito sopra. Un'equazione diofantea lineare può essere risolta in tempo polinomiale; infatti anche i sistemi di equazioni diottantine lineari possono essere risolti in tempo polinomiale calcolando la forma normale di Smith della matrice A fornisce il sistema. Esistono algoritmi temporali polinomiali che calcolano la forma normale di Smith di una matrice intera, la prima data daKannan e Bachem .

Per ottenere intuizione sulle equazioni diottantine lineari possiamo considerare di nuovo il caso bidimensionale. Chiaramente, non esiste una soluzione esatta se gcd(a1,a2) non divide b . Se divide b , è possibile eseguire l'algoritmo GCD esteso per ottenere due numeri s e t tali che a1s+a2t=gcd(a1,a2) e impostare x1=sb/gcd(a1,a2) e x2=tb/gcd(a1,a2) . Ora puoi vedere come la versione approssimativa è diversa: quando gcd(a1,a2) non divide b , come possiamo trovare gli interi x1,x2tale che la distanza tra (x1,x2) e la linea a1x1+a2x2=b è ridotta al minimo?

Il problema per me suona un po 'come il problema del vettore più vicino nei reticoli, ma non vedo un'ovvia riduzione da un problema all'altro.



no non lo è: l'approssimazione diofantina è un problema diverso dalla risoluzione di un'equazione diottantina. in un problema di approssimazione diottantina ti vengono dati numeri reali e vuoi moltiplicarli tutti per un singolo numero intero modo che tutti siano entro da un numero intero. il problema è trovare il compromesso ottimale tra le dimensioni di e . Non vedo una relazione tra il mio problema e questo. Q ϵ Q ϵnQϵQϵ
Sasho Nikolov,

Qual è il tuo formato di input? Sembra che se due valori di coordinate di sono accurati, allora il minimo in questione è zero (si intersecano con il piano bidimensionale appropriato per ottenere un'equazione della forma con e incommensurate , ad esempio irrazionale, quindi usa i risultati standard su per mostrare che la linea passa arbitrariamente vicino ai punti reticolari. s x + t y = w s t αasx+ty=wstαst{nα}(mod1)
Steven Stadnicki,

In particolare, questo significa che il tuo 'min' dovrebbe essere un 'inf' (sinuso che lo stai prendendo su infiniti punti) e il problema se si distingue dalla domanda se esiste qualche con . Ciò significa che i coefficienti di devono essere numeri razionali affinché il problema abbia una soluzione non banale, e quindi il problema sembra assumere una forma molto euclidea, strettamente accoppiata agli algoritmi GCD multidimensionali. Mi sto perdendo qualcosa? x d ( x , H ) = 0 ainf d(x,H)=0xd(x,H)=0a
Steven Stadnicki,

@StevenStadnicki giusto. puoi assumere e (lo aggiungerò alla domanda, devo averlo perso). l'input è dato nella rappresentazione binaria standard. la domanda è interessante anche quando . allora è sufficiente considerare tutte le possibili soluzioni con , ma la ricerca bruteforce sarà superpolinomiale nella rappresentazione binaria di . b Z n = 2 ( x 1 , x 2 ) x 1| a 1 | / g c d ( a 1 , a 2 ) a 1 , a 2aZnbZn=2(x1,x2)x1|a1|/gcd(a1,a2)a1,a2
Sasho Nikolov,

Risposte:


5

Va bene, dopo averci pensato di più credo di avere una riduzione esplicita da questo problema a GCD esteso; Lo spiegherò nel caso , ma credo che si estenda a arbitrario . Nota che questo trova un che minimizza la distanza dall'iperpiano, ma non necessariamente il più piccolo (in effetti ci sono infiniti valori che raggiungono la stessa distanza minima) - Credo che l'ultimo problema sia fattibile, ma non ci ho ancora pensato. L'algoritmo si basa su alcuni semplici principi:n x xn=2n xx

  • Se , il set di valori assunto da è precisamente ; inoltre, i valori e con possono essere trovati in modo efficiente (questo è esattamente l'algoritmo euclideo esteso).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 distanza minima dall'iperpiano a un punto sul reticolo è la distanza minima da un punto sull'interpiano all'iperpiano (ovvio, ma utile inversione del problema).
  • La distanza da un dato punto all'iperpiano è proporzionale a(in particolare, è volte questo valore - ma poiché moltiplicare tutte le distanze per questo valore non ha alcun effetto sulla posizione del minimo, possiamo ignorare il fattore di normalizzazione).ay = b | ax - b | 1 / | a |xay=b|axb|1/|a|

Ciò suggerisce la seguente procedura:

  • Calcola , insieme a tale che .x 0 1 , x 0 2 a 1 x 0 1 + a 2 x 0 2 = gg=GCD(a1,a2)x10,x20a1x10+a2x20=g
  • Calcola e calcola ; è la distanza minima (ridimensionata) dal reticolo all'iperpiano. Let essere o o ( , a meno che è un multiplo di ) a seconda di quale si raggiunge la distanza minima.d=min(b-rg,(r+1)g-b)dsrr+1=r=bgd=min(brg,(r+1)gb)dsrr+1b=bgbg
  • Calcola e ; allora è il multiplo più vicino di a , e quindiraggiunge il minimo di questa distanza su tutti i punti reticolari. x 2 = s x 0 2 ax = s g g b | ax - b |x1=sx10x2=sx20ax=sggb|axb|

Per quanto ne so, la stessa identica procedura dovrebbe funzionare correttamente in dimensioni arbitrarie; la chiave è che il GCD dimensionale soddisfa ancora l'identità di Bezout, e quindi per trovare la distanza minima da un punto reticolare devi solo trovare il multiplo più vicino di a .g bngb

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.