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ì?
- Đặt 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.
- Đặt là tập các mệnh đề.
- Vòng qua .
- Mỗi khi một biến vô điều kiện † được tìm thấy, loại bỏ nó khỏi và chèn nó vào .
- 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 .
- 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 và y được chèn vào W ).
- Đặt tất cả các biến trong thành giá trị mà chúng nhất thiết phải có.
- Đặ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.
- Nếu đáp ứng thỏa đáng, sau đó trả về , trả về "Không thỏa mãn".
† 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ặc .
‡ 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 e ∨ a .
Để hiểu rõ hơn về thuật toán, hãy xem xét các mệnh đề sau :
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 } .
2) Loại bỏ , f và g sẽ để lại các mệnh đề trống: . Những điều này sẽ được bổ sung vào W . W = { 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 ∧ b . 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"
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?