blob: 8904fa495e5ba3669a92c5702fa9bb5dcf5f106d (
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
|
function c = clq_containing_nodes(engine, nodes, fam)
% CLQ_CONTAINING_NODES Find the lightest clique (if any) that contains the set of nodes
% c = clq_containing_nodes(engine, nodes, family)
%
% If the optional 'family' argument is specified, it means nodes = family(nodes(end)).
% (This is useful since clq_ass_to_node is not accessible to outsiders.)
% Returns c=-1 if there is no such clique.
if nargin < 3, fam = 0; else fam = 1; end
if length(nodes)==1
c = engine.clq_ass_to_node(nodes(1));
%elseif fam
% c = engine.clq_ass_to_node(nodes(end));
else
B = engine.cliques_bitv;
w = engine.clique_weight;
clqs = find(all(B(:,nodes), 2)); % all selected columns must be 1
if isempty(clqs)
c = -1;
else
c = clqs(argmin(w(clqs)));
end
end
|