Giải phương trình tuyến tính diophantine


15

Hãy xem xét vấn đề sau:

Input : a siêu phẳng H = { yR n : một T y = b }H={yRn:aTy=b} , được đưa ra bởi một vector mộtZ naZnb ZbZ trong biểu diễn nhị phân thông thường.

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

Trong ký hiệu trên cho và được định nghĩa là , tức là khoảng cách euclide tự nhiên giữa một tập hợp các điểm và một điểm duy nhất .d ( x , S ) d(x,S)xR nxRn S R nSRn d ( x , S ) = min ySx - y2d(x,S)=minySxy2

Nói cách khác, chúng ta đã cho một siêu phẳng và chúng ta đang tìm kiếm điểm trong mạng nguyên gần với siêu phẳng nhất.

Câu hỏi là:

Sự phức tạp của vấn đề này là gì?

Lưu ý rằng thời gian đa thức ở đây sẽ có nghĩa là đa thức trong kích thước bit của đầu vào. Theo như tôi có thể thấy vấn đề là thú vị ngay cả trong hai chiều. Sau đó, không khó để thấy rằng chỉ đủ để xem xét các giải pháp đó ( x 1 , x 2 )(x1,x2) với 0 x 1| một 1 | / g c d ( a 1 , a 2 )0x1|a1|/gcd(a1,a2) nhưng đó là nhiều lựa chọn đa phương.

Một vấn đề liên quan chặt chẽ là giải một phương trình diophantine tuyến tính, tức là tìm một xZ nxZn sao cho a T x =baTx=b hoặc xác định rằng không có xx tồn tại. Vì vậy, việc giải một phương trình diophantine tuyến tính tương đương với việc xác định xem có tồn tại một giải pháp có giá trị 0 cho vấn đề tôi đã xác định ở trên không. Một phương trình diophantine tuyến tính có thể được giải quyết trong thời gian đa thức; trong thực tế, ngay cả các hệ phương trình diophantine tuyến tính cũng có thể được giải trong thời gian đa thức bằng cách tính toán dạng bình thường Smith của ma trận MộtA đưa ra hệ thống. Có các thuật toán thời gian đa thức tính toán dạng bình thường Smith của một ma trận số nguyên, lần đầu tiên được đưa ra bởiKannan và Bachem .

Để có được trực giác về phương trình diophantine tuyến tính, chúng ta có thể xem xét trường hợp hai chiều một lần nữa. Rõ ràng, không có giải pháp chính xác nếu g c d ( a 1 , a 2 )gcd(a1,a2) không phân chia bb . Nếu nó chia bb , thì bạn có thể chạy thuật toán GCD mở rộng để có hai số Sstt sao cho a 1 s + a 2 t = g c d ( a 1 , a 2 )a1s+a2t=gcd(a1,a2) và đặt x 1 = s b / g c d ( a 1 , a 2 )x1=sb/gcd(a1,a2)x 2 = t b / g c d ( a 1 , a 2 )x2=tb/gcd(a1,a2) . Bây giờ bạn có thể thấy phiên bản gần đúng khác nhau như thế nào: khi g c d ( a 1 , a 2 )gcd(a1,a2) không chia bb , làm thế nào để chúng tôi tìm thấy số nguyên x 1 , x 2x1,x2sao cho khoảng cách giữa ( x 1 , x 2 )(x1,x2) và dòng a 1 x 1 + a 2 x 2 = ba1x1+a2x2=b được thu nhỏ?

Vấn đề với tôi nghe có vẻ giống như vấn đề vectơ gần nhất trong các mạng, nhưng tôi không thấy sự giảm rõ rệt từ vấn đề này sang vấn đề khác.



không, nó không: xấp xỉ diophantine là một vấn đề khác với việc giải phương trình diophantine. trong một bài toán gần đúng diophantine, bạn đã cho số thực và bạn muốn nhân tất cả chúng với một số nguyên để tất cả chúng nằm trong từ một số nguyên. vấn đề ở đây là tìm ra sự đánh đổi tối ưu giữa kích thước của và . Tôi không thấy mối quan hệ giữa vấn đề của tôi và vấn đề này. n Q ε Q εnQϵQϵ
Sasho Nikolov

Định dạng đầu vào của bạn là gì? Dường như nếu hai giá trị tọa độ của không tương xứng thì tối thiểu trong câu hỏi là 0 (giao với mặt phẳng 2 chiều thích hợp để có phương trình có dạng với và không tương xứng , tức là không hợp lý, sau đó sử dụng kết quả tiêu chuẩn trên để chỉ ra rằng đường truyền tùy ý gần với các điểm mạng.a s x + t y = w s t α sasx+ty=wstt {nα}αst( mod1 ){nα}(mod1)
Steven Stadnicki

Cụ thể, điều này có nghĩa là 'min' của bạn phải là 'inf' (bạn đang lấy nó vô số điểm) và vấn đề là khác với câu hỏi liệu có tồn tại một số với . Điều này có nghĩa là các hệ số của phải là số hữu tỷ cho bài toán để có giải pháp không cần thiết, và sau đó vấn đề dường như có dạng Euclide, kết hợp chặt chẽ với thuật toán GCD đa chiều. Tui bỏ lỡ điều gì vậy? i n f d ( x , H ) = 0  x d ( x , H ) = 0 ainf d(x,H)=0xd(x,H)=0a
Steven Stadnicki

@StevenStadnicki đúng. bạn có thể giả sử và (Tôi sẽ thêm nó vào câu hỏi, tôi phải bỏ qua nó). đầu vào được đưa ra trong biểu diễn nhị phân tiêu chuẩn. câu hỏi thú vị ngay cả khi . sau đó, đủ để xem xét tất cả các giải pháp có thể với , nhưng tìm kiếm bruteforce sẽ là siêu đa thức trong biểu diễn nhị phân của . mộtZ n b Z n = 2 ( x 1 , x 2 ) x 1| một 1 | / g c d ( a 1 , a 2 ) a 1 , a 2aZnbZn=2(x1,x2)x1|a1|/gcd(a1,a2)a1,a2
Sasho Nikolov

Câu trả lời:


5

Được rồi, đã nghĩ về nó nhiều hơn tôi tin rằng tôi đã giảm rõ ràng từ vấn đề này sang GCD mở rộng; Tôi sẽ giải thích nó trong trường hợp , nhưng tôi tin rằng nó mở rộng đến tùy ý . Lưu ý rằng điều này tìm thấy một thu nhỏ khoảng cách đến siêu phẳng, nhưng không nhất thiết là nhỏ nhất (thực tế có vô số giá trị đạt được khoảng cách tối thiểu giống nhau) - Tôi tin rằng vấn đề sau là cũng khả thi, nhưng chưa cho nó bất kỳ suy nghĩ thực sự nào. Thuật toán dựa trên một vài nguyên tắc đơn giản:n = 2 n x xn=2n xx

  • Nếu , thì tập hợp các giá trị được lấy bởi chính xác là ; hơn nữa, các giá trị và với có thể được tìm thấy một cách hiệu quả (đây chính xác là thuật toán Euclide mở rộng).g = G C D ( một 1 , một 2 ) mộtx = một 1 x 1 + một 2 x 2 { 0 , ± g , ± 2 g , ± 3 g , ... } x 1 x 2 một 1 x 1 + a 2 x 2 = gg=GCD(a1,a2)ax=a1x1+a2x2{0,±g,±2g,±3g,}x1x2a1x1+a2x2=g
  • Khoảng cách tối thiểu từ siêu phẳng đến một điểm trên mạng là khoảng cách tối thiểu từ một điểm trên mạng đến siêu phẳng (rõ ràng, nhưng là một sự đảo ngược hữu ích của vấn đề).
  • Khoảng cách từ một điểm đã cho đến siêu phẳng tỷ lệ thuận với(cụ thể, đó là lần giá trị này - nhưng vì nhân tất cả các khoảng cách với giá trị này không ảnh hưởng đến vị trí tối thiểu, chúng ta có thể bỏ qua hệ số chuẩn hóa).x ay = b | mộtx - b | 1 / | một |xay=b|axb|1/|a|

Điều này gợi ý các thủ tục sau đây:

  • Tính , cùng với sao cho .g = G C D ( a 1 , a 2 ) x 0 1 , x 0 2 a 1 x 0 1 + a 2 x 0 2 = gg=GCD(a1,a2)x01,x02a1x01+a2x02=g
  • Tính và tính ; là khoảng cách tối thiểu (tỷ lệ) từ mạng tinh thể đến siêu phẳng. Đặt là hoặc ( , trừ khi là bội số của ) tùy thuộc vào mức nào đạt được khoảng cách tối thiểu.r = bgr=bgd=min(brg,(r+1)gb)d=min(brg,(r+1)gb)ddssrrr+1r+1=bg=bgbg
  • Tính và ; thì là bội số gần nhất của với , và do đóđạt tối thiểu khoảng cách này trên tất cả các điểm mạng.x1=sx01x2=sx02ax=sggb|axb|

Theo tôi biết, quy trình chính xác sẽ hoạt động chính xác trong các kích thước tùy ý; chìa khóa là chiều GCD vẫn thỏa mãn sắc Bézout, và như vậy để tìm ra khoảng cách tối thiểu đến một điểm lưới bạn chỉ phải tìm bội số gần nhất của để .ngb

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.