about summary refs log tree commit diff
path: root/sourcecodes/bnt-master/graph/check_jtree_property.m
diff options
context:
space:
mode:
Diffstat (limited to 'sourcecodes/bnt-master/graph/check_jtree_property.m')
-rw-r--r--sourcecodes/bnt-master/graph/check_jtree_property.m18
1 files changed, 18 insertions, 0 deletions
diff --git a/sourcecodes/bnt-master/graph/check_jtree_property.m b/sourcecodes/bnt-master/graph/check_jtree_property.m
new file mode 100644
index 00000000..3986c05e
--- /dev/null
+++ b/sourcecodes/bnt-master/graph/check_jtree_property.m
@@ -0,0 +1,18 @@
+function check_jtree_property(cliques_containing_node, jtree)
+% CHECK_JTREE_PROPERTY Raise an error if the graph does not satisfy the join tree property.
+% check_jtree_property(cliques_containing_node, jtree_adj_mat)
+%
+% The join tree property says:
+% For each node n in the dag, compute the node-induced subgraph G by looking at all the cliques
+% that contain n, and make sure G forms a connected graph. 
+% This ensures that local propagation leads to global consistency.
+
+num_bn_nodes = length(cliques_containing_node);
+directed = 0;
+for i=1:num_bn_nodes
+  cs = cliques_containing_node{i};
+  G = jtree(cs,cs);
+  if ~connected_graph(G, directed)
+    error(['node ' num2str(i) ' violates jtree property']);
+  end
+end