void runSolver (const FactorGraph& fg, const VarIds& queryIds) { GroundSolver* solver = 0; switch (Globals::groundSolver) { case GroundSolverType::VE: solver = new VarElim (fg); break; case GroundSolverType::BP: solver = new BeliefProp (fg); break; case GroundSolverType::CBP: solver = new CountingBp (fg); break; default: assert (false); } if (Globals::verbosity > 0) { solver->printSolverFlags(); cout << endl; } if (queryIds.empty()) { solver->printAllPosterioris(); } else { solver->printAnswer (queryIds); } delete solver; }
Params BeliefProp::solveQuery (VarIds queryVids) { assert (queryVids.empty() == false); return queryVids.size() == 1 ? getPosterioriOf (queryVids[0]) : getJointDistributionOf (queryVids); }