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()) { GUM_ERROR(NotFound,
"No simplicial node could be found") }
65 return _simplicial_nodes_.top();
71 NodeId SimplicialSet::bestAlmostSimplicialNode() {
72 if (!hasAlmostSimplicialNode()) {
73 GUM_ERROR(NotFound,
"no almost simplicial node could be found")
76 return _almost_simplicial_nodes_.top();
82 NodeId SimplicialSet::bestQuasiSimplicialNode() {
83 if (!hasQuasiSimplicialNode()) {
84 GUM_ERROR(NotFound,
"no quasi simplicial node could be found")
87 return _quasi_simplicial_nodes_.top();
93 void SimplicialSet::_updateAllNodes_() {
95 for (
auto iter = _changed_status_.beginSafe();
96 iter != _changed_status_.endSafe();
105 const PriorityQueue< NodeId,
double >& SimplicialSet::allSimplicialNodes() {
107 return _simplicial_nodes_;
113 const PriorityQueue< NodeId,
double >& SimplicialSet::allAlmostSimplicialNodes() {
115 return _almost_simplicial_nodes_;
121 const PriorityQueue< NodeId,
double >& SimplicialSet::allQuasiSimplicialNodes() {
123 return _quasi_simplicial_nodes_;
129 void SimplicialSet::setFillIns(
bool b) { _we_want_fill_ins_ = b; }
134 const EdgeSet& SimplicialSet::fillIns()
const {
return _fill_ins_list_; }