public ProbabilityTable sumOut(params RandomVariable[] vars)
{
Set<RandomVariable> soutVars = new Set<RandomVariable>(
this.randomVarInfo.keySet());
foreach (RandomVariable rv in vars)
{
soutVars.remove(rv);
}
ProbabilityTable summedOut = new ProbabilityTable(soutVars);
if (1 == summedOut.getValues().Length)
{
summedOut.getValues()[0] = getSum();
}
else
{
// Otherwise need to iterate through this distribution
// to calculate the summed out distribution.
Object[] termValues = new Object[summedOut.randomVarInfo
.size()];
//ProbabilityTable.Iterator di = new ProbabilityTable.Iterator() {
// public void iterate(Map<RandomVariable, Object> possibleWorld,
// double probability) {
// int i = 0;
// foreach (RandomVariable rv in summedOut.randomVarInfo.keySet()) {
// termValues[i] = possibleWorld.get(rv);
// i++;
// }
// summedOut.getValues()[summedOut.getIndex(termValues)] += probability;
// }
//};
//iterateOverTable(di);
//TODO:
}
return summedOut;
}