#include "Solver.h" #include "Util.h" void Solver::printAnswer (const VarIds& vids) { Vars unobservedVars; VarIds unobservedVids; for (size_t i = 0; i < vids.size(); i++) { VarNode* vn = fg.getVarNode (vids[i]); if (vn->hasEvidence() == false) { unobservedVars.push_back (vn); unobservedVids.push_back (vids[i]); } } if (unobservedVids.empty() == false) { Params res = solveQuery (unobservedVids); vector stateLines = Util::getStateLines (unobservedVars); for (size_t i = 0; i < res.size(); i++) { cout << "P(" << stateLines[i] << ") = " ; cout << std::setprecision (Constants::PRECISION) << res[i]; cout << endl; } cout << endl; } } void Solver::printAllPosterioris (void) { VarNodes vars = fg.varNodes(); std::sort (vars.begin(), vars.end(), sortByVarId()); for (size_t i = 0; i < vars.size(); i++) { printAnswer ({vars[i]->varId()}); } }