WalkSAT và GSAT là các thuật toán tìm kiếm cục bộ nổi tiếng và đơn giản để giải quyết vấn đề thỏa mãn Boolean. Mã giả cho thuật toán GSAT được sao chép từ câu hỏi Thực hiện thuật toán GSAT - Làm thế nào để chọn nghĩa đen nào để lật? và trình bày dưới đây.
procedure GSAT(A,Max_Tries,Max_Flips)
A: is a CNF formula
for i:=1 to Max_Tries do
S <- instantiation of variables
for j:=1 to Max_Iter do
if A satisfiable by S then
return S
endif
V <- the variable whose flip yield the most important raise in the number of satisfied clauses;
S <- S with V flipped;
endfor
endfor
return the best instantiation found
end GSAT
Ở đây chúng ta lật biến tối đa hóa số mệnh đề thỏa mãn. Làm thế nào được thực hiện hiệu quả? Phương pháp ngây thơ là lật mọi biến số, và cho mỗi bước qua tất cả các mệnh đề và tính toán có bao nhiêu trong số chúng được thỏa mãn. Ngay cả khi một mệnh đề có thể được truy vấn để thỏa mãn trong thời gian không đổi, phương thức ngây thơ vẫn sẽ chạy trong thời gian , trong đó là số lượng biến và số mệnh đề. Tôi chắc rằng chúng ta có thể làm tốt hơn, do đó câu hỏi:V C
Nhiều thuật toán tìm kiếm cục bộ lật bài tập biến số tối đa hóa số mệnh đề thỏa mãn. Trong thực tế, với cấu trúc dữ liệu nào hoạt động này được hỗ trợ hiệu quả?
Đây là một cái gì đó tôi cảm thấy như sách giáo khoa thường bỏ qua. Một ví dụ thậm chí là cuốn sách nổi tiếng của Russell & Norvig .