aGrUM  0.20.2
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  :
31  GUM_CONSTRUCTOR(StatesChecker);
32  }
StatesChecker()
Default constructor.
MultiDimFunctionGraph< bool > * checker__
Definition: statesChecker.h:88
static MultiDimFunctionGraph< bool, ExactTerminalNodePolicy > * getTreeInstance()
Returns an arborescent instance.
+ Here is the call graph for this function:

◆ ~StatesChecker()

gum::StatesChecker::~StatesChecker ( )

Default destructor.

Definition at line 34 of file statesChecker.cpp.

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

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

Member Function Documentation

◆ addState()

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

Definition at line 54 of file statesChecker.cpp.

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

54  {
56 
57  NodeId parId = checker__->root();
58  Idx parModa = state.valFromPtr(checker__->node(parId)->nodeVar());
59  while (checker__->node(parId)->son(parModa) != checkerFalseId__) {
60  parId = checker__->node(parId)->son(parModa);
61  parModa = state.valFromPtr(checker__->node(parId)->nodeVar());
62  }
63  insertState__(state, parId, parModa);
64  }
void insertState__(const Instantiation &, NodeId, Idx)
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.
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.

◆ insertState__()

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

Definition at line 66 of file statesChecker.cpp.

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

68  {
69  Idx varIter = 0;
70  if (parentId)
71  varIter
72  = state.variablesSequence().pos(checker__->node(parentId)->nodeVar()) + 1;
73 
74 
75  for (; varIter < state.variablesSequence().size(); ++varIter) {
76  const DiscreteVariable* curVar = state.variablesSequence().atPos(varIter);
77  NodeId varId = checker__->manager()->addInternalNode(curVar);
78  if (parentId)
79  checker__->manager()->setSon(parentId, parentModa, varId);
80  else
81  checker__->manager()->setRootNode(varId);
82  for (Idx moda = 0; moda < curVar->domainSize(); ++moda) {
83  if (moda == state.valFromPtr(curVar))
84  parentModa = moda;
85  else
86  checker__->manager()->setSon(varId, moda, checkerFalseId__);
87  }
88  parentId = varId;
89  }
90  checker__->manager()->setSon(parentId, parentModa, checkerTrueId__);
91  }
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.
MultiDimFunctionGraph< bool > * checker__
Definition: statesChecker.h:88
MultiDimFunctionGraphManager< GUM_SCALAR, TerminalNodePolicy > * manager()
Returns a const reference to the manager of this diagram.
Size NodeId
Type for node ids.
Definition: graphElements.h:97
+ Here is the call graph for this function:

◆ 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 39 of file statesChecker.cpp.

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

39  {
40  checker__->clear();
41  for (SequenceIteratorSafe< const DiscreteVariable* > varIter
42  = initialState.variablesSequence().beginSafe();
43  varIter != initialState.variablesSequence().endSafe();
44  ++varIter)
45  checker__->add(**varIter);
46 
50 
51  insertState__(initialState, 0, 0);
52  }
void insertState__(const Instantiation &, NodeId, Idx)
virtual void add(const DiscreteVariable &v)
Adds a new var to the variables of the multidimensional matrix.
MultiDimFunctionGraph< bool > * checker__
Definition: statesChecker.h:88
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.
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: