30 #ifndef DOXYGEN_SHOULD_SKIP_THIS 33 # include <agrum/tools/core/math/math_utils.h> 34 # include <agrum/tools/graphs/algorithms/triangulations/eliminationStrategies/defaultPartialOrderedEliminationSequenceStrategy.h> 51 bool SimplicialSet::isSimplicial(
const NodeId id) {
53 if (changed_status__.contains(id)) updateList__(id);
56 return simplicial_nodes__.contains(id);
62 NodeId SimplicialSet::bestSimplicialNode() {
63 if (!hasSimplicialNode()) {
64 GUM_ERROR(NotFound,
"No simplicial node could be found");
67 return simplicial_nodes__.top();
73 NodeId SimplicialSet::bestAlmostSimplicialNode() {
74 if (!hasAlmostSimplicialNode()) {
75 GUM_ERROR(NotFound,
"no almost simplicial node could be found");
78 return almost_simplicial_nodes__.top();
84 NodeId SimplicialSet::bestQuasiSimplicialNode() {
85 if (!hasQuasiSimplicialNode()) {
86 GUM_ERROR(NotFound,
"no quasi simplicial node could be found");
89 return quasi_simplicial_nodes__.top();
95 void SimplicialSet::updateAllNodes__() {
97 for (
auto iter = changed_status__.beginSafe();
98 iter != changed_status__.endSafe();
107 const PriorityQueue< NodeId,
double >& SimplicialSet::allSimplicialNodes() {
109 return simplicial_nodes__;
115 const PriorityQueue< NodeId,
double >&
116 SimplicialSet::allAlmostSimplicialNodes() {
118 return almost_simplicial_nodes__;
124 const PriorityQueue< NodeId,
double >& SimplicialSet::allQuasiSimplicialNodes() {
126 return quasi_simplicial_nodes__;
132 void SimplicialSet::setFillIns(
bool b) { we_want_fill_ins__ = b; }
137 const EdgeSet& SimplicialSet::fillIns()
const {
return fill_ins_list__; }