about summary refs log tree commit diff
path: root/sourcecodes/bnt-master/graph/test_strong_root.m
blob: 86e1117e01f8e80152bb5d4c9475b1529e069613 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function strong = test_strong_root(jtree,cliques,dnodes,root)
% This function tests, whether root is a strong root of jtree. 
% The following parameters are used
% Input:
% jtree   An matrix with two colums. jtree(i,j) == jtree(j,i) is 1 if node 
%         i is connected with node j
% cliques Cells which contain the nodes in each clique
% dnodes  An array with the discrete nodes of the juntion tree.
% root    It is tested whether root is the strong root of the junction tree
% Output:
% strong  The output is 1 if root is the strong root of the junction tree jtree.
%         Please note, that the running intersection property is not tested. 
if isempty(dnodes)
     strong = 1;
     return;
end

children = find(jtree(root,:)==1);
i = 1;
strong = 1;
while (i <= length(children)) & (strong==1)
     child = children(i);
     jtree(child,root) = 0;
     jtree(root,child) = 0;
     sep = myintersect(cliques{child},cliques{root});
     diff = mysetdiff(cliques{child},cliques{root});
     if (mysubset(sep,dnodes) | isempty(myintersect(diff,dnodes)))
         strong = test_strong_root(jtree,cliques,dnodes,child);
     else
         strong = 0;
     end;
     i = i+1;
end