private Factor eliminate (Collection allPhi, Variable node) { HashSet phiSet = new HashSet(); /* collect the potentials that include this variable */ for (Iterator j = allPhi.iterator(); j.hasNext(); ) { Factor cpf = (Factor) j.next (); if (cpf.varSet().isEmpty() || cpf.containsVar (node)) { phiSet.add (cpf); j.remove (); } } return TableFactor.multiplyAll (phiSet); }
private Factor eliminate (Collection allPhi, Variable node) { HashSet phiSet = new HashSet(); /* collect the potentials that include this variable */ for (Iterator j = allPhi.iterator(); j.hasNext(); ) { Factor cpf = (Factor) j.next (); if (cpf.varSet().isEmpty() || cpf.containsVar (node)) { phiSet.add (cpf); j.remove (); } } return TableFactor.multiplyAll (phiSet); }
private Factor eliminate (Collection allPhi, Variable node) { HashSet phiSet = new HashSet(); /* collect the potentials that include this variable */ for (Iterator j = allPhi.iterator(); j.hasNext(); ) { Factor cpf = (Factor) j.next (); if (cpf.varSet().isEmpty() || cpf.containsVar (node)) { phiSet.add (cpf); j.remove (); } } return TableFactor.multiplyAll (phiSet); }
/** * Returns the factor defined over a given pair of variables. * <P> * This method is equivalent to calling {@link #factorOf} * with a VarSet that contains only <tt>v1</tt> and <tt>v2</tt>. * <P> * @param var1 One variable of the pair. * @param var2 The other variable of the pair. * @return The factor defined over the pair <tt>(v1, v2)</tt> * Returns null if no such potential exists. */ public Factor factorOf (Variable var1, Variable var2) { List ptls = allEdgeFactors (var1, var2); Factor ptl = firstIfSingleton (ptls, var1+" "+var2); if (ptl != null) { assert ptl.varSet().size() == 2; assert ptl.containsVar (var1); assert ptl.containsVar (var2); } return ptl; }
/** * Returns the factor defined over a given pair of variables. * <P> * This method is equivalent to calling {@link #factorOf} * with a VarSet that contains only <tt>v1</tt> and <tt>v2</tt>. * <P> * @param var1 One variable of the pair. * @param var2 The other variable of the pair. * @return The factor defined over the pair <tt>(v1, v2)</tt> * Returns null if no such potential exists. */ public Factor factorOf (Variable var1, Variable var2) { List ptls = allEdgeFactors (var1, var2); Factor ptl = firstIfSingleton (ptls, var1+" "+var2); if (ptl != null) { assert ptl.varSet().size() == 2; assert ptl.containsVar (var1); assert ptl.containsVar (var2); } return ptl; }
/** * Returns the factor defined over a given pair of variables. * <P> * This method is equivalent to calling {@link #factorOf} * with a VarSet that contains only <tt>v1</tt> and <tt>v2</tt>. * <P> * @param var1 One variable of the pair. * @param var2 The other variable of the pair. * @return The factor defined over the pair <tt>(v1, v2)</tt> * Returns null if no such potential exists. */ public Factor factorOf (Variable var1, Variable var2) { List ptls = allEdgeFactors (var1, var2); Factor ptl = firstIfSingleton (ptls, var1+" "+var2); if (ptl != null) { assert ptl.varSet().size() == 2; assert ptl.containsVar (var1); assert ptl.containsVar (var2); } return ptl; }
assert marginal.containsVar (query); assert marginal.varSet().size() == 1;
assert marginal.containsVar (query); assert marginal.varSet().size() == 1;
assert marginal.containsVar (query); assert marginal.varSet().size() == 1;