add a sequential elimination heuristic

This commit is contained in:
Tiago Gomes
2012-05-29 17:12:57 +01:00
parent 0315cd51a3
commit 02395daed3
4 changed files with 21 additions and 6 deletions

View File

@@ -139,12 +139,23 @@ ElimGraph::exportToGraphViz (
VarIds
ElimGraph::getEliminationOrder (
const vector<Factor*> factors,
const Factors& factors,
VarIds excludedVids)
{
if (elimHeuristic == ElimHeuristic::SEQUENTIAL) {
VarIds allVids;
Factors::const_iterator first = factors.begin();
Factors::const_iterator end = factors.end();
for (; first != end; ++first) {
Util::addToVector (allVids, (*first)->arguments());
}
TinySet<VarId> elimOrder (allVids);
for (size_t i = 0; i < excludedVids.size(); i++) {
elimOrder.remove (excludedVids[i]);
}
return elimOrder.elements();
}
ElimGraph graph (factors);
// graph.print();
// graph.exportToGraphViz ("_egg.dot");
return graph.getEliminatingOrder (excludedVids);
}