Suy diễn MAP/MPE (MPE – the most probable explaination) [12], [13], [14] là: Tìm trạng thái (giá trị chân lý) có khả năng xảy ra lớn nhất của tập các biến đầu ra (output) cho bởi trạng thái của các biến đầu vào (input).
Trạng thái MAP (Maximum a posteriori) là trạng thái mà tổng các trọng số của các công thức nền thỏa đƣợc đạt cực đại.
trong đó là số các mệnh đề nền có giá trị chân lý đúng thứ bao gồm các công thức nguyên tử của tập chƣa biết. Nhìn vào phƣơng trình 2.4 thì ta nhận thấy suy diễn MAP/MPE sẽ phải tìm những giá trị chân lý cho các công thức nguyên tử nền (hay các nút) (không tính những công thức nguyên tử nằm trong giả thiết, nghĩa là ) bằng việc làm cực đại tổng trọng số của các mệnh đề thỏa đƣợc (hay các đặc
30
trƣng). Thuật toán sau có tên là MaxWalkSAT đƣợc sử dụng cho suy diễn MAP/MPE để tìm ra các trạng thái MAP trong mạng logic Markov.
Thuật toán MAxWalkSAT
Bài toán đƣợc phát biểu cho thuật toán này nhƣ sau: Cho các công thức trong logic tân từ cấp một mà chỉ chứa các phép toán logic AND ( , OR ( ) và NOT ( ) cùng với các trọng số của chúng. Ta muốn tìm ra giá trị của các công thức nguyên tử mà tổng trọng số của các công thức nền (mệnh đề) thỏa đƣợc là lớn nhất. Cách biểu diễn chuẩn cho các công thức này là đƣa các công thức về dạng chuẩn hội, trong đó công thức là hội của các tuyển literal.
Ví dụ: (
Thuật toán MaxWalkSAT hay còn gọi là thuật toán tìm kiếm cục bộ ngẫu nhiên (stochastic local search algorithm) sử dụng 2 thao tác chính:
1) Chọn một mệnh đề không thỏa mãn ngẫu nhiên.
2) Đảo giá trị chân lý của một công thức nguyên tử trong mệnh đề đó.
Công thức nguyên tử đƣợc chọn để đảo giá trị bằng một trong hai cách sau với một xác suất nào đó:
Ngẫu nhiên.
Chọn công thức nguyên tử mà tối đa tổng trọng số của các mệnh đề khi đảo giá trị chân lý của công thức nguyên tử đó.
Việc chọn 1 trong 2 cách theo một xác suất nào đó sẽ có thể cho phép tránh khỏi cực tiểu địa phƣơng.
Thuật toán 2 MaxWalkSAT
procedure MAXWALKSAT ( , , ,
, )
các công thức nguyên tử trong
31 giá trị chân lý ngẫu nhiên của
tổng trọng số của các mệnh đề không thỏa đƣợc trong for to do
if then
return “Thành công, nghiệm tốt nhất là:” end if
Một mệnh đề không thỏa đƣợc ngẫu nhiên if randomReal([0,1]) < p then
một biến ngẫu nhiên trong else for all do tính DeltaCost( ) end for với DeltaCost là bé nhất end if đã đƣợc thay đổi DeltaCost( ) end for end for
return “Thất bại, nghiệm tốt nhất là:”, end procedure
Trong thuật toán 2, là giá trị tối đa (tổng các trọng số của các mệnh đề không thỏa đƣợc) có thể chấp nhận cho một nghiệm, là số bƣớc lặp lớn nhất (vì kết quả của chƣơng trình có thể không tìm ra nên cần phải giới hạn số bƣớc lặp), là số lƣợng phép đảo giá trị chân lý tối đa trong một bƣớc lặp, randomReal([0,1]) sẽ lấy số ngẫu nhiên trong đoạn [0, 1], DeltaCost tính toán
32
thay đổi về giá trị thu đƣợc bằng việc đảo giá trị chân lý của biến ở nghiệm hiện tại, là xác suất quyết định chọn công thức nguyên tử theo 1 trong 2 cách nói trên.