Một thuật toán thỏa mãn dự kiến


8

Sự thỏa mãn chung (với một vài ngoại lệ như Điều khoản sừng) không được tin là có một giải pháp thuật toán. Tuy nhiên, thuật toán sau đây dường như là một giải pháp cho sự thỏa mãn chung. Chính xác lỗ hổng với thuật toán sau là gì?

  1. Đặt W là một tập hợp trống sẽ chứa tất cả các biến nhất thiết phải đúng hoặc sai.
  2. Đặt L là tập các mệnh đề.
  3. Vòng qua L .
  4. Mỗi khi một biến vô điều kiện được tìm thấy, loại bỏ nó khỏi L và chèn nó vào W .
  5. Nếu lá này một trống VÀ ngụ ý , loại bỏ tất cả các biến trong đó ngụ ý có sản phẩm nào từ và chèn vào W .LW
  6. Nếu điều này để lại hàm ý HOẶC rỗng , hãy tạo các phiên bản mới của thuật toán, trong đó mỗi trường hợp xử lý một biến trong hàm ý (nghĩa là nếu hàm ý là: , tạo một thể hiện trong đó x được chèn vào W , một trong đó y được chèn vào W và một trong đó x y được chèn vào W ).xVyxWyWxyW
  7. Đặt tất cả các biến trong thành giá trị mà chúng nhất thiết phải có.W
  8. Đặt lại các biến trong trong L với các giá trị đã thay đổi của chúng và kiểm tra xem tất cả các mệnh đề có được thỏa mãn hay không.WL
  9. Nếu đáp ứng thỏa đáng, sau đó trả về , trả về "Không thỏa mãn".L

Một phi biến có điều kiện được định nghĩa như là một biến đó là cần thiết đúng hay sai, ví dụ như hoặcx .¬y

Một ngụ ý có sản phẩm nào được định nghĩa là một ngụ ý nơi một bên là trống (ví dụ ) hoặc mặt khác nhất thiết phải đúng (ví dụ: t r u eaxy .trueab

Để hiểu rõ hơn về thuật toán, hãy xem xét các mệnh đề sau :L

abc(i)fg(ii)f¬a(iii)fab(iv)c(v)

Thuật toán sẽ làm như sau:

1) Kể từ khi , f , g là các biến không có điều kiện, thuật toán sẽ chèn chúng vào W . W = { c , f , g } .cfgWW={c,f,g}

2) Loại bỏ , fg sẽ để lại các mệnh đề trống:cfg . Những điều này sẽ được bổ sung vào W . W = { c , f , g , b , ¬ a } .¬a,ab,bWW={c,f,g,b,¬a}

3) reinserting các biến vào sẽ dẫn đến các điều khoản đầu tiên bị xâm phạm: một bL . Vì a là sai, c là sai, có nghĩa là mệnh đề (v) bị vi phạm. Thuật toán sẽ trả về "Không thỏa đáng"abcac

Tôi biết rằng các thuật toán xuất hiện khó hiểu. Xin vui lòng yêu cầu làm rõ.


Từ các bình luận tôi nhận ra rằng không có thuật toán thỏa mãn chung hiệu quả nào được biết đến . Tôi vẫn quan tâm đến phản hồi về thuật toán của tôi. Nó có hoạt động không? Làm thế nào để nó so sánh với các thuật toán phổ biến?


17
Điều gì khiến bạn nghĩ rằng không có giải pháp thuật toán cho sự thỏa mãn chung? Hoàn toàn có các thuật toán để làm điều này; không ai trong số họ được biết là có thời gian chạy đa thức trong trường hợp xấu nhất. Những gì bạn đang mô tả có vẻ giống như một thuật toán thỏa mãn dựa trên độ phân giải nổi tiếng.
templatetypedef

@templatetypedef Bài viết trên Wikipedia dường như cho thấy rằng không có giải pháp nào tồn tại. Bạn có thể giới thiệu cho tôi thuật toán nổi tiếng không?

9
@Riddler những gì bài báo Wikipedia thực sự nói là "SAT là ví dụ đầu tiên được biết đến của một vấn đề hoàn thành NP. Điều đó có nghĩa ngắn gọn là không có thuật toán nào biết giải quyết hiệu quả tất cả các trường hợp SAT" Nó cũng có "Thuật toán để giải SAT" phần.

5
Chắc chắn có các giải pháp thuật toán cho sự thỏa mãn chung vì có các giải pháp vũ lực (gán tất cả các kết hợp giá trị Đúng / Sai cho các biến và xem liệu có bất kỳ biểu thức kết quả nào đánh giá là True không).

2
Vấn đề là bạn tạo ra số lượng phiên bản mới theo cấp số nhân từ các OR trống trong trường hợp xấu nhất.
Elliot Gorokhovsky

Câu trả lời:


6

Vấn đề 1

Trường hợp của phải là một "biến có điều kiện không" đối với với x (tức là. Rằng ¯ x bây giờ sẽ được chèn vào W ). Nếu điều này không đúng, thì thuật toán của bạn cần thêm một bước để suy ra điều này. Giả sử ( x y ¯ y ) là một " biến không có điều kiện ", chúng tôi tiếp tục.(xyy¯)xx¯W(xyy¯)

Vấn đề 2

LƯU Ý: đây là một vấn đề tôi nhận thấy; rất có thể có những vấn đề khác

Vấn đề là với " hàm ý HOẶC rỗng " được chia thành hai thuật toán, là ở dạng hiện tại, phần tách không bao gồm tất cả các trường hợp. Đặc biệt:

Bạn bắt đầu với , sau đó c được loại bỏ và chúng ta chỉ còn lại một hàm ý HOẶC trống rỗng của ( x [ ] y ) . Bạn đề nghị bây giờ chia nó thành hai vấn đề mới và giải quyết từng vấn đề; một với x = T y = T và một trong những nơi y = T . Nhưng điều này không bao gồm tất cả các trường hợp. Còn về trường hợp khi x = F y = F(xcy)c(x[]y)x=Ty=Ty=Tx=Fy=F. Tuy nhiên, thuật toán của bạn không bao giờ xem xét khả năng sai.y

Tôi nghĩ rằng bạn có thể khắc phục điều này bằng cách xây dựng hai vấn đề mới là một với và một với ¯ x .yx¯

Vấn đề 3

Điều gì xảy ra khi bạn bị bỏ lại với một loạt các mệnh đề dưới dạng:

(abc)

hoặc là

(abc)

Sau khi giảm tất cả mọi thứ, các mệnh đề này sẽ vẫn còn và bạn sẽ không thể kiểm tra mức độ thỏa mãn của chúng một cách dễ dàng.

Phân tích

Lưu ý : "O" Ký hiệu này, vv, được gọi là Big O ký hiệu . Ω ( s o m e t h i n g ) được gọi là Big-omega.O(something)Ω(something)

Giả sử các thuật toán đã làm công việc nói chung, nó sẽ chạy trong thời điểm trường hợp xấu nhất, m là số các biến. Lý do là, mỗi lần phân tách vấn đề thành các vấn đề có kích thước tương tự có nghĩa là thuật toán chạy theo thời gian theo cấp số nhân. Để hình dung khái niệm này, hãy xem hình ảnh sau đây của cây nhị phân đầy đủ (hình ảnh từ đây ):Ω(2m)m

sơ đồ cây nhị phân đầy đủ

Bây giờ hãy tưởng tượng vấn đề ban đầu là nút trên đầu trang. Chúng tôi chia vấn đề thành hai vấn đề ở cấp độ thứ hai, nhưng chúng có kích thước tương tự nhau (chúng tôi chỉ loại bỏ một biến, hoặc y từ hàm ý HOẶC trống , vì vậy chúng tôi vẫn sẽ có rất nhiều hàm ý HOẶC trống để thực hiện mỗi biến cấp độ). Chúng tôi có khả năng sẽ phải phân chia vấn đề O ( m ) lần để loại bỏ m biến. Điều này có nghĩa là chúng ta sẽ phải đối phó với một cây có cấp độ m . Một cây có cấp độ mcác nút lá 2 mxyO(m)mmm2m (các nút ở phía dưới). Đây được gọi là thời gian theo cấp số nhân và không chính thức phần nào ngang bằng với tất cả các thuật toán thỏa mãn boolean đã biết. Nhưng lực lượng vũ phu cũng vậy: có có thể gán các biến, vì vậy bằng lực lượng vũ phu, bạn có thể đoán từng phép gán và kiểm tra mức độ thỏa đáng với hiệu suất tương tự!2m


Tôi đoán bạn có nghĩa là ? Ω(.)
Raphael

ΩO(2m)

Ω(2m)

O(.)Ω(.)Ω(2m)Θ(m)Ω(m)

-5

Trước khi bạn cảm thấy bạn có thuật toán SAT "mới", vui lòng xem lại thuật toán tìm kiếm / quay lui tiêu chuẩn / cổ điển trong tài liệu cho vấn đề có niên đại ~ 1962, thuật toán Davis canh Putnam quạt Logemann kèm Loveland . hầu hết các thuật toán quay lui / đệ quy cho vấn đề có thể sẽ trông hơi giống với thuật toán này, mặc dù có thể mất khá nhiều thời gian để chứng minh sự tương đương này.

Phân tích nghiêm túc sẽ liên quan đến điểm chuẩn thuật toán của bạn so với các ví dụ (hoặc trường hợp ngẫu nhiên) so với DPLL.

Và do đó, rất hữu ích khi tóm tắt thuật toán của bạn khác với nó như thế nào. mà không xem lại mã của bạn, tỷ lệ cược là:

  • Thuật toán có một lỗi trong đó. hoặc trả về dương hoặc sai (nghĩa là thuật toán trả về "công thức là thỏa đáng" khi nó không hoặc ngược lại, tương ứng). điều này thường có thể được bắt gặp bằng cách kiểm tra rất kỹ lưỡng một loạt lớn các công thức được tạo ngẫu nhiên và kiểm tra đối với một thuật toán / triển khai chính xác đã biết khác, ví dụ DPLL.
  • Thuật toán của bạn không tốt bằng DPLL.
  • Nếu nó tốt như DPLL hoặc "tốt hơn", thì thường là do các chiến lược / chiến lược lựa chọn phân nhánh và biến đổi và phân phối các thể hiện đang được thử nghiệm.

Thuật toán có thể dễ dàng được hiểu bởi một sinh viên thông minh tuy nhiên dường như hiếm khi được dạy ở cấp đại học hoặc trong sách giáo khoa đại học, hoặc thậm chí không thường được tham khảo, có thể dẫn đến một quan điểm sai lầm hoặc ấn tượng rằng các thuật toán SAT cơ bản không được hiểu rõ, v.v.

Gần đây, vừa mới chạy trên trang web "trực tiếp" này có tên là ToughSat của Yuen và Bebel để tạo ra các trường hợp cứng để sử dụng với điểm chuẩn, một số dựa trên bao thanh toán [một trong những phương pháp tạo ví dụ SAT cổ điển]. có những cái khác, ví dụ như DIMAC lưu trữ tài liệu lưu trữ của các trường hợp cứng mặc dù nó có thể không còn trực tuyến nữa.

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.