Mã hóa ràng buộc 1-out-n cho người giải SAT


25

Tôi đang sử dụng một bộ giải SAT để mã hóa một vấn đề và là một phần của ví dụ SAT, tôi có các biến boolean trong đó có ý định rằng chính xác một trong những điều này là đúng và phần còn lại phải đúng là sai (Đôi khi tôi đã thấy điều này được mô tả là mã hóa "một nóng".)x1,x2,Giáo dục,xn

Tôi muốn để mã hóa các hạn chế "một cách chính xác một trong số phải đúng" trong SAT. Cách tốt nhất để mã hóa ràng buộc này là gì, để làm cho bộ giải SAT chạy hiệu quả nhất có thể?x1,Giáo dục,xn

Tôi có thể thấy nhiều cách để mã hóa ràng buộc này:

  • Ràng buộc theo cặp. Tôi có thể thêm trở ngại cặp cho tất cả i , j để đảm bảo rằng nhiều nhất một x i là đúng, và sau đó thêm x 1x 2x n để đảm bảo rằng ít nhất một là đúng.¬xtôi¬xjtôi,jxtôix1x2xn

    Điều này thêm các mệnh đề và không có biến boolean phụ.Θ(n2)

  • Mã hóa nhị phân. Tôi có thể giới thiệu biến boolean mới i 1 , i 2 , ... , i lg n để biểu diễn (ở dạng nhị phân) một số nguyên i như rằng 1 i n (thêm một vài trở ngại boolean để đảm bảo rằng tôi là trong phạm vi mong muốn ). Sau đó, tôi có thể thêm các ràng buộc thực thi rằng x i là cây và tất cả các x j khác đều sai. Nói cách khác, với mỗi j , chúng ta thêm các mệnh đề thực thi rằng i = jlgntôi1,tôi2,Giáo dục,tôilgntôi1tôintôixtôixjj .tôi= =jxj

    Điều này thêm các mệnh đề và tôi không biết có bao nhiêu biến boolean thêm.Θ(nlgn)

  • Đếm số lượng giá trị thực. Tôi có thể thực hiện một cây mạch cộng boolean và yêu cầu , coi mỗi x i là 0 hoặc 1 thay vì sai hoặc đúng và sử dụng biến đổi Tseitin để chuyển đổi mạch thành SAT điều khoản. Một cây gồm nửa cộng là đủ: giới hạn đầu ra mang của mỗi nửa cộng là 0 và buộc đầu ra cuối cùng của nửa cộng cuối trong cây là 1. Cây có thể được chọn có hình dạng bất kỳ ( cây nhị phân cân bằng, hoặc không cân bằng, hoặc bất cứ điều gì).x1+x2++xn=1xi

    Điều này có thể được thực hiện trong cửa và do đó cho biết thêm Θ ( n ) điều khoản và Θ ( n ) biến boolean mới.Θ(n)Θ(n)Θ(n)

    Một trường hợp đặc biệt của phương pháp này là để giới thiệu các biến boolean , với ý tưởng rằng y i nên chứa giá trị của x 1x 2x i . Mục đích này có thể được áp dụng bằng cách thêm các điều khoản y i¬ x i , y i¬ y i - 1 , và ¬ y ix iy i -y1,Giáo dục,ynytôix1x2xtôiytôi¬xtôiytôi¬ytôi-1 (trong đó chúng tôi coi y 0 là từ đồng nghĩa với sai) choi=1,xóa,n. Tiếp theo, chúng ta có thể thêm các hạn chế¬ y i¬ x i + 1 choi=1,2,...,n-1. Điều này về cơ bản tương đương với biến đổi Tseitin của cây nửa cộng, trong đó cây có hình dạng không cân đối tối đa.¬ytôixtôiytôi-1y0tôi= =1,Giáo dục,n¬ytôi¬xtôi+1tôi= =1,2,Giáo dục,n-1

  • Mạng bướm. Tôi có thể xây dựng một mạng lưới bướm trên bit, hạn chế n đầu vào -bit là 000 01 , hạn chế n đầu ra -bit là x 1 x 2x n , và đối xử với mỗi cổng bướm 2-bit như một cổng độc lập rằng hoán đổi hoặc không hoán đổi đầu vào của nó với quyết định sẽ làm gì dựa trên một biến boolean mới không bị giới hạn. Sau đó, tôi có thể áp dụng biến đổi Tseitin để chuyển đổi mạch thành mệnh đề SAT.nn00001nx1x2xn

    Điều này đòi hỏi cửa và do đó cho biết thêm Θ ( n lg n ) điều khoản và Θ ( n lg n ) biến boolean mới.Θ(nlgn)Θ(nlgn)Θ(nlgn)

Có phương pháp nào khác mà tôi đã bỏ qua không? Tôi nên sử dụng cái nào? Có ai đã thử nghiệm điều này hoặc thử chúng bằng thực nghiệm, hoặc có ai có bất kỳ kinh nghiệm nào với những điều này không? Số mệnh đề và / hoặc số lượng biến boolean mới có phải là số liệu dự phòng tốt để ước tính tác động của điều này đối với hiệu suất của bộ giải SAT hay không, nếu không, bạn sẽ sử dụng số liệu nào?


Tôi chỉ nhận thấy rằng câu trả lời này có một số tài liệu tham khảo về việc thực thi các ràng buộc về tim mạch đối với SAT, nghĩa là, thực thi các ràng buộc mà chính xác trong số các biến n là đúng. Vì vậy, câu hỏi của tôi đi đến một trường hợp đặc biệt trong đó k = 1 . Có lẽ các tài liệu về các ràng buộc về tim mạch sẽ giúp làm sáng tỏ câu hỏi của tôi.knk= =1


Hầu hết các bộ giải SAT hiện đại đều hỗ trợ các mệnh đề cardinality và các ràng buộc đặc biệt khác (không phải CNF).
Dávid Horváth

Câu trả lời:


12

Đối với trường hợp đặc biệt của k trong số n biến đúng trong đó k = 1, có mã hóa biến chỉ huy như được mô tả trong Mã hóa CNF hiệu quả để chọn 1 đến N Đối tượng của Klieber và Kwon. Đơn giản hóa: Chia các biến thành các nhóm nhỏ và thêm các mệnh đề khiến trạng thái của biến chỉ huy ngụ ý rằng một nhóm biến là sai hoặc tất cả nhưng sai. Sau đó đệ quy áp dụng cùng một thuật toán cho các biến chỉ huy. Vào cuối quá trình yêu cầu rằng chính xác một trong số ít các biến chỉ huy cuối cùng là đúng. Kết quả là O (n) mệnh đề mới và O (n) biến mới.

Do tính phổ biến của hai chữ theo dõi trong các bộ giải dựa trên DPLL, tôi nghĩ rằng sự tăng trưởng mệnh đề O (n) là một lợi thế quyết định đối với các sơ đồ mã hóa sẽ thêm nhiều mệnh đề.


2
Nếu "nhóm nhỏ" có kích thước hai, thì đây chỉ là phép cộng nhị phân, trong đó "chỉ huy" là bit kết quả và giá trị được xác nhận là sai. Thực hiện đệ quy, phương pháp này hoàn toàn tổng quát (hoạt động cho 1 trong N) và thực tế khả thi.
d8d0d65b3f7cf42

3

Một bài báo của Magnus Bjork mô tả hai kỹ thuật có thể đáng để thử.

Đối với 1-out-of- , người ta có thể sử dụng cả hai một nóng mã hóa nhị phân cùng một lúc. Do đó, chúng ta có x 1 , ... , x n là một mã hóa một nóng, và y 1 , ... , y b là một mã hóa nhị phân, nơi b = lg n . Chúng ta có thể mã hóa các "ít nhất một" hạn chế một cách dễ dàng, trong một điều khoản duy nhất: ( x 1x n ) . Chúng ta cũng có thể buộc hai bảng mã phải phù hợp với 2 lg nnx1,Giáo dục,xny1,Giáo dục,ybb= =lgn(x1xn)2lgnmệnh đề: chúng ta chỉ cần thêm hay x ixtôi¬yj , tùy theobit thứ j của mã hóa nhị phân của i là 0 hay 1. Cuối cùng, ràng buộc "nhiều nhất là một" sẽ tự động theo sau. Điều này cũng cho phép phần còn lại của ví dụ SAT sử dụng mã hóa nào thuận tiện hơn.xtôiyjjtôi

Đối với out-of- n , người ta có thể áp dụng một mạng lưới phân loại để đầu vào x 1 , ... , x n để có được kết quả sắp xếp y 1 , ... , y n , và sau đó thêm một điều khoản đòi hỏi rằng y k là đúng và y k + 1 là sai. Có một số mạng sắp xếp đơn giản chỉ cần các đơn vị so sánh O ( n lg 2 n ) . Do đó, chúng tôi nhận được một mã hóa sử dụng O ( n lg 2knx1,Giáo dục,xny1,Giáo dục,ynykyk+1Ôi(nlg2n) mệnh đề và biến tạm thời.Ôi(nlg2n)

Tờ báo là

Magnus Bjork. Kỹ thuật mã hóa SAT thành công . Ngày 25 tháng 7 năm 2009.

Các giấy tờ sau đây có một danh sách chi tiết về mã hóa cho 1-out-of- k out-of- n , với một số thử nghiệm đánh giá của mỗi người trong số họ. Các kết luận không hoàn toàn rõ ràng (mã hóa lệnh trông khá tốt trong các thử nghiệm của họ).nkn

Alan M. Frisch, Paul A. Giannaros. Các bảng mã SAT của các ràng buộc tối đa: Một số cũ, một số mới, một số nhanh, một số chậm . ModRef 2010.

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.