Hãy xem xét vấn đề sau:
Input : a siêu phẳng H = { y ∈ R n : một T y = b }H={y∈Rn:aTy=b} , được đưa ra bởi một vector một ∈ Z na∈Zn và b ∈ Zb∈Z trong biểu diễn nhị phân thông thường.
x ∈ Z n = arg min d ( x , H )x∈Zn=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)x ∈ R nx∈Rn S ⊆ R nS⊆Rn d ( x , S ) = min y ∈ S ‖ x - y ‖ 2d(x,S)=miny∈S∥x−y∥2
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 )0≤x1≤|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 x ∈ Z nx∈Zn 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ố Ss và tt 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) và 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.