private Factor makeFactor(RandomVariable var, AssignmentProposition[] e,
BayesianNetwork bn)
{
Node n = bn.getNode(var);
if (!(n is FiniteNode))
{
throw new IllegalArgumentException(
"Elimination-Ask only works with finite Nodes.");
}
FiniteNode fn = (FiniteNode) n;
List<AssignmentProposition> evidence = new List<AssignmentProposition>();
foreach (AssignmentProposition ap in e)
{
if (fn.getCPT().contains(ap.getTermVariable()))
{
evidence.Add(ap);
}
}
return fn.getCPT().getFactorFor(
evidence.ToArray());
}