| bnMsgPassNetUpdate(nodes, edges, A, ahat, V, vhat)
|
function [nodes, edges, A, ahat] = bnMsgPassNetUpdate(nodes, edges, A, ahat, V, vhat)
% BNMSGPASSUPDATE helper function for lungbayesdemo
% Reference: Neapolitan R., "Learning Bayesian Networks", Pearson Prentice Hall,
% Upper Saddle River, New Jersey, 2004.
A = union(A, V);
ahat = union(ahat, vhat);
for v = 1:length(nodes(V).values) % for each node value
if v ~= vhat
nodes(V).lambda(v) = 0;
nodes(V).peye(v) = 0;
nodes(V).P(v) = 0;
else
nodes(V).lambda(vhat) = 1;
nodes(V).peye(vhat) = 1;
nodes(V).P(vhat) = 1;
end
end
Z = nodes(V).parents;
Z = setdiff(Z,A);
for pa = 1:length(Z)
[nodes, edges] = bnMsgPassSendLambdaMsg(V, Z(pa), nodes, edges, A);
end
childrenV = nodes(V).children;
for cv = 1:length(childrenV)
[nodes, edges] = bnMsgPassSendPiMsg(V,childrenV(cv), nodes, edges, A);
end
|
|