protected static long domSize(MoralGraphNode node) { long dom = node.getBruseNode().getStates().size(); ArrayList<GraphNode> neighbors = node.getNeighbors(); for (int i = 0; i < neighbors.size(); i++) { MoralGraphNode neighbor = (MoralGraphNode) neighbors.get(i); dom *= neighbor.getBruseNode().getStates().size(); } return dom; }
protected static Clique createClique(MoralGraphNode node) { BruseNode[] family = new BruseNode[node.getNeighbors().size() + 1]; ArrayList<GraphNode> neighbors = node.getNeighbors(); // add the simplicial node to the family family[0] = node.getBruseNode(); // add the simplicial nodes neighbors to the family for (int i = 0; i < neighbors.size(); i++) { MoralGraphNode neighbor = (MoralGraphNode) neighbors.get(i); family[i + 1] = neighbor.getBruseNode(); } // System.out.println("Clique size: " + domSize(node)); return (new Clique(family)); }
protected static MoralGraphNode findBestNode(MoralGraph graph) { ArrayList<GraphNode> nodes = graph.getNodes(); MoralGraphNode bestNode = null, node = null; long dom = 0, minDom = Long.MAX_VALUE; for (int i = 0; i < nodes.size(); i++) { node = (MoralGraphNode) nodes.get(i); dom = domSize(node) / node.getBruseNode().getStates().size(); if ((dom < minDom) && (dom > 0)) { minDom = dom; bestNode = node; } } return bestNode; }