Điểm chuẩn


16

Câu hỏi này có lẽ nằm ở ranh giới giữa chủ đề và ngoài chủ đề, tuy nhiên tôi đã thấy những câu hỏi tương tự ở đây, vì vậy tôi sẽ hỏi nó.


Tôi đang thực hiện một cách độc đáo -SAT giải, mà đầu vào là một thức -CNF có ít nhất đáp ứng nhiệm vụ. Để kiểm tra hành vi thực tế của nó, tôi cần một bộ các công thức như vậy. Tôi đã tìm kiếm chúng trên web và không tìm thấy gì (trong khi, mặt khác, rất dễ tìm thấy các bộ công thức -CNF thông thường ).k 1 kkk1k

Tôi có thể tìm thấy các trường hợp -SAT duy nhất ở đâu?k

Ngoài ra, tôi cũng sẽ hài lòng khi biết bất kỳ thủ tục nào để tạo ra các trường hợp thỏa đáng duy nhất. Cách tiếp cận duy nhất tôi biết là đi theo tên của thế hệ SAT được trồng : bạn tạo ngẫu nhiên một phép gán biến, sau đó bạn chỉ tạo các mệnh đề đồng ý với phép gán đó. Cách tiếp cận này không thỏa đáng cho mục đích của tôi, vì những lý do sau:n

  • Công thức thu được có thể có thêm các bài tập thỏa mãn không mong muốn.
  • Để chắc chắn rằng công thức được thỏa mãn duy nhất bởi phép gán mong muốn, bạn nên giới thiệu tất cả các mệnh đề có thể đồng ý với nó. Điều này sẽ tạo ra các công thức có quá nhiều mệnh đề, có thể sẽ dễ giải quyết và do đó không đại diện cho hành vi xấu nhất của người giải. Tôi không rõ ràng làm thế nào chúng ta có thể ép buộc tính duy nhất một cách hiệu quả trong khi vẫn giữ số lượng mệnh đề hợp lý.

Làm thế nào chúng ta có thể tạo ra các công thức thỏa đáng duy nhất với một số mệnh đề hợp lý? Theo hợp lý, tôi có nghĩa là xa tối đa .2k(nk)


Cho công thức SAT với biến và mệnh đề . Nếu số mệnh đề nằm trong khoảng từ và thì công thức có thể thỏa mãn duy nhất hoặc không thỏa đáng. .. Tôi cũng đã tìm ra các phương trình cho k-SAT. Sẽ cho bạn biết nếu tôi tìm thấy nó. nFn3 n - 2 n 3 n - 2 n - 2 n - 1 Fm3n-2n3n-2n-2n-1F
Tayfun Thanh toán

Nếu bạn có đủ thời gian trên tay (và các thể hiện đủ nhỏ), bạn có thể tạo các thể hiện ở giai đoạn chuyển tiếp và kiểm tra chúng bằng bộ giải SAT. Nếu một công thức không có giải pháp, hãy loại bỏ nó. Nếu nó có một giải pháp X, hãy thêm một mệnh đề khẳng định rằng giải pháp đó không phải là X và chạy lại bộ giải. Đây là cơ bản nhưng chậm.
Andrew D. King

Câu trả lời:


7

Đây là một cách để tạo một cá thể -SAT duy nhất , được cung cấp một thể hiện SAT mà bạn biết là thỏa đáng. Hãy xem xét công thức được đưa ra bởiφ ψ ( x )kφψ(x)

φ(x)h(x)= =y,

Trong đó là hàm băm ánh xạ một phép gán thành giá trị -bit (đối với một số giá trị nhỏ của ) và là giá trị -bit ngẫu nhiên . Nếu có khoảng thỏa mãn các bài tập, thì (theo kinh nghiệm), chúng tôi giả định rằng sẽ có chính xác một bài tập thỏa mãn (với xác suất không đổi). Chúng tôi có thể kiểm tra xem đây có phải là trường hợp sử dụng bộ giải SAT hay không (cụ thể là kiểm tra xem có thỏa đáng hay không; nếu đúng, và là một nhiệm vụ thỏa mãn, kiểm tra xem có thỏa đáng không). Nếux k k y k φ 2 k ψ ψ x 0 ψ ( x ) x x 0 k k k = 1 , 2 , ... , n n xhxkkykφ2kψψx0ψ(x)xx0kkhông biết, bạn có thể tìm thấy bằng cách sử dụng tìm kiếm nhị phân hoặc chỉ bằng cách lặp qua từng giá trị ứng cử viên (trong đó là số lượng biến boolean trong ).kk= =1,2,Giáo dục,nnx

Bạn có thể chọn hàm băm một cách tự do. Có lẽ bạn sẽ muốn làm cho nó đơn giản nhất có thể. Một cách xây dựng cực kỳ đơn giản là để chọn ra một tập hợp con ngẫu nhiên gồm bit từ . Một cấu trúc phức tạp hơn một chút là để bit thứ của là xor của hai bit được chọn ngẫu nhiên từ (chọn một cặp vị trí bit riêng biệt cho mỗi , một cách độc lập). Giữ đơn giản sẽ giữ tương đối đơn giản.k x i h ( x ) x i h ψhkxTôih(x)xTôihψ

Kiểu chuyển đổi này đôi khi được sử dụng / đề xuất, như là một phần của sơ đồ để ước tính số lượng bài tập thỏa mãn cho một công thức ; Tôi đã điều chỉnh nó cho nhu cầu cụ thể của bạn.φ

Bạn có thể tìm thấy nhiều thử nghiệm về các trường hợp SAT trên Internet và bạn có thể áp dụng phép chuyển đổi này cho tất cả chúng, để có được một bộ sưu tập các trường hợp -SAT duy nhất .k


Một khả năng khác là tạo các thể hiện -SAT duy nhất từ mật mã. Chẳng hạn, giả sử là hoán vị một chiều bằng mật mã. Đặt là phần tử được chọn ngẫu nhiên củaf : { 0 , 1 } n{ 0 , 1 } n x { 0 , 1 } n y = f ( x ) φ ( x ) f ( x ) = y k p , q n = p q φ ( x , y ) x y = n x >kf:{0,1}n{0,1}nx{0,1}n và đặt . Thì công thức được cho bởi là một thể hiện -SAT duy nhất . Một ví dụ khác, chọn ngẫu nhiên hai số nguyên tố lớn và đặt . Khi đó công thức được cho bởiy= =f(x)φ(x)f(x)=ykp,qn=pqφ(x,y)xy=nx>1y>1xy(với sự tương ứng rõ ràng giữa chuỗi bit và số nguyên) là một thể hiện -SAT duy nhất . Tuy nhiên, các công trình này dường như không phải là một cách hữu ích để điểm chuẩn hoặc tối ưu hóa bộ giải của bạn. Tất cả chúng đều có cấu trúc đặc biệt, và không có lý do gì để tin rằng cấu trúc này là đại diện cho các vấn đề trong thế giới thực. Cụ thể, các trường hợp SAT được rút ra từ các vấn đề về mật mã được biết là cực kỳ khó, khó hơn nhiều so với các trường hợp SAT được rút ra từ nhiều ứng dụng giải SAT trong thế giới thực khác, vì vậy chúng không phải là cơ sở tốt để đánh giá trình giải của bạn.k


Nói chung, tất cả các kỹ thuật được đề cập trong câu trả lời này đều có nhược điểm là chúng tạo ra các thể hiện -SAT duy nhất có cấu trúc cụ thể, vì vậy chúng có thể không phải là thứ bạn đang tìm kiếm - hoặc, ít nhất, bạn có thể không muốn dựa vào chỉ dựa trên công thức được tạo ra theo cách này. Cách tiếp cận tốt hơn sẽ là xác định các ứng dụng của Unique -SAT (bạn nghĩ ai sẽ sử dụng bộ giải của mình và cho mục đích gì?), Và sau đó thử lấy một số ví dụ thực tế từ các miền ứng dụng đó.kk

Đối với một chủ đề liên quan, xem thêm Tạo các vấn đề tối ưu hóa tổ hợp thú vị


Phần đầu tiên của đoạn mật mã của bạn là sai, vì (nếu tồn tại các hàm một chiều) tồn tại các hàm một chiều không phải là hàm.

Cảm ơn, @RickyDemer! Tôi có nghĩa là hoán vị một chiều, nhưng đó không phải là những gì tôi đã viết. Đã sửa.
DW

6

Bạn có thể xem xét các thuật toán được sử dụng để tạo các câu đố Sudoku - có lẽ được khái quát hóa thành - vì (thông thường) các câu đố Sudoku được cho là có một giải pháp duy nhất. Mặt khác, các câu đố Sudoku cũng thường được đảm bảo có ít nhất một giải pháp ... Nhưng việc tìm ra giải pháp đó vẫn có thể là một điểm chuẩn tốt cho người giải của bạn.n×n

Bạn có thể sử dụng trình tạo Sudoku cùng với việc giảm SAT hoặc bạn có thể nghĩ về cách áp dụng các kỹ thuật được sử dụng trong thế hệ Sudoku để tạo ra các thể hiện SAT duy nhất trực tiếp hơn. Đối với trước đây, rõ ràng các trường hợp SAT của bạn sẽ có một số cấu trúc, nhưng đối với tôi không rõ cấu trúc đó nhiều hay ít hơn, ví dụ như trồng một giải pháp hoặc sử dụng kỹ thuật cách ly nhân chứng. Có lẽ phụ thuộc vào nhu cầu của bạn và người giải quyết của bạn.

Một tài liệu tham khảo mà tôi biết ở đây là: Câu đố Sudoku Tạo: từ Dễ đến Ác .


4

Tôi nghĩ rằng một trường hợp thử nghiệm tốt sẽ tạo ra các trường hợp 3XOR ngẫu nhiên (trường hợp được trồng) ngẫu nhiên với các ràng buộc và sau đó chuyển đổi chúng thành các trường hợp 3SAT.Θ(n)


2

imho một trong những cách tốt nhất để tạo các trường hợp SAT "có lẽ khó" trong khi kiểm soát số lượng giải pháp là từ các trường hợp / mạch bao thanh toán số nguyên được mã hóa ở dạng nhị phân. mã này không phức tạp lắm, nó sử dụng chủ yếu các mạch bổ sung EE và không dẫn đến các trường hợp SAT "lớn". số lượng các giải pháp bằng với số lượng các yếu tố (bao gồm cả "hoán vị" của các yếu tố). do đó các số nguyên tố tạo ra chính xác hai giải pháp, . một giải pháp duy nhất có thể được đảm bảo với một tiếp tục "so sánh" ràng buộc hạn chế các yếu tố để một <(1,p),(p,1)a<ba1.bp

Ngoài ra với cách tiếp cận này là tương đối dễ dàng để tìm các số với khoảng nhiều tuy nhiên nhiều yếu tố / giải pháp được mong muốn. các "mịn" , càng nhiều yếu tố.

Nhiều nhà nghiên cứu trong nhiều năm qua đã tạo ra mã SAT bao thanh toán này (ví dụ như đối với DIMACS cạnh tranh / arcihve đã lưu trữ một số trường hợp bao thanh toán trong quá khứ) nhưng thật không may, dường như không có phiên bản công khai. xem thêm liên kết đầu tiên bên dưới để biết một ref nơi mã được viết / thực hiện rõ ràng cho một khóa học sau đại học.

khác thực nghiệm / phương pháp lặp đi lặp lại có thể hữu ích cho một số người, để tạo ra các trường hợp nhiều hơn "không có cấu trúc": tạo trường SAT ngẫu nhiên gần điểm chuyển tiếp (khu vực nơi mà các phương trình có một xác suất 50% trong giai đoạn "có thể giải quyết và không thể giải quyết"), và sau đó giải phương trình. nếu không thể giải quyết được, hãy vứt đi và khởi động lại. nếu nó có thể giải được, hãy thêm các mệnh đề giới hạn giải pháp "không" là giải pháp tìm được, thu được e n + 1 và giải lại. lặp lại nếu cần thiết khi phương trình e n + 1 không còn có thể giải được, e n phải có một nghiệm duy nhất / duy nhất.enen+1en+1en


Tôi đã đề cập đến cách tiếp cận bao thanh toán trong câu trả lời của mình trước đó, nhưng tôi cũng đã giải thích lý do tại sao nó không phải là một thử nghiệm lý tưởng: "Tuy nhiên, các công trình này dường như không phải là một cách hữu ích để đánh giá hoặc tối ưu hóa bộ giải của bạn. Tất cả chúng đều có cấu trúc đặc biệt, và Không có lý do nào để tin rằng cấu trúc này là đại diện cho các vấn đề trong thế giới thực. Đặc biệt, các trường hợp SAT được rút ra từ các vấn đề mật mã được biết là cực kỳ khó, khó hơn nhiều so với các trường hợp SAT được rút ra từ nhiều ứng dụng giải SAT trong thế giới thực khác, vì vậy chúng không phải là một cơ sở tốt để đánh giá bộ giải của bạn. "
DW

Vì vậy, ở trên là một POV khác nhau mà nếu người ta muốn các trường hợp rất khó, rõ ràng là một trường hợp thử nghiệm tự nhiên cho bất kỳ người giải nào, thì bao thanh toán thực sự là một cách đầy hứa hẹn. Nghi ngờ nghiêm túc rằng bạn có thể tìm thấy bất kỳ ý kiến ​​được công bố phản ánh ý kiến ​​của bạn. nhắc lại, các trường hợp bao thanh toán đã được đưa vào kho lưu trữ thách thức DIMACS bởi (các) nhà nghiên cứu nghiêm túc bắt đầu từ nhiều năm trước. dù sao đi nữa, ý kiến ​​trái chiều của bạn thậm chí không thực sự được thể hiện theo cách tự nhất quán. Mật mã học thực sự là một vấn đề quan trọng hàng đầu / được áp dụng thậm chí còn hơn cả nhiều vấn đề trừu tượng / trừu tượng / học thuật được sử dụng cho các trường hợp SAT ...
vzn

2

Bạn có thể dễ dàng tạo trực tiếp các công thức SAT độc đáo với kích thước hợp lý (|F|<n+2k)

Đặt là mô hình độc đáo - nói mmm chỉ chứa "0" (đổi tên các biến sau nếu cần).
Đặt một công thức k -SAT chỉ thỏa mãn bằng m - kích thước tối đa của F là tổng số mệnh đề được thỏa mãn bởi m tức là ( 2 k - 1 ) ( nFkmFm .(2k-1)(nk)

Lấy các điều khoản mà loại bỏ tất cả các mẫu gán chính xác một "1" giữax1,x2...xk:(¬x1,x2...(k1)x1,x2Giáo dụcxk
(¬x1,x2Giáo dụcxk)(x1,¬x2Giáo dụcxk)Giáo dục(x1,x2Giáo dục¬xk)

Lấy các điều khoản mà loại bỏ tất cả các mẫu gán chính xác hai "1" giữax1,x2...xk:(¬x1,¬x2,x3...xk)(¬x1(k2)x1,x2Giáo dụcxk
(¬x1,¬x2,x3Giáo dụcxk)(¬x1,x2,¬x3Giáo dụcxk)Giáo dục(x1,x2Giáo dục¬xk-1¬xk)

Tiếp tục đi cho đến khi lấy duy nhất khoản đó loại bỏ tất cả mô hình chuyển nhượng "1" cho mỗi biến sốx1,x2...xk(kk)x1,x2Giáo dụcxk .

Các mô hình chỉ được chưa loại trừ được assign tất cả để "0". Kể từ khi m là một mô hình, sau đó đi bất kỳ tập hợp n - k khoản đó loại bỏ tất cả các mô hình chuyển nhượng "1" để x i ( k < i n )0 cho bất kỳ k - 1 biến số x 1 , x 2 ... x k Ví dụ: ( ¬ x k +x1,x2Giáo dụcxkmn-kxTôi(k<Tôin)0k-1x1,x2Giáo dụcxk
.(¬xk+1,x1Giáo dục,xk-1)Giáo dục(¬xn,x1Giáo dụcxk-1)

Sau đó |F|= =ΣTôi= =1k(kTôi)+n-k= =2k-1+n-k

Để có thêm mệnh đề, hãy thêm bất kỳ mệnh đề nào chứa ít nhất một biến phủ định. Để có được một công thức không thỏa mãn, chỉ cần thêm một mệnh đề với biến không được phép.k


Có một vấn đề trong câu trả lời của bạn: chúng tôi có n biến và điều này có nghĩa là không phải k
Elaqqad
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.