aGrUM  0.20.3
a C++ library for (probabilistic) graphical models
gum::StatesChecker Class Reference

<agrum/FMDP/simulation/statesChecker.h> More...

#include <statesChecker.h>

+ Collaboration diagram for gum::StatesChecker:

Public Member Functions

Constructor & destructor.
 StatesChecker ()
 Default constructor. More...
 
 ~StatesChecker ()
 Default destructor. More...
 
Miscelleanous methods
bool checkState (const Instantiation &state)
 
void addState (const Instantiation &)
 
Idx nbVisitedStates ()
 
void reset (const Instantiation &)
 

Detailed Description

<agrum/FMDP/simulation/statesChecker.h>

Provides the necessary to check whether or not states have been already visited.

Definition at line 49 of file statesChecker.h.

Constructor & Destructor Documentation

◆ StatesChecker()

gum::StatesChecker::StatesChecker ( )

Default constructor.

Definition at line 27 of file statesChecker.cpp.

References gum::Set< Key, Alloc >::emplace().

27  :
30  GUM_CONSTRUCTOR(StatesChecker);
31  }
StatesChecker()
Default constructor.
static MultiDimFunctionGraph< bool, ExactTerminalNodePolicy > * getTreeInstance()
Returns an arborescent instance.
MultiDimFunctionGraph< bool > * _checker_
Definition: statesChecker.h:88
+ Here is the call graph for this function:

◆ ~StatesChecker()

gum::StatesChecker::~StatesChecker ( )

Default destructor.

Definition at line 33 of file statesChecker.cpp.

References gum::Set< Key, Alloc >::emplace().

33  {
34  delete _checker_;
35  GUM_DESTRUCTOR(StatesChecker);
36  }
StatesChecker()
Default constructor.
MultiDimFunctionGraph< bool > * _checker_
Definition: statesChecker.h:88
+ Here is the call graph for this function:

Member Function Documentation

◆ _insertState_()

void gum::StatesChecker::_insertState_ ( const Instantiation state,
NodeId  parentId,
Idx  parentModa 
)
private

Definition at line 65 of file statesChecker.cpp.

References gum::Set< Key, Alloc >::emplace().

65  {
66  Idx varIter = 0;
67  if (parentId) varIter = state.variablesSequence().pos(_checker_->node(parentId)->nodeVar()) + 1;
68 
69 
70  for (; varIter < state.variablesSequence().size(); ++varIter) {
71  const DiscreteVariable* curVar = state.variablesSequence().atPos(varIter);
72  NodeId varId = _checker_->manager()->addInternalNode(curVar);
73  if (parentId)
74  _checker_->manager()->setSon(parentId, parentModa, varId);
75  else
76  _checker_->manager()->setRootNode(varId);
77  for (Idx moda = 0; moda < curVar->domainSize(); ++moda) {
78  if (moda == state.valFromPtr(curVar))
79  parentModa = moda;
80  else
81  _checker_->manager()->setSon(varId, moda, _checkerFalseId_);
82  }
83  parentId = varId;
84  }
85  _checker_->manager()->setSon(parentId, parentModa, _checkerTrueId_);
86  }
void setSon(const NodeId &node, const Idx &modality, const NodeId &sonNode)
Sets nodes son for given modality to designated son node.
void setRootNode(const NodeId &root)
Sets root node of decision diagram.
const InternalNode * node(NodeId n) const
Returns internalNode structure associated to that nodeId.
const DiscreteVariable * nodeVar() const
Returns the node variable.
NodeId addInternalNode(const DiscreteVariable *var)
Inserts a new non terminal node in graph.
MultiDimFunctionGraphManager< GUM_SCALAR, TerminalNodePolicy > * manager()
Returns a const reference to the manager of this diagram.
MultiDimFunctionGraph< bool > * _checker_
Definition: statesChecker.h:88
Size NodeId
Type for node ids.
Definition: graphElements.h:97
+ Here is the call graph for this function:

◆ addState()

void gum::StatesChecker::addState ( const Instantiation state)

Definition at line 53 of file statesChecker.cpp.

References gum::Set< Key, Alloc >::emplace().

53  {
55 
56  NodeId parId = _checker_->root();
57  Idx parModa = state.valFromPtr(_checker_->node(parId)->nodeVar());
58  while (_checker_->node(parId)->son(parModa) != _checkerFalseId_) {
59  parId = _checker_->node(parId)->son(parModa);
60  parModa = state.valFromPtr(_checker_->node(parId)->nodeVar());
61  }
62  _insertState_(state, parId, parModa);
63  }
const InternalNode * node(NodeId n) const
Returns internalNode structure associated to that nodeId.
const DiscreteVariable * nodeVar() const
Returns the node variable.
NodeId son(Idx modality) const
Returns the son at a given index.
void _insertState_(const Instantiation &, NodeId, Idx)
const NodeId & root() const
Returns the id of the root node from the diagram.
MultiDimFunctionGraph< bool > * _checker_
Definition: statesChecker.h:88
Size NodeId
Type for node ids.
Definition: graphElements.h:97
+ Here is the call graph for this function:

◆ checkState()

bool gum::StatesChecker::checkState ( const Instantiation state)
inline

Definition at line 73 of file statesChecker.h.

73 { return _checker_->get(state); }
MultiDimFunctionGraph< bool > * _checker_
Definition: statesChecker.h:88
virtual GUM_SCALAR get(const Instantiation &i) const
Returns the value pointed by i.

◆ nbVisitedStates()

Idx gum::StatesChecker::nbVisitedStates ( )
inline

Definition at line 77 of file statesChecker.h.

77 { return _nbVisitedStates_; }

◆ reset()

void gum::StatesChecker::reset ( const Instantiation initialState)

Definition at line 38 of file statesChecker.cpp.

References gum::Set< Key, Alloc >::emplace().

38  {
39  _checker_->clear();
40  for (SequenceIteratorSafe< const DiscreteVariable* > varIter
41  = initialState.variablesSequence().beginSafe();
42  varIter != initialState.variablesSequence().endSafe();
43  ++varIter)
44  _checker_->add(**varIter);
45 
49 
50  _insertState_(initialState, 0, 0);
51  }
void _insertState_(const Instantiation &, NodeId, Idx)
virtual void add(const DiscreteVariable &v)
Adds a new var to the variables of the multidimensional matrix.
NodeId addTerminalNode(const GUM_SCALAR &value)
Adds a value to the MultiDimFunctionGraph.
MultiDimFunctionGraphManager< GUM_SCALAR, TerminalNodePolicy > * manager()
Returns a const reference to the manager of this diagram.
MultiDimFunctionGraph< bool > * _checker_
Definition: statesChecker.h:88
void clear()
Clears the function graph.
+ Here is the call graph for this function:

Member Data Documentation

◆ _checker_

MultiDimFunctionGraph< bool >* gum::StatesChecker::_checker_
private

Definition at line 88 of file statesChecker.h.

◆ _checkerFalseId_

NodeId gum::StatesChecker::_checkerFalseId_
private

Definition at line 89 of file statesChecker.h.

◆ _checkerTrueId_

NodeId gum::StatesChecker::_checkerTrueId_
private

Definition at line 89 of file statesChecker.h.

◆ _nbVisitedStates_

Idx gum::StatesChecker::_nbVisitedStates_
private

Definition at line 86 of file statesChecker.h.

◆ _visitedStates_

Set< Instantiation* > gum::StatesChecker::_visitedStates_
private

Definition at line 91 of file statesChecker.h.


The documentation for this class was generated from the following files: