41 lines
943 B
C++
41 lines
943 B
C++
#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<string> 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()});
|
|
}
|
|
}
|
|
|