Алгоритм распространения убеждений для логического бинарного дерева
Я пытался узнать, как работает распространение убеждений. В частности, будет ли он работать как решатель SAT. Некоторые из моих исследований показывают, что это возможно. Тем не менее, я действительно изо всех сил пытаюсь понять, является ли это правильным инструментом для работы или мои реализации просто неверны. К сожалению, в большинстве ссылок много математических формул, и я действительно ржавый при чтении их, поэтому я чувствую, что, возможно, я что-то упустил. И кажется, что некоторые ссылки используют другую терминологию или даже не упоминают такие вещи, как таблицы условной вероятности.
В качестве очень простого примера я пытался решить эту формулу:
C = A or B
Перед распространением убеждений я составил таблицу истинности, чтобы знать, с чем сравнивать:
Шаг 4: Отправляйте сообщения родителям.
Сообщение от А к С:
[
P(A=false|C=false) * Likelihood(A=false) + P(A=true|C=false) * Likelihood(A=true),
P(A=false|C=true) * Likelihood(A=false) + P(A=true|C=true) * Likelihood(A=true),
]
= [1.0 * 1.0 + 0.0 * 1.0, 0.5 * 1.0 + 0.5 * 1.0]
= [1.0, 1.0]
Сообщение от B к C:
[
P(B=false|C=false) * Likelihood(B=false) + P(B=true|C=false) * Likelihood(A=true),
P(B=false|C=true) * Likelihood(B=false) + P(B=true|C=true) * Likelihood(A=true),
]
= [1.0 * 1.0 + 0.0 * 1.0, 0.5 * 1.0 + 0.5 * 1.0]
= [1.0, 1.0]
Шаг 5: Отправляйте сообщения детям.
Сообщение от С к А:
[
Message from B to C(false) * Prior(C=false),
Message from B to C(true) * Prior(C=true)
]
= [1.0 * 0.0, 1.0 * 1.0]
= [0.0, 1.0]
Сообщение от C к B:
[
Message from A to C(false) * Prior(C=false),
Message from A to C(true) * Prior(C=true)
]
= [1.0 * 0.0, 1.0 * 1.0]
= [0.0, 1.0]
Шаг 6: Рассчитайте убеждения.
Belief(A) = Likelihood(A) * Message from C to A
= [1.0 * 0.0, 1.0 * 1.0]
= [0.0, 1.0]
Belief(B) = Likelihood(B) * Message from C to B
= [1.0 * 0.0, 1.0 * 1.0]
= [0.0, 1.0]
На данный момент мой алгоритм распространения убеждений говорит, что есть 100-процентная вероятность того, что A истинна, и 100-процентная вероятность того, что B истинна, что не соответствует тому, что я ожидаю. Если я решу C=false, я получу то, что ожидаю.
Что-то не так с предпринятыми мной шагами, или это просто не даст мне ожидаемого ответа по какой-то причине?