aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
gum::StatesCounter Class Reference

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

#include <statesCounter.h>

Inheritance diagram for gum::StatesCounter:
Collaboration diagram for gum::StatesCounter:

Public Member Functions

Constructor & destructor.
 StatesCounter ()
 Default constructor.
 ~StatesCounter ()
 Default destructor.
Miscelleanous methods
void incState (const Instantiation &)
void reset (const Instantiation &)
const MultiDimFunctionGraph< int > * counter ()
Visit Methods
NodeId root () const
bool isTerminal (NodeId ni) const
const DiscreteVariablenodeVar (NodeId ni) const
NodeId nodeSon (NodeId ni, Idx modality) const
Idx nodeNbObservation (NodeId ni) const
void insertSetOfVars (MultiDimFunctionGraph< double > *ret) const

Private Member Functions

void _incState_ (const Instantiation &, NodeId, Idx, Size)

Private Attributes

MultiDimFunctionGraph< Size > * _counter_
Set< Instantiation * > _visitedStates_

Detailed Description

<agrum/FMDP/simulation/statesCounter.h>

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

Definition at line 70 of file statesCounter.h.

Constructor & Destructor Documentation

◆ StatesCounter()

gum::StatesCounter::StatesCounter ( )

Default constructor.

Definition at line 50 of file statesCounter.cpp.

51 GUM_CONSTRUCTOR(StatesCounter);
52 }
static MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy > * getTreeInstance()
Returns an arborescent instance.
StatesCounter()
Default constructor.
MultiDimFunctionGraph< Size > * _counter_

References StatesCounter(), and _counter_.

Referenced by StatesCounter(), and ~StatesCounter().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~StatesCounter()

gum::StatesCounter::~StatesCounter ( )

Default destructor.

Definition at line 57 of file statesCounter.cpp.

57 {
58 delete _counter_;
59 GUM_DESTRUCTOR(StatesCounter);
60 }

References StatesCounter(), and _counter_.

Here is the call graph for this function:

Member Function Documentation

◆ _incState_()

void gum::StatesCounter::_incState_ ( const Instantiation & state,
NodeId parentId,
Idx parentModa,
Size nbVisits )
private

Definition at line 96 of file statesCounter.cpp.

99 {
100 Idx varIter = 0;
101 if (parentId) varIter = state.variablesSequence().pos(_counter_->node(parentId)->nodeVar()) + 1;
102
103
104 for (; varIter < state.variablesSequence().size(); ++varIter) {
105 const DiscreteVariable* curVar = state.variablesSequence().atPos(varIter);
106 NodeId varId = _counter_->manager()->addInternalNode(curVar);
107 if (parentId) _counter_->manager()->setSon(parentId, parentModa, varId);
108 else _counter_->manager()->setRootNode(varId);
109 for (Idx moda = 0; moda < curVar->domainSize(); ++moda) {
110 if (moda == state.valFromPtr(curVar)) parentModa = moda;
111 else _counter_->manager()->setSon(varId, moda, _counter_->terminalNodeId(nbVisits));
112 }
113 parentId = varId;
114 }
115 _counter_->manager()->setSon(parentId,
116 parentModa,
117 _counter_->manager()->addTerminalNode(nbVisits + 1));
118 }
Size Idx
Type for indexes.
Definition types.h:79
Size NodeId
Type for node ids.

References _counter_, gum::DiscreteVariable::domainSize(), gum::Instantiation::valFromPtr(), and gum::Instantiation::variablesSequence().

Referenced by incState(), and reset().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ counter()

const MultiDimFunctionGraph< int > * gum::StatesCounter::counter ( )

◆ incState()

void gum::StatesCounter::incState ( const Instantiation & state)

Definition at line 81 of file statesCounter.cpp.

81 {
82 Idx nbVisits = _counter_->get(state);
83
84 NodeId parId = _counter_->root();
85 Idx parModa = state.valFromPtr(_counter_->node(parId)->nodeVar());
86 while (!_counter_->isTerminalNode(_counter_->node(parId)->son(parModa))) {
87 parId = _counter_->node(parId)->son(parModa);
88 parModa = state.valFromPtr(_counter_->node(parId)->nodeVar());
89 }
90 _incState_(state, parId, parModa, nbVisits);
91 }
void _incState_(const Instantiation &, NodeId, Idx, Size)

References _counter_, _incState_(), and gum::Instantiation::valFromPtr().

Here is the call graph for this function:

◆ insertSetOfVars()

void gum::StatesCounter::insertSetOfVars ( MultiDimFunctionGraph< double > * ret) const
inlinevirtual

Implements gum::IVisitableGraphLearner.

Definition at line 134 of file statesCounter.h.

134 {
135 for (SequenceIteratorSafe< const DiscreteVariable* > varIter
136 = _counter_->variablesSequence().beginSafe();
137 varIter != _counter_->variablesSequence().endSafe();
138 ++varIter)
139 ret->add(**varIter);
140 }

References _counter_, and gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::add().

Here is the call graph for this function:

◆ isTerminal()

bool gum::StatesCounter::isTerminal ( NodeId ni) const
inlinevirtual

Implements gum::IVisitableGraphLearner.

Definition at line 117 of file statesCounter.h.

117{ return _counter_->isTerminalNode(ni); }

References _counter_.

◆ nodeNbObservation()

Idx gum::StatesCounter::nodeNbObservation ( NodeId ni) const
inlinevirtual

Implements gum::IVisitableGraphLearner.

Definition at line 132 of file statesCounter.h.

132{ return _counter_->nodeValue(ni); }

References _counter_.

◆ nodeSon()

NodeId gum::StatesCounter::nodeSon ( NodeId ni,
Idx modality ) const
inlinevirtual

Implements gum::IVisitableGraphLearner.

Definition at line 127 of file statesCounter.h.

127{ return _counter_->node(ni)->son(modality); }

References _counter_.

◆ nodeVar()

const DiscreteVariable * gum::StatesCounter::nodeVar ( NodeId ni) const
inlinevirtual

Implements gum::IVisitableGraphLearner.

Definition at line 122 of file statesCounter.h.

122{ return _counter_->node(ni)->nodeVar(); }

References _counter_.

◆ reset()

void gum::StatesCounter::reset ( const Instantiation & initialState)

Definition at line 65 of file statesCounter.cpp.

65 {
66 _counter_->clear();
67 for (SequenceIteratorSafe< const DiscreteVariable* > varIter
68 = initialState.variablesSequence().beginSafe();
69 varIter != initialState.variablesSequence().endSafe();
70 ++varIter)
71 _counter_->add(**varIter);
72
73 _counter_->manager()->setRootNode(_counter_->manager()->addTerminalNode(0));
74
75 _incState_(initialState, 0, 0, 0);
76 }

References _counter_, _incState_(), and gum::Instantiation::variablesSequence().

Here is the call graph for this function:

◆ root()

NodeId gum::StatesCounter::root ( ) const
inlinevirtual

Implements gum::IVisitableGraphLearner.

Definition at line 112 of file statesCounter.h.

112{ return _counter_->root(); }

References _counter_.

Member Data Documentation

◆ _counter_

◆ _visitedStates_

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

Definition at line 149 of file statesCounter.h.


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