Thực hiện thuật toán GSAT - Làm thế nào để chọn nghĩa đen để lật?


20

Thuật toán GSAT, phần lớn, thẳng tiến: Bạn nhận được một công thức ở dạng bình thường kết hợp và lật các mệnh đề của mệnh đề cho đến khi bạn tìm thấy một giải pháp thỏa mãn công thức hoặc bạn đạt đến giới hạn max_tries / max_flips và không tìm thấy giải pháp nào.

Tôi đang thực hiện thuật toán sau:

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

Tôi gặp sự cố khi giải thích dòng sau:

V <- the variable whose flip yield the most important raise in the number of satisfied clauses;

Không phải là số mệnh đề thỏa mãn tối đa mà chúng ta đang tìm kiếm sao? Dường như với tôi rằng chúng tôi đang cố gắng sử dụng giải pháp hoặc các xấp xỉ cho nó để tìm giải pháp.

Tôi đã nghĩ ra một số cách để làm điều này nhưng thật tốt khi nghe các quan điểm khác (Giả định là một khi biến được lật một khi nó được chọn.):

  • Tạo một không gian trạng thái với tất cả các lần lật có thể và tìm kiếm không gian cho một nghĩa đen dẫn đến sự gần đúng nhất với trạng thái mục tiêu.
  • Chọn ngẫu nhiên biến mà tôi sẽ lật bắt đầu bằng các chữ phổ biến hơn.
  • Chọn một nghĩa đen ngẫu nhiên.

Câu trả lời:


12

Không phải là số mệnh đề thỏa mãn tối đa mà chúng ta đang tìm kiếm sao?

Có, chúng tôi đang tìm kiếm một nhiệm vụ thỏa mãn số lượng mệnh đề tối đa (tốt nhất là tất cả chúng, tốt nhất là). Và đến cuối cùng, chúng tôi tự hỏi "Biến duy nhất nào sẽ đưa chúng ta đến gần nhất với mục tiêu này khi lật nó?" và sau đó lật nó.

Dường như với tôi rằng chúng tôi đang cố gắng sử dụng giải pháp hoặc các xấp xỉ cho nó để tìm giải pháp.

Sử dụng giải pháp sẽ là nếu chúng tôi hỏi "Sự kết hợp nào của nhiều lần lật sẽ cho kết quả tốt nhất?" hoặc đơn giản là "Nhiệm vụ nào sẽ là tốt nhất?". Tuy nhiên đó không phải là những gì chúng tôi đang làm, chúng tôi chỉ nhìn về phía trước một bước. Sử dụng một xấp xỉ của giải pháp có vẻ như một mô tả chính xác. Tuy nhiên không có gì sai với điều đó. Đó là cách các chiến lược tham lam hoạt động.

Tạo một không gian trạng thái với tất cả các lần lật có thể và tìm kiếm không gian cho một nghĩa đen dẫn đến sự gần đúng nhất với trạng thái mục tiêu.

Đúng.

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.