Làm cách nào để sử dụng thứ tự chính tắc để giảm tính đối xứng trong mã hóa SAT của bài toán pigeonhole?


8

Trong bài báo "Mã hóa CNF hiệu quả để chọn 1 từ N Đối tượng", các tác giả giới thiệu kỹ thuật "biến chỉ huy" của họ để mã hóa ràng buộc, và sau đó nói về vấn đề chuồng bồ câu.

Vì lỗi của tôi có thể tồn tại trong sự hiểu biết ở cấp độ thấp hơn, hãy để tôi khai báo những gì tôi nghĩ tôi biết trước khi đặt câu hỏi:

Gọi và là số lượng chim bồ câu và lỗ. Mã hóa ngây thơ sử dụng một biến mệnh đề đó là sự thật khi pigeon là để được đặt trong lỗ. Mệnh đề buộc chim bồ câu 1 phải chiếm chính xác một lỗ; mệnh đề giống hệt được thêm cho các con bồ câu khác. Mệnh đề cho rằng không có nhiều hơn một con chim bồ câu chiếm lỗ 1; mệnh đề giống hệt được thêm vào cho các lỗ còn lại.n X i , j i ' t h j ' t h E x một c t l y O n e ( X 1 , 1 , X 1 , 2 , . . . , X 1 , n ) Một t M o s t O n e ( X 1 , 1 , X 2mnXTôi,jTôi'thj'thExmộtcttôiyÔine(X1,1,X1,2,...,X1,n)AtMostOne(X1,1,X2,1,...,Xm,1)

Khi có nhiều chim bồ câu hơn lỗ (m> n), vấn đề là không thể giải quyết được (rõ ràng đối với con người) nhưng người giải SAT không "nhìn thấy" sự thật này. Khi không thể tìm được cách đặt chim bồ câu nó sẽ tìm kiếm một nỗ lực với chim bồ câu . Nó không hiểu rằng thứ tự của chim bồ câu là không liên quan. Bài báo, trong số những người khác, gọi đây là đối xứng.2 , 1 , 3 , . . . , m1,2,3,..,m2,1,3,...,m

Các trường hợp trong đó được sử dụng như một bài kiểm tra vất vả về khả năng của người giải SAT để phát hiện sự không thỏa mãn.m= =n+1

Bài viết đề xuất phá vỡ tính đối xứng bằng cách thực thi trật tự trên chim bồ câu. Bồ câu phải được đặt vào một lỗ trước lỗ của chim bồ câu (nghĩa là chim bồ câu trong lỗ phải có số lượng nhỏ hơn chim bồ câu trong lỗ ). Sau đó, nó gây thất vọng khi nói: "Do giới hạn về không gian, chúng tôi không mô tả rõ ràng chi tiết về mã hóa theo thứ tự chính tắc, nhưng số mệnh đề được tạo ra là theo thứ tự ".i + 1 j j + 1 O ( n l o g ( n ) )TôiTôi+1jj+1O(nlog(n))

Vì vậy, câu hỏi của tôi là: họ đã làm gì để có được những kết quả này?

Tôi muốn coi các biến là chuỗi các bit, bằng số, xác định lựa chọn chim bồ câu đi vào lỗ 1, v.v. Thực hiện theo điều này với so sánh để thực thi đề xuất của bài báo. Xây dựng bộ so sánh ngây thơ của tôi, tuy nhiên, đòi hỏi m mệnh đề, một mệnh đề cho mỗi bit (có kích thước ngày càng xấu). Cứu giúp! :)n - 1{X1,1,X2,1,...,Xm,1}n1

Câu trả lời:


7

Gọi là số lượng chim bồ câu và là số lượng lỗ. Đặt các biến mệnh đề ... mã hóa biểu diễn nhị phân của nếu chim bồ câu thứ được đưa vào lỗ thứ . (Ví dụ: nếu chim bồ câu 1 được đặt vào lỗ 10, , là nhị phân 1001. Vậy = true, = false, = false và = đúng.)n B i , 0 B i , l o g ( n ) j - 1 i j j - 1 = 9 B 1 , 3 B 1 , 2 B 1 , 1mnBi,0Bi,log(n)j1ijj1=9B1,3B1,2B1,1B1,0

Thực thi một thứ tự cụ thể của chim bồ câu trong các lỗ bằng cách yêu cầu lỗ được mã hóa bởi các biến nhỏ hơn . Các bảng mã được so sánh như bạn mong đợi:BTôiBi+1

B i + 1 , l o g ( n ) B i , l o g ( n ) B i + 1 , l o g ( n ) B i , l o g ( n ) - 1 BBi,log(n) < HOẶC = VÀ < HOẶC = VÀ = VÀ < HOẶC ... Bi+1,log(n)

Bi,log(n)Bi+1,log(n)BTôi,tôiog(n)-1 B i , l o g ) - 2 B i +BTôi+1,tôiog(n)-1

B o g ( nBTôi,tôiog(n) B i , l o g ( n ) - 1 B i + 1 , l o g ( n ) - 1 B i , lBTôi+1,tôiog(n)BTôi,tôiog(n)-1BTôi+1,tôiog(n)-1BTôi,tôiog(n)-2BTôi+1,tôiog(n)-2

... Theo mô hình cho phép các bit quan trọng nhất tương đương miễn là bit tiếp theo bên phải nhỏ hơn so với chim bồ câu tiếp theo. Sẽ có các liên từ trên mỗi bộ so sánh và bộ so sánh , đưa ra các mệnh đề bổ sung dự kiến .O ( m ) O ( m l oO(log(n))O(m)O(mlog(n))

Các giá trị biến phải được ngụ ý bởi các giá trị . Mỗi bit được ngụ ý bởi bất kỳ một trong một tập hợp cụ thể nào của các biến đang được đặt. Ví dụ: giả sử , bạn sẽ có:X i , j B i , X i , jBXi,jBi,Xi,jn=16

ExactlyOne(X1,9,X1,10,X1,11,X1,12,X1,13,X1,14,X1,15,X1,16,B1,3¯)

bắt buộc đúng nếu chim bồ câu 1 được đặt trong bất kỳ lỗ nào 9-16. khác, được đặt sai để thỏa mãn mệnh đề. Các mệnh đề này đặt các bit còn lại . BB1,3B1,3Bi

E x a cExactlyOne(X1,5,X1,6,X1,7,X1,8,X1,13,X1,14,X1,15,X1,16,B1,2¯) E x a c t l y OExactlyOne(X1,3,X1,4,X1,7,X1,8,X1,11,X1,12,X1,15,X1,16,B1,1¯) ExactlyOne(X1,2,X1,4,X1,6,X1,8,X1,10,X1,12,X1,14,X1,16,B1,0¯)

Sẽ có của các mệnh đề này cho mỗi con chim bồ câu. Vì có chim bồ câu, mệnh đề được thêm vào.m m l o g ( n )log(n)mmlog(n)


Cám ơn phản hồi của bạn! Nhưng không có các mệnh đề bổ sung cần thiết để thực thi mã hóa nhị phân? Sử dụng ví dụ của bạn với chim bồ câu 1 được đặt vào lỗ 10, tôi nghĩ rằng các mệnh đề bắt buộc phải bắt buộc . Điều này mở rộng để các mệnh đề trong CNF. Và chúng ta cần một cái cho mỗi , dẫn đến tăng trưởng một lần nữa. l o g ( n ) X i , j m * nX1,10B1,3B1,2¯B1,1¯B1,0log(n)XTôi,jm*n
Andrew Lamoureux

Tôi sẽ chỉnh sửa câu trả lời để giải quyết vấn đề này.
Kyle Jones

Sử dụng để "nén" verbose "nếu chim bồ câu đến đây, các bit phải là" câu lệnh này thật tuyệt vời! Vì ràng buộc này là chủ đề của bài báo của họ, không còn nghi ngờ gì nữa, giải pháp của bạn là những gì đã bị bỏ qua. Cảm ơn Kyle! ExmộtcttôiyÔine()
Andrew Lamoureux
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.