Câu trả lời:
Các thuật toán cốt lõi như DPLL và các tinh chỉnh của nó như CDCL là hoàn toàn xác định.
Lưu ý rằng tính không xác định không nhất thiết có nghĩa là thuật toán có thể dẫn đến kết quả sai. Ví dụ, chúng ta có thể phân biệt giữa
Các thuật toán Monte Carlo , là các thuật toán ngẫu nhiên có đầu ra có thể không chính xác với một số xác suất.
Các thuật toán Las Vegas , là các thuật toán ngẫu nhiên có đầu ra luôn chính xác , nhưng thuật toán 'đánh bạc' với các tài nguyên được sử dụng trong tính toán, ví dụ: thời gian chạy trên các đầu vào giống hệt nhau có thể khác nhau.
Ở một thái cực khác là các thuật toán xác suất để giải -SAT như Schöning's [1] là Monte-Carlo, và có hiệu quả rõ rệt trong thực tế vì tính đơn giản hoàn toàn của nó. Điều thú vị là thuật toán của Schöning có thể bị biến thành hoàn toàn mà không bị mất (phần lớn) tính hiệu quả của nó [2].
Trong thực tế, các bộ giải SAT công nghiệp luôn sử dụng một số mức độ ngẫu nhiên, để 'thoát' khỏi hành vi xấu nhất (= hàm mũ) của các thuật toán dựa trên DPLL. MiniSat là một phần mềm có cấu hình cao và đang phát triển. Điều đó nói rằng, MiniSat không hoàn toàn xác định: sự lựa chọn biến phân nhánh đôi khi được chọn ngẫu nhiên, tùy thuộc vào các tùy chọn dòng lệnh. (Mặc định là 2% biến số phân nhánh được chọn ngẫu nhiên IIRC.) Tương tự như vậy, MiniSAT có tùy chọn khởi tạo điểm số VSIDS một cách ngẫu nhiên. (VSIDS là một heuristic để 'đo lường' ảnh hưởng của một biến.)
U. Schöning, Thuật toán xác suất cho -SAT dựa trên Tìm kiếm và khởi động lại có giới hạn .
RA Moser, D. Trình lập lịch biểu, Sự biến đổi hoàn toàn của thuật toán -SAT của Schöning .
Đúng rồi. DPLL khám phá không gian một cách triệt để. Nếu nó trả về 'unat' thì chắc chắn không có sự phân công thỏa mãn nào tồn tại.
Gần đây, các nhà nghiên cứu đã phát triển các bộ giải SAT chứng nhận trả lại bằng chứng (hy vọng ngắn) về sự không thỏa mãn, khi họ trả về "không". Bằng chứng này có thể được kiểm tra bởi bất kỳ ai khác, điều này cung cấp một cách để người khác xác minh rằng công thức này không thỏa mãn mà không cần phải chạy lại thuật toán SAT. Điều này có thể hữu ích trong một số bối cảnh.
MiniSAT là một triển khai, chứ không phải là một thuật toán. Hành vi của nó phụ thuộc vào mã của nó. Tôi không thể nói những gì mã làm.
Người giải SAT có thể xác định hay không tùy thuộc vào cách họ thực hiện. Lưu ý rằng tính không xác định ở đây chỉ có thể ảnh hưởng đến mô hình được tạo chứ không phải câu trả lời (SAT hoặc UNSAT) của người giải! Đối với mục đích đa dạng hóa và các mục đích khác, người giải SAT thường giới thiệu tính ngẫu nhiên tại một số điểm nhất định: ví dụ: để khởi tạo các hoạt động thay đổi hoặc đưa ra quyết định ngẫu nhiên. Ví dụ, trong minisat, các quyết định ngẫu nhiên được đưa ra bằng cách gọi một fonction luôn trả về cùng một số ngẫu nhiên khi sử dụng cùng một hạt giống ngẫu nhiên. Vì vậy, tại thời điểm này khi bạn không thay đổi bất kỳ cấu hình nào của bộ giải, bạn sẽ luôn có cùng một câu trả lời và cùng một mô hình. Thay đổi hạt giống ngẫu nhiên chẳng hạn sẽ không ảnh hưởng đến câu trả lời (SAT hoặc UNSAT) nhưng có thể thay đổi mô hình và thời gian thực hiện.