public static JunctionTreeInferencer createForMaxProduct() {
   return new JunctionTreeInferencer(JunctionTreePropagation.createMaxProductInferencer());
 }
 public Factor lookupMarginal(VarSet varSet) {
   return propagator.lookupMarginal(jtCurrent, varSet);
 }
 public Factor lookupMarginal(Variable var) {
   return propagator.lookupMarginal(jtCurrent, var);
 }
 public JunctionTreeInferencer() {
   this(JunctionTreePropagation.createSumProductInferencer());
 } // JunctionTreeInferencer constructor
 public void computeMarginals(JunctionTree jt) {
   inLogSpace = false; // ??
   jtCurrent = jt;
   propagator.computeMarginals(jtCurrent);
   totalMessagesSent += propagator.getTotalMessagesSent();
 }
 public void computeMarginals(FactorGraph mdl) {
   inLogSpace = mdl.getFactor(0) instanceof LogTableFactor;
   buildJunctionTree(mdl);
   propagator.computeMarginals(jtCurrent);
   totalMessagesSent += propagator.getTotalMessagesSent();
 }