![]() |
aGrUM 3.1.1
a C++ library for (probabilistic) graphical models
|
abstract class for Conditional Indepency Models More...
#include <agrum/base/multidim/ICIModels/multiDimICIModel.h>
Public Member Functions | |
Constructors / Destructors | |
| MultiDimICIModel (GUM_ELEMENT external_weight, GUM_ELEMENT default_weight=(GUM_ELEMENT) 1.0) | |
| Default constructor. | |
| MultiDimICIModel (const MultiDimICIModel< GUM_ELEMENT > &from) | |
| Default constructor. | |
| MultiDimICIModel (const Bijection< const DiscreteVariable *, const DiscreteVariable * > &bij, const MultiDimICIModel< GUM_ELEMENT > &from) | |
| Copy constructor using a bijection to swap variables from source. | |
| ~MultiDimICIModel () override | |
| Destructor. | |
Accessors / Modifiers | |
| std::string | toString () const override |
| Copy of a multiDimICIModel. | |
| void | changeNotification (const gum::Instantiation &, const gum::DiscreteVariable *const, gum::Idx, gum::Idx) override |
| Copy of a multiDimICIModel. | |
| void | setFirstNotification (const gum::Instantiation &) override |
| Copy of a multiDimICIModel. | |
| void | setLastNotification (const gum::Instantiation &) override |
| Copy of a multiDimICIModel. | |
| void | setIncNotification (const gum::Instantiation &) override |
| Copy of a multiDimICIModel. | |
| void | setDecNotification (const gum::Instantiation &) override |
| Copy of a multiDimICIModel. | |
| void | setChangeNotification (const gum::Instantiation &) override |
| Copy of a multiDimICIModel. | |
| std::string | toString (const gum::Instantiation *i) const override |
| Copy of a multiDimICIModel. | |
| void | copyFrom (const MultiDimContainer< GUM_ELEMENT > &src) const override |
| Copy of a multiDimICIModel. | |
| Size | realSize () const override |
| GUM_ELEMENT | causalWeight (const DiscreteVariable &v) const |
| Copy of a multiDimICIModel. | |
| void | causalWeight (const DiscreteVariable &v, GUM_ELEMENT w) const |
| Copy of a multiDimICIModel. | |
| GUM_ELEMENT | externalWeight () const |
| Copy of a multiDimICIModel. | |
| void | externalWeight (GUM_ELEMENT w) const |
| Copy of a multiDimICIModel. | |
| const std::string & | name () const override |
| returns the real name of the multiDimArray | |
Constructors / Destructors | |
| MultiDimContainer< GUM_ELEMENT > * | newFactory () const override=0 |
| Default constructor. | |
Accessors / Modifiers | |
| void | set (const Instantiation &i, const GUM_ELEMENT &value) const override |
| void | fill (const GUM_ELEMENT &) const override |
Accessors / Modifiers | |
| const std::string & | basename () const |
| Returns the base class name of this MultiDimImplementation. | |
| float | compressionRate () const |
| The compression ratio of the table (depending on the type of implementation). | |
| virtual const GUM_ELEMENT * | data () const noexcept |
| Returns a pointer to the contiguous data buffer, or nullptr if the implementation does not store data contiguously. | |
| virtual GUM_ELEMENT * | data () noexcept |
| Returns a mutable pointer to the contiguous data buffer, or nullptr if the implementation does not store data contiguously. | |
MultiDimInterface implementation | |
| Idx | nbrDim () const override |
| Returns the number of vars in the multidimensional container. | |
| Size | domainSize () const override |
| Returns the product of the variables domain size. | |
| void | add (const DiscreteVariable &v) override |
| Adds a new var to the variables of the multidimensional matrix. | |
| void | erase (const DiscreteVariable &v) override |
| Removes a var from the variables of the multidimensional matrix. | |
| const Sequence< const DiscreteVariable * > & | variablesSequence () const override |
| Returns a const ref to the sequence of DiscreteVariable*. | |
| const DiscreteVariable & | variable (Idx i) const override |
| Returns a const ref to the ith var. | |
| const DiscreteVariable & | variable (std::string_view name) const override |
| Returns the variable with the name. | |
| Idx | pos (const DiscreteVariable &v) const override |
| Returns the index of a variable. | |
| bool | contains (const DiscreteVariable &v) const override |
| Returns true if var is in *this. | |
| bool | empty () const override |
| Returns true if no var is in *this. | |
MultiDimAdressable implementation | |
| bool | registerSlave (Instantiation &slave) override |
| Register i as a slave of this MultiDimAdressable. | |
| bool | unregisterSlave (Instantiation &slave) override |
| Unregister i as a slave of this MultiDimAdressable. | |
MultiDimContainer implementation | |
| void | beginMultipleChanges () override |
| Call this method before doing important changes in this MultiDimContainer. | |
| void | endMultipleChanges () override |
| Call this method after doing important changes in this MultiDimContainer. | |
| void | endMultipleChanges (const GUM_ELEMENT &) override |
| Call this method after doing important changes in this MultiDimContainer. | |
Accessors / Modifiers | |
| virtual GUM_ELEMENT | get (const Instantiation &i) const |
| Returns the value pointed by i. | |
| GUM_ELEMENT | operator[] (const Instantiation &i) const |
| An [] operator using a Instantiation as argument. | |
| virtual void | populate (const std::vector< GUM_ELEMENT > &v) const |
| Automatically fills this MultiDimContainer with the values in v. | |
| virtual void | populate (std::initializer_list< GUM_ELEMENT > l) const |
| Automatically fills this MultiDimContainer with the values in l. | |
Copy methods. | |
| virtual void | copyFrom (const MultiDimContainer< GUM_ELEMENT > &src, Instantiation *p_i) const |
| Basic copy of a MultiDimContainer. | |
| virtual void | extractFrom (const MultiDimContainer< GUM_ELEMENT > &src, const Instantiation &mask) |
| Basic extraction of a MultiDimContainer. | |
| MultiDimAdressable & | getMasterRef () override |
| In order to insure the dereference for decorators, we need to virtualize the access to master pointer. | |
| const MultiDimAdressable & | getMasterRef () const override |
| In order to insure the dereference for decorators, we need to virtualize the access to master pointer. | |
| virtual void | copy (const MultiDimContainer< GUM_ELEMENT > &src) |
| Removes all variables in this MultiDimContainer and copy the content of src, variables included. | |
Various methods. | |
| bool | operator== (const MultiDimContainer< GUM_ELEMENT > &p) const |
| Test if this MultiDimContainer is equal to p. | |
| virtual void | apply (std::function< GUM_ELEMENT(GUM_ELEMENT) > f) const |
| Apply a function on every element of the container. | |
| virtual GUM_ELEMENT | reduce (std::function< GUM_ELEMENT(GUM_ELEMENT, GUM_ELEMENT) > f, GUM_ELEMENT base) const |
| compute lfold for this container | |
Accessors / Modifiers | |
| void | replace (const DiscreteVariable &x, const DiscreteVariable &y) |
| Replace variables in this multidim. | |
Protected Member Functions | |
| void | replace_ (const DiscreteVariable *x, const DiscreteVariable *y) override |
| This is called by MultiDimContainer::replace() to proceed with the replacing between x and y. | |
| GUM_ELEMENT & | get_ (const Instantiation &i) const override |
| const MultiDimImplementation< GUM_ELEMENT > * | content () const final |
| Returns the implementation for this object (may be *this). | |
| MultiDimImplementation< GUM_ELEMENT > * | content () final |
| Returns the implementation for this object (may be *this). | |
Fast large modifications in structures | |
| virtual void | commitMultipleChanges_ () |
| Synchronize content after MultipleChanges. | |
| virtual void | commitMultipleChanges_ (const GUM_ELEMENT &value) |
| Synchronize content after MultipleChanges. | |
| bool | isInMultipleChangeMethod_ () const |
| Get the actual change method of this MultiDimImplementation. | |
| bool | isCommitNeeded_ () const |
| Get the actual state of *this. | |
| const List< Instantiation * > & | slaves_ () const |
| Returns a constant reference over the list of slaved instantiations. | |
| virtual void | invert_ (Idx p1, Idx p2) |
| Inverts variables at position p1 and p2. | |
Protected Attributes | |
| GUM_ELEMENT | _external_weight_ |
| \( p_0 \) in Henrion (89). | |
causal weights | |
| GUM_ELEMENT | _default_weight_ |
| \( P(e | c_i) \) in Henrion (89) in a hashtable with a default_value. | |
| HashTable< const DiscreteVariable *, GUM_ELEMENT > | _causal_weights_ |
| \( P(e | c_i) \) in Henrion (89) in a hashtable with a default_value. | |
Private Types | |
| enum class | _InternalChangeMethod_ : char { DIRECT_CHANGE , MULTIPLE_CHANGE } |
| Used to represent in which change method this MultiDimImplementation is. More... | |
| enum class | _InternalChangeState_ : char { NO_CHANGE , NOT_COMMITTED_CHANGE } |
| Used to represent in which change state this MultiDimImplementation is. More... | |
Private Member Functions | |
| void | _setNotCommitedChange_ () |
| Change the internalChangeState to NOT_COMMITTED_CHANGE. | |
Private Attributes | |
| Sequence< const DiscreteVariable * > | _vars_ |
| List of discrete variables (dimensions). | |
| List< Instantiation * > | _slaveInstantiations_ |
| List of instantiations of the tuples (sequences) of variables. | |
| _InternalChangeMethod_ | _internalChangeMethod_ |
| The current change method. | |
| _InternalChangeState_ | _internalChangeState_ |
| The current change state. | |
| Size | _domainSize_ |
| This MultiDimImplementation domain size. | |
abstract class for Conditional Indepency Models
Definition at line 80 of file multiDimICIModel.h.
|
strongprivateinherited |
Used to represent in which change method this MultiDimImplementation is.
| Enumerator | |
|---|---|
| DIRECT_CHANGE | |
| MULTIPLE_CHANGE | |
Definition at line 317 of file multiDimImplementation.h.
|
strongprivateinherited |
Used to represent in which change state this MultiDimImplementation is.
| Enumerator | |
|---|---|
| NO_CHANGE | |
| NOT_COMMITTED_CHANGE | |
Definition at line 320 of file multiDimImplementation.h.
| gum::MultiDimICIModel< GUM_ELEMENT >::MultiDimICIModel | ( | GUM_ELEMENT | external_weight, |
| GUM_ELEMENT | default_weight = (GUM_ELEMENT) 1.0 ) |
Default constructor.
Referenced by MultiDimICIModel(), MultiDimICIModel(), and ~MultiDimICIModel().
| gum::MultiDimICIModel< GUM_ELEMENT >::MultiDimICIModel | ( | const MultiDimICIModel< GUM_ELEMENT > & | from | ) |
| gum::MultiDimICIModel< GUM_ELEMENT >::MultiDimICIModel | ( | const Bijection< const DiscreteVariable *, const DiscreteVariable * > & | bij, |
| const MultiDimICIModel< GUM_ELEMENT > & | from ) |
Copy constructor using a bijection to swap variables from source.
| bij | First variables are new variables, seconds are in from. |
| from | the copied instance |
References MultiDimICIModel().
|
override |
Destructor.
Definition at line 102 of file multiDimICIModel_tpl.h.
References MultiDimICIModel(), and ~MultiDimICIModel().
Referenced by ~MultiDimICIModel().
|
privateinherited |
Change the internalChangeState to NOT_COMMITTED_CHANGE.
Definition at line 286 of file multiDimImplementation_tpl.h.
References _internalChangeState_, and NOT_COMMITTED_CHANGE.
|
overridevirtualinherited |
Adds a new var to the variables of the multidimensional matrix.
| v | The new var. |
| DuplicateElement | Raised if the variable already belongs to the sequence of variables. |
| OperationNotAllowed | Raised if this object is non mutable. |
Implements gum::MultiDimInterface.
Reimplemented in gum::MultiDimSparse< GUM_ELEMENT >, and gum::MultiDimWithOffset< GUM_ELEMENT >.
Definition at line 95 of file multiDimImplementation_tpl.h.
References _vars_, GUM_ERROR, and gum::Variable::name().
Referenced by gum::MultiDimBucket< GUM_ELEMENT >::add(), gum::MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy >::add(), and gum::MultiDimWithOffset< GUM_ELEMENT >::add().
|
virtualinherited |
Apply a function on every element of the container.
| f | the function to apply |
Reimplemented in gum::MultiDimArray< GUM_ELEMENT >, gum::MultiDimDecorator< GUM_ELEMENT >, and gum::MultiDimDecorator< GUM_SCALAR >.
Definition at line 200 of file multiDimContainer_tpl.h.
References gum::Instantiation::end(), get(), set(), and gum::Instantiation::setFirst().
|
inherited |
Returns the base class name of this MultiDimImplementation.
This method is used for chosing a proposer operator when no specialized operator have been defined.
Definition at line 298 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Call this method before doing important changes in this MultiDimContainer.
Implements gum::MultiDimContainer< GUM_ELEMENT >.
Definition at line 232 of file multiDimImplementation_tpl.h.
References _internalChangeMethod_, and MULTIPLE_CHANGE.
| GUM_SCALAR gum::MultiDimICIModel< GUM_SCALAR >::causalWeight | ( | const DiscreteVariable & | v | ) | const |
Copy of a multiDimICIModel.
This method is virtual because it should be optimized in certain MultiDimContainer.
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Definition at line 107 of file multiDimICIModel_tpl.h.
References _causal_weights_, and causalWeight().
Referenced by gum::prm::PRMFactory< GUM_SCALAR >::addNoisyOrCompound(), causalWeight(), and toString().
| void gum::MultiDimICIModel< GUM_ELEMENT >::causalWeight | ( | const DiscreteVariable & | v, |
| GUM_ELEMENT | w ) const |
Copy of a multiDimICIModel.
This method is virtual because it should be optimized in certain MultiDimContainer.
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
|
overridevirtual |
Copy of a multiDimICIModel.
This method is virtual because it should be optimized in certain MultiDimContainer.
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Implements gum::MultiDimAdressable.
Definition at line 178 of file multiDimICIModel_tpl.h.
References changeNotification().
Referenced by changeNotification().
|
protectedvirtualinherited |
Synchronize content after MultipleChanges.
Reimplemented in gum::MultiDimArray< GUM_ELEMENT >, gum::MultiDimBijArray< GUM_ELEMENT >, gum::MultiDimBucket< GUM_ELEMENT >, and gum::MultiDimSparse< GUM_ELEMENT >.
Definition at line 257 of file multiDimImplementation_tpl.h.
Referenced by gum::MultiDimBucket< GUM_ELEMENT >::commitMultipleChanges_(), and endMultipleChanges().
|
protectedvirtualinherited |
Synchronize content after MultipleChanges.
| value | Default value for uninitialized values. |
Reimplemented in gum::MultiDimArray< GUM_ELEMENT >.
Definition at line 262 of file multiDimImplementation_tpl.h.
|
inherited |
The compression ratio of the table (depending on the type of implementation).
This method uses domainSize() and realSize() to compute the ratio, both methods are virtual and should be surcharge if a subclass has a special policies about memory management.
Definition at line 292 of file multiDimImplementation_tpl.h.
References domainSize(), and realSize().
|
overridevirtualinherited |
Returns true if var is in *this.
| v | A DiscreteVariable. |
Implements gum::MultiDimInterface.
Definition at line 212 of file multiDimImplementation_tpl.h.
References _vars_.
Referenced by gum::MultiDimBucket< GUM_ELEMENT >::contains().
|
finalprotectedvirtualinherited |
Returns the implementation for this object (may be *this).
Implements gum::MultiDimContainer< GUM_ELEMENT >.
Definition at line 335 of file multiDimImplementation_tpl.h.
|
finalprotectedvirtualinherited |
Returns the implementation for this object (may be *this).
Implements gum::MultiDimContainer< GUM_ELEMENT >.
Definition at line 328 of file multiDimImplementation_tpl.h.
References MultiDimImplementation().
|
virtualinherited |
Removes all variables in this MultiDimContainer and copy the content of src, variables included.
| src | The MultiDimContainer to copy. |
Reimplemented in gum::MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy >, gum::MultiDimFunctionGraph< bool >, gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< double >, gum::MultiDimFunctionGraph< double, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< gum::ActionSet, gum::SetTerminalNodePolicy >, gum::MultiDimFunctionGraph< GUM_ELEMENT, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< Size >, and gum::MultiDimFunctionGraph< Size, ExactTerminalNodePolicy >.
Definition at line 284 of file multiDimContainer_tpl.h.
References MultiDimContainer(), gum::MultiDimInterface::add(), beginMultipleChanges(), endMultipleChanges(), gum::MultiDimInterface::erase(), gum::MultiDimInterface::nbrDim(), and gum::MultiDimInterface::variable().
Referenced by gum::TreeRegress< GUM_ELEMENT, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::compute().
|
virtualinherited |
Basic copy of a MultiDimContainer.
This method is virtual because it should be optimized in certain MultiDimContainer.
| src | The MultiDimContainer src which values are copied. |
| p_i | Give the order to iterate in this MultiDimContainer during the copy (nullptr will correctly copy if this is a reorganization of src). |
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Reimplemented in gum::MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy >, and gum::MultiDimFunctionGraph< GUM_ELEMENT, ExactTerminalNodePolicy >.
Definition at line 220 of file multiDimContainer_tpl.h.
References MultiDimContainer(), gum::MultiDimInterface::domainSize(), gum::Instantiation::end(), GUM_ERROR, and gum::Instantiation::setFirst().
|
overridevirtual |
Copy of a multiDimICIModel.
This method is virtual because it should be optimized in certain MultiDimContainer.
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Reimplemented from gum::MultiDimContainer< GUM_ELEMENT >.
Definition at line 146 of file multiDimICIModel_tpl.h.
References _external_weight_, copyFrom(), gum::MultiDimInterface::domainSize(), and GUM_ERROR.
Referenced by copyFrom().
|
virtualnoexceptinherited |
Returns a pointer to the contiguous data buffer, or nullptr if the implementation does not store data contiguously.
Subclasses backed by a contiguous array (e.g. MultiDimArray) override this to expose direct memory access, enabling zero-copy interop with external libraries such as NumPy.
Reimplemented in gum::MultiDimArray< GUM_ELEMENT >.
Definition at line 340 of file multiDimImplementation_tpl.h.
|
virtualnoexceptinherited |
Returns a mutable pointer to the contiguous data buffer, or nullptr if the implementation does not store data contiguously.
Reimplemented in gum::MultiDimArray< GUM_ELEMENT >.
Definition at line 345 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Returns the product of the variables domain size.
Implements gum::MultiDimInterface.
Definition at line 187 of file multiDimImplementation_tpl.h.
References _domainSize_.
Referenced by gum::MultiDimArray< GUM_ELEMENT >::add(), gum::MultiDimBucket< GUM_ELEMENT >::add(), gum::MultiDimWithOffset< GUM_ELEMENT >::add(), gum::MultiDimWithOffset< GUM_ELEMENT >::changeNotification(), gum::MultiDimArray< GUM_ELEMENT >::commitMultipleChanges_(), gum::MultiDimBucket< GUM_ELEMENT >::commitMultipleChanges_(), compressionRate(), gum::MultiDimWithOffset< GUM_ELEMENT >::computeInstantiationValue_(), gum::MultiDimArray< GUM_ELEMENT >::erase(), gum::MultiDimBucket< GUM_ELEMENT >::erase(), gum::MultiDimArray< GUM_ELEMENT >::realSize(), gum::MultiDimBucket< GUM_ELEMENT >::setBufferSize(), gum::MultiDimWithOffset< GUM_ELEMENT >::setIncNotification(), and gum::MultiDimWithOffset< GUM_ELEMENT >::setLastNotification().
|
overridevirtualinherited |
Returns true if no var is in *this.
Implements gum::MultiDimInterface.
Definition at line 226 of file multiDimImplementation_tpl.h.
References _vars_, and isCommitNeeded_().
Referenced by gum::MultiDimBucket< GUM_ELEMENT >::_initializeBuffer_(), and gum::MultiDimArray< GUM_ELEMENT >::fill().
|
overridevirtualinherited |
Call this method after doing important changes in this MultiDimContainer.
Implements gum::MultiDimContainer< GUM_ELEMENT >.
Definition at line 237 of file multiDimImplementation_tpl.h.
References _internalChangeMethod_, _internalChangeState_, commitMultipleChanges_(), DIRECT_CHANGE, NO_CHANGE, and NOT_COMMITTED_CHANGE.
|
overridevirtualinherited |
Call this method after doing important changes in this MultiDimContainer.
Implements gum::MultiDimContainer< GUM_ELEMENT >.
Definition at line 247 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Removes a var from the variables of the multidimensional matrix.
| OperationNotAllowed | Raised if this object is non mutable. |
| NotFound | Raised if v does not belong to this. |
Implements gum::MultiDimInterface.
Reimplemented in gum::MultiDimSparse< GUM_ELEMENT >, and gum::MultiDimWithOffset< GUM_ELEMENT >.
Definition at line 127 of file multiDimImplementation_tpl.h.
References _domainSize_, _vars_, gum::DiscreteVariable::domainSize(), and GUM_ERROR.
Referenced by gum::MultiDimBucket< GUM_ELEMENT >::erase(), and gum::MultiDimWithOffset< GUM_ELEMENT >::erase().
| GUM_SCALAR gum::MultiDimICIModel< GUM_SCALAR >::externalWeight | ( | ) | const |
Copy of a multiDimICIModel.
This method is virtual because it should be optimized in certain MultiDimContainer.
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Definition at line 124 of file multiDimICIModel_tpl.h.
References externalWeight().
Referenced by externalWeight(), and toString().
| void gum::MultiDimICIModel< GUM_ELEMENT >::externalWeight | ( | GUM_ELEMENT | w | ) | const |
Copy of a multiDimICIModel.
This method is virtual because it should be optimized in certain MultiDimContainer.
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
|
virtualinherited |
Basic extraction of a MultiDimContainer.
This method is virtual because it should be optimized in certain MultiDimContainer.
| src | The MultiDimContainer src which datas are copied. |
| mask | partial instantiation of variables of the Tensor : the |
extraction will concern every variable not in the instantiation and the copy of data will use the (relevant) values in this instantiation.
Definition at line 242 of file multiDimContainer_tpl.h.
References MultiDimContainer(), beginMultipleChanges(), gum::MultiDimInterface::erase(), gum::MultiDimInterface::nbrDim(), and gum::MultiDimInterface::variable().
|
overridevirtualinherited |
Implements gum::MultiDimContainer< GUM_ELEMENT >.
Definition at line 87 of file multiDimReadOnly_tpl.h.
References GUM_ERROR.
|
virtualinherited |
Returns the value pointed by i.
| i | An Instantiation of this MultiDimContainer. |
Reimplemented in gum::aggregator::MultiDimAggregator< GUM_ELEMENT >, gum::aggregator::MultiDimAggregator< GUM_SCALAR >, gum::MultiDimBijArray< GUM_ELEMENT >, gum::MultiDimBucket< GUM_ELEMENT >, gum::MultiDimDecorator< GUM_ELEMENT >, gum::MultiDimDecorator< GUM_SCALAR >, gum::MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy >, gum::MultiDimFunctionGraph< bool >, gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< double >, gum::MultiDimFunctionGraph< double, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< gum::ActionSet, gum::SetTerminalNodePolicy >, gum::MultiDimFunctionGraph< GUM_ELEMENT, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< Size >, gum::MultiDimFunctionGraph< Size, ExactTerminalNodePolicy >, gum::MultiDimLogit< GUM_SCALAR >, gum::MultiDimNoisyAND< GUM_SCALAR >, gum::MultiDimNoisyORCompound< GUM_SCALAR >, gum::MultiDimNoisyORNet< GUM_SCALAR >, and gum::MultiDimSparse< GUM_ELEMENT >.
Definition at line 118 of file multiDimContainer_tpl.h.
References get_().
Referenced by apply(), and operator[]().
|
overrideprotectedvirtualinherited |
Implements gum::MultiDimContainer< GUM_ELEMENT >.
Definition at line 94 of file multiDimReadOnly_tpl.h.
References GUM_ERROR.
|
overridevirtualinherited |
In order to insure the dereference for decorators, we need to virtualize the access to master pointer.
Implements gum::MultiDimAdressable.
Definition at line 307 of file multiDimContainer_tpl.h.
References gum::MultiDimAdressable::MultiDimAdressable(), and content().
|
overridevirtualinherited |
In order to insure the dereference for decorators, we need to virtualize the access to master pointer.
Implements gum::MultiDimAdressable.
Definition at line 302 of file multiDimContainer_tpl.h.
References gum::MultiDimAdressable::MultiDimAdressable(), and content().
|
protectedvirtualinherited |
Inverts variables at position p1 and p2.
Call this from subclass when you want to invert position of two variables in the MultiDimImplementation.
| p1 | The first position. |
| p2 | The second position. |
Definition at line 316 of file multiDimImplementation_tpl.h.
References _vars_.
|
protectedinherited |
Get the actual state of *this.
Definition at line 274 of file multiDimImplementation_tpl.h.
References _internalChangeState_, and NOT_COMMITTED_CHANGE.
Referenced by MultiDimImplementation(), and empty().
|
protectedinherited |
Get the actual change method of this MultiDimImplementation.
Definition at line 268 of file multiDimImplementation_tpl.h.
References _internalChangeMethod_, and MULTIPLE_CHANGE.
Referenced by gum::MultiDimArray< GUM_ELEMENT >::add(), gum::MultiDimBucket< GUM_ELEMENT >::add(), gum::MultiDimArray< GUM_ELEMENT >::erase(), and gum::MultiDimBucket< GUM_ELEMENT >::erase().
|
overridevirtual |
returns the real name of the multiDimArray
In aGrUM, all the types of multi-dimensional arrays/functionals have a name that describes what they are in reality. For instance, a table stored in extension is a "MultiDimArray", one that stores only non zero elements is a "MultiDimSparseArray", and so on. These names are unique for each type of implementation and is used by the system to determine which is the best functions to use, say, when we wish to use operators such as operator+ on two MultiDimImplementations.
Implements gum::MultiDimImplementation< GUM_ELEMENT >.
Reimplemented in gum::MultiDimLogit< GUM_SCALAR >, gum::MultiDimNoisyAND< GUM_SCALAR >, gum::MultiDimNoisyORCompound< GUM_SCALAR >, and gum::MultiDimNoisyORNet< GUM_SCALAR >.
Definition at line 164 of file multiDimICIModel_tpl.h.
References name().
Referenced by name().
|
overridevirtualinherited |
Returns the number of vars in the multidimensional container.
Implements gum::MultiDimInterface.
Definition at line 182 of file multiDimImplementation_tpl.h.
References _vars_.
Referenced by gum::aggregator::MultiDimAggregator< GUM_ELEMENT >::buildValue_(), gum::MultiDimWithOffset< GUM_ELEMENT >::computeInstantiationValue_(), gum::aggregator::MultiDimAggregator< GUM_ELEMENT >::get(), gum::MultiDimICIModel< GUM_ELEMENT >::realSize(), gum::aggregator::MultiDimAggregator< GUM_ELEMENT >::toString(), and gum::MultiDimICIModel< GUM_ELEMENT >::toString().
|
nodiscardoverridepure virtualinherited |
Default constructor.
Implements gum::MultiDimImplementation< GUM_ELEMENT >.
Implemented in gum::aggregator::Amplitude< GUM_SCALAR >, gum::aggregator::And< GUM_SCALAR >, gum::aggregator::Count< GUM_SCALAR >, gum::aggregator::Exists< GUM_SCALAR >, gum::aggregator::Forall< GUM_SCALAR >, gum::aggregator::Max< GUM_SCALAR >, gum::aggregator::Median< GUM_SCALAR >, gum::aggregator::Min< GUM_SCALAR >, gum::aggregator::MultiDimAggregator< GUM_ELEMENT >, gum::aggregator::MultiDimAggregator< GUM_SCALAR >, gum::aggregator::Or< GUM_SCALAR >, gum::aggregator::Sum< GUM_SCALAR >, gum::MultiDimBucket< GUM_ELEMENT >, gum::MultiDimLogit< GUM_SCALAR >, gum::MultiDimNoisyAND< GUM_SCALAR >, gum::MultiDimNoisyORCompound< GUM_SCALAR >, and gum::MultiDimNoisyORNet< GUM_SCALAR >.
|
inherited |
Test if this MultiDimContainer is equal to p.
| p | The MultiDimContainer to test for equality. |
Definition at line 148 of file multiDimContainer_tpl.h.
References MultiDimContainer(), gum::MultiDimInterface::domainSize(), gum::MultiDimInterface::nbrDim(), and gum::MultiDimInterface::variablesSequence().
|
inherited |
An [] operator using a Instantiation as argument.
| i | An Instantiation. |
Definition at line 103 of file multiDimContainer_tpl.h.
References get().
|
virtualinherited |
Automatically fills this MultiDimContainer with the values in v.
The order used to fill this MultiDimContainer is the same as with an instantiation over it.
| v | Vector of values. |
| SizeError | Raised if v size's does not matches this MultiDimContainer domain size. |
Reimplemented in gum::MultiDimBijArray< GUM_ELEMENT >, gum::MultiDimDecorator< GUM_ELEMENT >, gum::MultiDimDecorator< GUM_SCALAR >, gum::MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy >, gum::MultiDimFunctionGraph< bool >, gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< double >, gum::MultiDimFunctionGraph< double, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< gum::ActionSet, gum::SetTerminalNodePolicy >, gum::MultiDimFunctionGraph< GUM_ELEMENT, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< Size >, and gum::MultiDimFunctionGraph< Size, ExactTerminalNodePolicy >.
Definition at line 172 of file multiDimContainer_tpl.h.
Referenced by gum::prm::PRMFactory< GUM_SCALAR >::setRawCPFByLines().
|
virtualinherited |
Automatically fills this MultiDimContainer with the values in l.
The order used to fill this MultiDimContainer is the same as with an instantiation over it.
| l | contains the data. |
| SizeError | Raised if l size's does not matches this MultiDimContainer domain size. |
Reimplemented in gum::MultiDimBijArray< GUM_ELEMENT >, and gum::MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy >.
Definition at line 186 of file multiDimContainer_tpl.h.
References gum::MultiDimInterface::domainSize(), GUM_ERROR, and set().
|
overridevirtualinherited |
Returns the index of a variable.
| v | The variable for which the index is returned. |
| NotFound | Raised if v is not in this multidimensional matrix. |
Implements gum::MultiDimInterface.
Definition at line 207 of file multiDimImplementation_tpl.h.
Referenced by gum::MultiDimArray< GUM_ELEMENT >::erase(), and gum::MultiDimWithOffset< GUM_ELEMENT >::erase().
|
overridevirtual |
Implements gum::MultiDimImplementation< GUM_ELEMENT >.
Definition at line 204 of file multiDimICIModel_tpl.h.
References gum::MultiDimImplementation< GUM_ELEMENT >::nbrDim(), and realSize().
Referenced by realSize().
|
virtualinherited |
compute lfold for this container
| f | the function to apply |
| base | the initial value |
Reimplemented in gum::MultiDimArray< GUM_ELEMENT >, gum::MultiDimDecorator< GUM_ELEMENT >, and gum::MultiDimDecorator< GUM_SCALAR >.
Definition at line 208 of file multiDimContainer_tpl.h.
|
overridevirtualinherited |
Register i as a slave of this MultiDimAdressable.
| i | The Instantiation to enslave. |
Implements gum::MultiDimAdressable.
Reimplemented in gum::MultiDimWithOffset< GUM_ELEMENT >.
Definition at line 157 of file multiDimImplementation_tpl.h.
References _vars_, and gum::Instantiation::nbrDim().
Referenced by gum::MultiDimBucket< GUM_ELEMENT >::registerSlave(), and gum::MultiDimWithOffset< GUM_ELEMENT >::registerSlave().
|
inherited |
Replace variables in this multidim.
If x is in this MultiDim and y has the same domain size, then x will be replace by y in this MultiDim.
| x | The variable in this which will be replaced. |
| y | The variable replacing y. |
| NotFound | Raised if x does not belong to this MultiDim. |
| OperationNotAllowed | If y and x are not interchangeable. |
| DuplicateElement | If y is already in this MultiDim. |
Definition at line 57 of file multiDimInterface_inl.h.
References contains(), gum::DiscreteVariable::domainSize(), GUM_ERROR, and replace_().
|
overrideprotectedvirtual |
This is called by MultiDimContainer::replace() to proceed with the replacing between x and y.
This is called only when everything have been checked.
| x | The variable to replace in |
| y | The second variable to swap. |
Implements gum::MultiDimInterface.
Definition at line 170 of file multiDimICIModel_tpl.h.
References replace_(), and gum::MultiDimImplementation< GUM_ELEMENT >::replace_().
Referenced by replace_().
|
overridevirtualinherited |
Reimplemented from gum::MultiDimContainer< GUM_ELEMENT >.
Definition at line 79 of file multiDimReadOnly_tpl.h.
References GUM_ERROR.
|
overridevirtual |
Copy of a multiDimICIModel.
This method is virtual because it should be optimized in certain MultiDimContainer.
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Implements gum::MultiDimAdressable.
Definition at line 196 of file multiDimICIModel_tpl.h.
References setChangeNotification().
Referenced by setChangeNotification().
|
overridevirtual |
Copy of a multiDimICIModel.
This method is virtual because it should be optimized in certain MultiDimContainer.
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Implements gum::MultiDimAdressable.
Definition at line 193 of file multiDimICIModel_tpl.h.
References setDecNotification().
Referenced by setDecNotification().
|
overridevirtual |
Copy of a multiDimICIModel.
This method is virtual because it should be optimized in certain MultiDimContainer.
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Implements gum::MultiDimAdressable.
Definition at line 184 of file multiDimICIModel_tpl.h.
References setFirstNotification().
Referenced by setFirstNotification().
|
overridevirtual |
Copy of a multiDimICIModel.
This method is virtual because it should be optimized in certain MultiDimContainer.
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Implements gum::MultiDimAdressable.
Definition at line 190 of file multiDimICIModel_tpl.h.
References setIncNotification().
Referenced by setIncNotification().
|
overridevirtual |
Copy of a multiDimICIModel.
This method is virtual because it should be optimized in certain MultiDimContainer.
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Implements gum::MultiDimAdressable.
Definition at line 187 of file multiDimICIModel_tpl.h.
References setLastNotification().
Referenced by setLastNotification().
|
protectedinherited |
Returns a constant reference over the list of slaved instantiations.
Definition at line 280 of file multiDimImplementation_tpl.h.
References _slaveInstantiations_.
Referenced by gum::MultiDimBucket< GUM_ELEMENT >::_initializeBuffer_().
|
overridevirtual |
Copy of a multiDimICIModel.
This method is virtual because it should be optimized in certain MultiDimContainer.
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Reimplemented from gum::MultiDimContainer< GUM_ELEMENT >.
Reimplemented in gum::MultiDimLogit< GUM_SCALAR >, gum::MultiDimNoisyAND< GUM_SCALAR >, gum::MultiDimNoisyORCompound< GUM_SCALAR >, and gum::MultiDimNoisyORNet< GUM_SCALAR >.
Definition at line 134 of file multiDimICIModel_tpl.h.
References causalWeight(), externalWeight(), gum::MultiDimImplementation< GUM_ELEMENT >::nbrDim(), toString(), and gum::MultiDimImplementation< GUM_ELEMENT >::variable().
Referenced by toString(), and toString().
|
overridevirtual |
Copy of a multiDimICIModel.
This method is virtual because it should be optimized in certain MultiDimContainer.
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Implements gum::MultiDimContainer< GUM_ELEMENT >.
Definition at line 199 of file multiDimICIModel_tpl.h.
References gum::Instantiation::toString(), and toString().
|
overridevirtualinherited |
Unregister i as a slave of this MultiDimAdressable.
| i | The Instantiation to free. |
Implements gum::MultiDimAdressable.
Reimplemented in gum::MultiDimWithOffset< GUM_ELEMENT >.
Definition at line 176 of file multiDimImplementation_tpl.h.
References _slaveInstantiations_.
Referenced by gum::MultiDimWithOffset< GUM_ELEMENT >::unregisterSlave().
|
overridevirtualinherited |
Returns a const ref to the ith var.
param i An index of this multidimensional matrix.
| NotFound | Raised if i does not reference a variable in this multidimensional matrix. |
Implements gum::MultiDimInterface.
Definition at line 192 of file multiDimImplementation_tpl.h.
Referenced by gum::aggregator::MultiDimAggregator< GUM_ELEMENT >::buildValue_(), gum::MultiDimWithOffset< GUM_ELEMENT >::computeInstantiationValue_(), gum::aggregator::MultiDimAggregator< GUM_ELEMENT >::get(), gum::aggregator::MultiDimAggregator< GUM_ELEMENT >::toString(), gum::MultiDimICIModel< GUM_ELEMENT >::toString(), gum::MultiDimNoisyAND< GUM_SCALAR >::toString(), gum::MultiDimNoisyORCompound< GUM_SCALAR >::toString(), and gum::MultiDimNoisyORNet< GUM_SCALAR >::toString().
|
overridevirtualinherited |
Returns the variable with the name.
| name | The index of the variable |
| NotFound | Raised if the element cannot be found. |
Implements gum::MultiDimInterface.
Definition at line 198 of file multiDimImplementation_tpl.h.
References name().
|
overridevirtualinherited |
Returns a const ref to the sequence of DiscreteVariable*.
Implements gum::MultiDimInterface.
Definition at line 220 of file multiDimImplementation_tpl.h.
References _vars_.
Referenced by gum::MultiDimBijArray< GUM_ELEMENT >::MultiDimBijArray(), gum::MultiDimBijArray< GUM_ELEMENT >::MultiDimBijArray(), gum::MultiDimBijArray< GUM_ELEMENT >::MultiDimBijArray(), gum::MultiDimFunctionGraphOperator< GUM_ELEMENT, FUNCTOR, TerminalNodePolicy >::_distance_(), gum::MultiDimFunctionGraphOperator< GUM_ELEMENT, FUNCTOR, TerminalNodePolicy >::_findRetrogradeVariables_(), gum::Regress< GUM_ELEMENT, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::_findRetrogradeVariables_(), gum::MultiDimBucket< GUM_ELEMENT >::_initializeBuffer_(), gum::MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy >::add(), gum::MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy >::clear(), gum::prm::copyTensor(), gum::MultiDimArray< GUM_ELEMENT >::erase(), gum::MultiDimWithOffset< GUM_ELEMENT >::erase(), gum::MultiDimFunctionGraphGenerator::generate(), gum::MDDOperatorStrategy< GUM_ELEMENT >::lastVar_(), gum::StructuredPlaner< GUM_ELEMENT >::makeArgMax_(), gum::TreeOperatorStrategy< GUM_ELEMENT >::regress(), and gum::MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy >::varNodeListe().
|
mutableprotected |
\( P(e | c_i) \) in Henrion (89) in a hashtable with a default_value.
Definition at line 189 of file multiDimICIModel.h.
Referenced by causalWeight().
|
mutableprotected |
\( P(e | c_i) \) in Henrion (89) in a hashtable with a default_value.
Definition at line 187 of file multiDimICIModel.h.
|
privateinherited |
This MultiDimImplementation domain size.
Definition at line 329 of file multiDimImplementation.h.
Referenced by MultiDimImplementation(), MultiDimImplementation(), domainSize(), and erase().
|
mutableprotected |
\( p_0 \) in Henrion (89).
Definition at line 179 of file multiDimICIModel.h.
Referenced by copyFrom().
|
privateinherited |
The current change method.
Definition at line 323 of file multiDimImplementation.h.
Referenced by MultiDimImplementation(), MultiDimImplementation(), beginMultipleChanges(), endMultipleChanges(), and isInMultipleChangeMethod_().
|
privateinherited |
The current change state.
Definition at line 326 of file multiDimImplementation.h.
Referenced by MultiDimImplementation(), MultiDimImplementation(), _setNotCommitedChange_(), endMultipleChanges(), and isCommitNeeded_().
|
privateinherited |
List of instantiations of the tuples (sequences) of variables.
Definition at line 314 of file multiDimImplementation.h.
Referenced by MultiDimImplementation(), ~MultiDimImplementation(), slaves_(), and unregisterSlave().
|
privateinherited |
List of discrete variables (dimensions).
Definition at line 311 of file multiDimImplementation.h.
Referenced by MultiDimImplementation(), MultiDimImplementation(), add(), contains(), empty(), erase(), invert_(), nbrDim(), registerSlave(), replace_(), and variablesSequence().