Memecahkan persamaan linear diophantine sekitar

15

Pertimbangkan masalah berikut:

Input : hyperplane H = { yR n : a T y = b }H={yRn:aTy=b} , diberikan oleh vektor dan dalam representasi biner standar .aZ naZn b ZbZ

Output :xZ n = arg min d ( x , H )xZn=argmind(x,H)

Dalam notasi di atas untuk \ mathbf {x} \ in \ mathbb {R} ^ n dan S \ subseteq \ mathbb {R} ^ n didefinisikan sebagai d (\ mathbf {x} , S) = \ min _ {\ mathbf {y} \ dalam S} {\ | \ mathbf {x} - \ mathbf {y}} \ | _2 , yaitu jarak euclidean alami antara set titik dan satu titik .d ( x , S ) d(x,S)xR nxRn S R nSRn d ( x , S ) = menit ySx - y2d(x,S)=minySxy2

Dengan kata lain, kami diberi hyperplane dan kami sedang mencari titik di kisi integer yang paling dekat dengan hyperplane.

Pertanyaannya adalah:

Apa kompleksitas masalah ini?

Perhatikan bahwa waktu polinomial di sini akan berarti polinomial dalam bitsize input. Sejauh yang saya bisa lihat masalah ini menarik bahkan dalam dua dimensi. Maka tidak sulit untuk melihat bahwa itu cukup untuk mempertimbangkan hanya solusi-solusi tersebut ( x 1 , x 2 )(x1,x2) dengan 0 x 1| a 1 | / g c d ( a 1 , a 2 )0x1|a1|/gcd(a1,a2) tetapi itu adalah banyak pilihan superpolynomially .

Masalah yang berkaitan erat adalah memecahkan persamaan linear diophantine, yaitu menemukan xZ nxZn sedemikian rupa sehingga a T x =baTx=b atau menentukan bahwa tidak ada seperti itu xx ada. Jadi, menyelesaikan persamaan linear diophantine setara dengan menentukan apakah ada solusi nilai 0 untuk masalah yang saya definisikan di atas. Persamaan diophantine linier dapat diselesaikan dalam waktu polinomial; bahkan sistem persamaan linear diophantine dapat diselesaikan dalam waktu polinomial dengan menghitung bentuk Smith normal dari matriks SEBUAHA memberikan sistem. Ada algoritma waktu polinomial yang menghitung bentuk normal Smith dari matriks integer, yang pertama diberikan olehKannan dan Bachem .

Untuk mendapatkan intuisi tentang persamaan linear diophantine kita dapat mempertimbangkan kasus dua dimensi lagi. Jelas, tidak ada solusi yang tepat jika tidak membagi . Jika memang membagi , maka Anda dapat menjalankan algoritme GCD yang diperluas untuk mendapatkan dua angka dan sehingga dan set dan . Sekarang Anda dapat melihat perbedaan versi perkiraan: ketika tidak membagi , bagaimana kita menemukan bilangan bulatg c d ( a 1 , a 2 ) b 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 ) x 2 = t b / g c d ( a 1 ,gcd(a1,a2)bbsta1s+a2t=gcd(a1,a2)x1=sb/gcd(a1,a2)a2)x2=tb/gcd(a1,a2)gcd(a1,a2)gcd(a1,a2)bbx1,x2x1,x2sedemikian rupa sehingga jarak antara dan garis diminimalkan?(x1,x2)(x1,x2)a1x1+a2x2=ba1x1+a2x2=b

Masalahnya bagi saya terdengar sedikit seperti masalah vektor terdekat dalam kisi-kisi, tapi saya tidak melihat pengurangan yang jelas dari salah satu masalah ke yang lain.

Sasho Nikolov
sumber
tidak itu tidak: pendekatan diophantine adalah masalah yang berbeda dari penyelesaian persamaan diophantine. dalam masalah perkiraan diophantine Anda diberi bilangan real dan Anda ingin melipatgandakan mereka semua dengan bilangan bulat tunggal sehingga semuanya berada dalam dari bilangan bulat. masalah di sana adalah menemukan tradeoff yang optimal antara ukuran dan . Saya tidak melihat hubungan antara masalah saya dan yang ini. nnQQϵϵQQϵϵ
Sasho Nikolov
Apa format input Anda? Tampaknya seolah-olah ada dua nilai koordinat yang tidak seimbang maka minimum yang dimaksud adalah nol (berpotongan dengan bidang 2 dimensi yang sesuai untuk mendapatkan persamaan bentuk dengan dan tidak sebanding) , yaitu irasional, dan kemudian menggunakan hasil standar di untuk menunjukkan bahwa garis lewat secara sewenang-wenang dekat dengan titik-titik kisi.aasx+ty=wsx+ty=wssttαstαst{nα}(mod1){nα}(mod1)
Steven Stadnicki
Secara khusus, ini berarti bahwa 'min' Anda harus menjadi 'inf' (karena Anda mengambil alih banyak poin), dan masalah apakah berbeda dari pertanyaan apakah ada beberapa dengan . Ini berarti koefisien harus berupa bilangan rasional agar masalah memiliki solusi nontrivial, dan kemudian masalahnya tampaknya mengambil bentuk yang sangat Euclidean, yang digabungkan erat dengan algoritma GCD multidimensi. Apakah saya melewatkan sesuatu? inf d(x,H)=0inf d(x,H)=0xxd(x,H)=0d(x,H)=0aa
Steven Stadnicki
@StevenStadnicki benar. Anda dapat mengasumsikan dan (saya akan menambahkannya ke pertanyaan, saya pasti melewatkannya). input diberikan dalam representasi biner standar. pertanyaannya menarik bahkan ketika . maka cukup untuk mempertimbangkan semua solusi yang mungkin dengan , tetapi pencarian bruteforce akan superpolinomial dalam representasi biner . aZnaZnbZbZn=2n=2(x1,x2)(x1,x2)x1|a1|/gcd(a1,a2)x1|a1|/gcd(a1,a2)a1,a2a1,a2
Sasho Nikolov

Jawaban:

5

Baiklah, setelah memikirkannya lebih lanjut, saya yakin saya memiliki pengurangan eksplisit dari masalah ini menjadi GCD yang diperluas; Saya akan menjelaskannya dalam kasus , tapi saya percaya bahwa itu meluas ke arbitrary . Perhatikan bahwa temuan ini merupakan yang meminimalkan jarak ke hyperplane tersebut, tetapi belum tentu terkecil (sebenarnya ada jauh lebih banyak nilai-nilai yang mencapai jarak minimum yang sama) - Saya percaya masalah yang terakhir adalah juga layak, tetapi belum memberikan pemikiran nyata. Algoritma ini didasarkan pada beberapa prinsip sederhana:n=2n=2nn xxxx

  • Jika , maka himpunan nilai diambil oleh tepatnya ; lebih jauh, nilai dan dengan dapat ditemukan secara efisien (ini persis dengan algoritma Euclidean yang diperluas).g=GCD(a1,a2)g=GCD(a1,a2)ax=a1x1+a2x2ax=a1x1+a2x2{0,±g,±2g,±3g,}{0,±g,±2g,±3g,}x1x1x2x2a1x1+a2x2=ga1x1+a2x2=g
  • Jarak minimum dari hyperplane ke titik pada kisi adalah jarak minimal dari titik pada kisi ke hyperplane (jelas, tetapi merupakan inversi masalah yang berguna).
  • Jarak dari titik tertentu ke hyperplane sebanding dengan(khususnya kali nilai ini - tetapi karena mengalikan semua jarak dengan nilai ini tidak berpengaruh pada lokasi minimum, kita dapat mengabaikan faktor normalisasi).xay=b|axb|1/|a|

Ini menyarankan prosedur berikut:

  • Hitung , bersama dengan sedemikian rupa sehingga .g=GCD(a1,a2)x01,x02a1x01+a2x02=g
  • Hitung dan hitung ; adalah jarak minimal (skala) dari kisi ke hyperplane. Mari kita berupa atau ( , kecuali merupakan kelipatan dari ) tergantung mana yang mencapai jarak minimal.r=bgd=min(brg,(r+1)gb)dsrr+1=bgbg
  • Hitung dan ; maka adalah kelipatan terdekat dari ke , dan dengan demikianmencapai minimum jarak ini di atas semua titik kisi.x1=sx01x2=sx02ax=sggb|axb|

Sejauh yang saya tahu, prosedur yang sama persis harus bekerja dengan benar dalam dimensi arbitrer; kuncinya adalah bahwa GCD dimensi masih memenuhi identitas Bezout, dan untuk menemukan jarak minimum ke titik kisi, Anda hanya perlu menemukan kelipatan terdekat hingga .ngb

Steven Stadnicki
sumber