Động lực mà bạn nêu ra để đối phó với sự thiếu quyết đoán cũng áp dụng cho các vấn đề khó khăn nhưng có thể quyết định được. Nếu bạn gặp vấn đề là NP-hard hoặc PSPACE-hard, thông thường chúng ta sẽ phải sử dụng một số dạng gần đúng (theo nghĩa rộng của thuật ngữ này) để tìm giải pháp.
Rất hữu ích để phân biệt giữa các khái niệm khác nhau về xấp xỉ.
( Ε , δ) -algorithms cho các vấn đề như ALLSAT đó kết hợp hai quan điểm trên. Trong trường hợp cụ thể của các vấn đề không thể giải quyết được, hoặc các vấn đề không có số liệu rõ ràng và chúng tôi không muốn sử dụng thuật toán ngẫu nhiên, có một câu hỏi về khái niệm sử dụng xấp xỉ nào. Vấn đề này phát sinh cụ thể trong việc phân tích các chương trình trong việc tối ưu hóa trình biên dịch và xác minh chương trình. Xác định các thuộc tính phức tạp của các chương trình là không thể giải quyết được hoặc tốn kém về mặt tính toán, do đó cần có một số hình thức gần đúng.
Dưới đây là một ví dụ về một khái niệm khác về xấp xỉ. Giả sử bạn thực hiện một phép tính như nhân hai số lớn và muốn kiểm tra xem phép nhân đó có đúng không. Có rất nhiều kỹ thuật heuristic được sử dụng trong thực tế để kiểm tra tính chính xác mà không cần lặp lại phép tính. Bạn có thể kiểm tra xem các dấu hiệu đã được nhân lên để có được dấu hiệu đúng. Bạn có thể kiểm tra xem các số có đúng chẵn lẻ không (thuộc tính số chẵn / số lẻ). Bạn có thể sử dụng một kiểm tra phức tạp hơn như Casting out nines. Tất cả các kỹ thuật này có một tài sản chung mà họ có thể cho bạn biết nếu bạn mắc lỗi, nhưng họ không thể đảm bảo nếu bạn có câu trả lời đúng. Thuộc tính này có thể được xem như là một xấp xỉ logic bởi vì bạn có thể chứng minh rằng phép tính ban đầu là sai nhưng bạn có thể không chứng minh được rằng nó đúng.
Tất cả các kiểm tra tôi đã đề cập ở trên là ví dụ về một kỹ thuật gọi là giải thích trừu tượng. Giải thích trừu tượng làm cho hoàn toàn nghiêm ngặt một khái niệm về xấp xỉ logic khác biệt với các xấp xỉ số và xác suất. Vấn đề tôi mô tả với phân tích một phép tính duy nhất mở rộng cho trường hợp phân tích chương trình phức tạp hơn. Các tài liệu về giải thích trừu tượng đã phát triển các kỹ thuật và khuôn khổ cho lý luận gần đúng, hợp lý về các chương trình và gần đây hơn về logic. Các tài liệu tham khảo sau đây có thể hữu ích.
- Giải thích trừu tượng trong một bản tóm tắt của Patrick Cousot, đó là một tổng quan đơn giản.
- Tổng quan về Trừu tượng của Patrick Cousot, như một phần của khóa học của mình. Có một ví dụ rất hay về sự trừu tượng để xác định các thuộc tính của một bó hoa. Sự tương tự bó hoa bao gồm các điểm cố định và có thể được thực hiện hoàn toàn chính xác về mặt toán học.
- Khóa học về diễn giải trừu tượng của Patrick Cousot, nếu bạn muốn tất cả các chiều sâu và chi tiết.
- Giải thích trừu tượng và ứng dụng cho các chương trình logic , Patrick Cousot và Radhia Cousot, 1992. Áp dụng cho các chương trình logic, theo yêu cầu của bạn. Phần ban đầu cũng chính thức quy trình đúc ra như một cách giải thích trừu tượng.
Tất cả điều này thường được áp dụng cho lý do về các chương trình máy tính. Gần đây đã có một công việc gần đây về việc áp dụng các ý tưởng từ giải thích trừu tượng để nghiên cứu các thủ tục quyết định cho logic. Trọng tâm không phải là logic phương thức mà là sự thỏa mãn trong logic mệnh đề và các lý thuyết bậc nhất không có định lượng. (Vì tôi đã làm việc trong không gian này, một tờ giấy bên dưới là của tôi)
- Một khái quát về phương pháp của Staalmarck bởi Aditya Thakur và Thomas Reps, 2012. Cung cấp một khái quát về phương pháp của Staalmarck cho các vấn đề trong phân tích chương trình.
- Sản phẩm rút gọn của các lĩnh vực trừu tượng và sự kết hợp của các thủ tục quyết định , Patrick Cousot, Radhia Cousot và Laurent Mauborgne, 2011. Bài viết này nghiên cứu kỹ thuật Nelson-Oppen để kết hợp các thủ tục quyết định và cho thấy rằng nó cũng có thể được sử dụng cho các kết hợp không hoàn chỉnh, trong đó đặc biệt thú vị nếu bạn có vấn đề không thể giải quyết được.
- Người giải quyết sự hài lòng là Máy phân tích tĩnh , bài viết của tôi với Leopold Haller và Daniel Kroening, 2012. Áp dụng chế độ xem xấp xỉ dựa trên mạng tinh thể để mô tả các bộ giải hiện có. Thay vào đó, bạn cũng có thể nhìn vào các slide của tôi về chủ đề này .
Bây giờ không có bài báo nào ở trên trả lời câu hỏi cụ thể của bạn về việc tấn công các vấn đề thỏa đáng không thể giải quyết được. Những gì các bài viết này làm là có một cái nhìn gần đúng theo định hướng về các vấn đề logic không phải là số hoặc xác suất. Quan điểm này đã được áp dụng rộng rãi cho lý do về các chương trình và tôi tin rằng nó giải quyết chính xác những gì bạn đang hỏi.
Để áp dụng nó vào logic phương thức, tôi muốn đề xuất một điểm khởi đầu là sử dụng ngữ nghĩa đại số của Jonsson và Tarski hoặc ngữ nghĩa sau của Lemmon và Scott. Điều này là do giải thích trừu tượng được xây dựng theo các hàm và hàm đơn điệu, do đó đại số Boolean với các toán tử là một ngữ nghĩa thuận tiện để làm việc. Nếu bạn muốn bắt đầu với các khung Kripke, bạn có thể áp dụng định lý đối ngẫu của Jonsson và Tarski (mà một số người có thể gọi là tính đối ngẫu của Stone) và rút ra biểu diễn đại số. Sau đó, bạn có thể áp dụng các định lý của giải thích trừu tượng cho xấp xỉ logic.