![]() |
aGrUM 3.0.0
a C++ library for (probabilistic) graphical models
|
#include <agrum/base/multidim/aggregators/and.h>
Public Member Functions | |
| And () | |
| And (const And< GUM_SCALAR > &from) | |
| ~And () override | |
| MultiDimContainer< GUM_SCALAR > * | newFactory () const override |
| This method creates a clone of this object, withouth its content (including variable), you must use this method if you want to ensure that the generated object has the same type than the object containing the called newFactory(). | |
| std::string | aggregatorName () const override |
Accessors / Modifiers | |
| GUM_SCALAR | get (const Instantiation &i) const override |
| std::string | toString () const override |
| void | changeNotification (const gum::Instantiation &, const gum::DiscreteVariable *const, gum::Idx, gum::Idx) override |
| void | setFirstNotification (const gum::Instantiation &) override |
| void | setLastNotification (const gum::Instantiation &) override |
| void | setIncNotification (const gum::Instantiation &) override |
| void | setDecNotification (const gum::Instantiation &) override |
| void | setChangeNotification (const gum::Instantiation &) override |
| Size | realSize () const override |
| const std::string & | name () const override |
| Returns the real name of the multiDimArray. | |
| void | copyFrom (const MultiDimContainer< GUM_SCALAR > &src) const override |
| Copy of a multiDimICIModel. | |
| bool | isDecomposable () const |
Slave management and extension due to slave management | |
| virtual std::string | toString (const Instantiation *i) const =0 |
| Return a string representation of internal data about i in this. | |
| virtual const MultiDimAdressable & | getMasterRef () const =0 |
| In order to insure the dereference for decorators, we need to virtualize the access to master pointer. | |
Accessors / Modifiers | |
| void | set (const Instantiation &i, const GUM_SCALAR &value) const override |
| void | fill (const GUM_SCALAR &) const override |
Accessors / Modifiers | |
| virtual void | fill (const GUM_SCALAR &d) const=0 |
| Fill the table with d. | |
| GUM_SCALAR | operator[] (const Instantiation &i) const |
| An [] operator using a Instantiation as argument. | |
| virtual void | populate (const std::vector< GUM_SCALAR > &v) const |
| Automatically fills this MultiDimContainer with the values in v. | |
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_SCALAR * | data () const noexcept |
| Returns a 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. | |
| 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. | |
Accessors / Modifiers | |
| virtual const DiscreteVariable & | variable (std::string_view name) const =0 |
| Returns the variable with the name. | |
| void | replace (const DiscreteVariable &x, const DiscreteVariable &y) |
| Replace variables in this multidim. | |
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. | |
Copy methods. | |
| virtual void | extractFrom (const MultiDimContainer< GUM_SCALAR > &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. | |
| virtual void | copy (const MultiDimContainer< GUM_SCALAR > &src) |
| Removes all variables in this MultiDimContainer and copy the content of src, variables included. | |
Various methods. | |
| bool | operator== (const MultiDimContainer< GUM_SCALAR > &p) const |
| Test if this MultiDimContainer is equal to p. | |
| virtual void | apply (std::function< GUM_SCALAR(GUM_SCALAR) > f) const |
| Apply a function on every element of the container. | |
| virtual GUM_SCALAR | reduce (std::function< GUM_SCALAR(GUM_SCALAR, GUM_SCALAR) > f, GUM_SCALAR base) const |
| compute lfold for this container | |
Protected Member Functions | |
| Idx | neutralElt_ () const override |
| neutralElt_() is the result value for the first application of fold_ | |
| Idx | fold_ (const DiscreteVariable &v, Idx i1, Idx i2, bool &stop_iteration) const override |
| fold_ is applied on value i1 for variable v. the actual result for precedent applications is i2. | |
| virtual Idx | buildValue_ (const gum::Instantiation &i) const |
| by default, buildValue_ uses a "fold" scheme and the user has to implement neutralElt_ and fold_ but if necessary (as for Median), buildValue_ can be reimplemented. | |
| GUM_SCALAR & | get_ (const Instantiation &i) const override |
| const MultiDimImplementation< GUM_SCALAR > * | content () const final |
| Returns the implementation for this object (may be *this). | |
Fast large modifications in structures | |
| virtual void | commitMultipleChanges_ () |
| 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. | |
| void | replace_ (const DiscreteVariable *x, const DiscreteVariable *y) override |
| Replace variable x by y. | |
| virtual void | invert_ (Idx p1, Idx p2) |
| Inverts variables at position p1 and p2. | |
Protected Attributes | |
| bool | decomposable_ |
| decomposable_ indicates if the aggregator can be decomposed | |
Private Types | |
| enum | _InternalChangeMethod_ |
| Used to represent in which change method this MultiDimImplementation is. More... | |
| enum | _InternalChangeState_ |
| 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 | |
| Idx | _value_ |
| 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. | |
And aggregator.
Note that a And(i) aggregator should have a binary aggregator variable since only 0 and 1 indexes are adressed...
|
strongprivateinherited |
Used to represent in which change method this MultiDimImplementation is.
Definition at line 317 of file multiDimImplementation.h.
|
strongprivateinherited |
Used to represent in which change state this MultiDimImplementation is.
Definition at line 320 of file multiDimImplementation.h.
| gum::aggregator::And< GUM_SCALAR >::And | ( | ) |
Definition at line 59 of file and_tpl.h.
References And(), gum::aggregator::MultiDimAggregator< GUM_SCALAR >::MultiDimAggregator(), and gum::aggregator::MultiDimAggregator< GUM_SCALAR >::decomposable_.
Referenced by And(), And(), ~And(), and newFactory().
| gum::aggregator::And< GUM_SCALAR >::And | ( | const And< GUM_SCALAR > & | from | ) |
Definition at line 65 of file and_tpl.h.
References And(), and gum::aggregator::MultiDimAggregator< GUM_SCALAR >::MultiDimAggregator().
|
override |
|
privateinherited |
Change the internalChangeState to NOT_COMMITTED_CHANGE.
Definition at line 334 of file multiDimImplementation_tpl.h.
|
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.
Definition at line 195 of file multiDimImplementation_tpl.h.
|
overridevirtual |
This function is used for compute
Implements gum::aggregator::MultiDimAggregator< GUM_SCALAR >.
Definition at line 93 of file and_tpl.h.
|
virtualinherited |
Apply a function on every element of the container.
| f | the function to apply |
Reimplemented in gum::MultiDimDecorator< GUM_SCALAR >.
Definition at line 365 of file multiDimContainer_tpl.h.
|
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 135 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Call this method before doing important changes in this MultiDimContainer.
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 230 of file multiDimImplementation_tpl.h.
|
protectedvirtualinherited |
by default, buildValue_ uses a "fold" scheme and the user has to implement neutralElt_ and fold_ but if necessary (as for Median), buildValue_ can be reimplemented.
Reimplemented in gum::aggregator::Amplitude< GUM_SCALAR >, and gum::aggregator::Median< GUM_SCALAR >.
Definition at line 197 of file multiDimAggregator_tpl.h.
|
overridevirtualinherited |
This function is used for compute
Implements gum::MultiDimAdressable.
Definition at line 137 of file multiDimAggregator_tpl.h.
|
protectedvirtualinherited |
Synchronize content after MultipleChanges.
Definition at line 247 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 162 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Returns true if var is in *this.
| v | A DiscreteVariable. |
Implements gum::MultiDimInterface.
Definition at line 206 of file multiDimImplementation_tpl.h.
|
finalprotectedvirtualinherited |
Returns the implementation for this object (may be *this).
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 302 of file multiDimImplementation_tpl.h.
|
virtualinherited |
Removes all variables in this MultiDimContainer and copy the content of src, variables included.
| src | The MultiDimContainer to copy. |
Definition at line 314 of file multiDimContainer_tpl.h.
|
overridevirtualinherited |
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_SCALAR >.
Definition at line 183 of file multiDimAggregator_tpl.h.
|
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.
Definition at line 175 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Returns the product of the variables domain size.
Implements gum::MultiDimInterface.
Definition at line 193 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Returns true if no var is in *this.
Implements gum::MultiDimInterface.
Definition at line 208 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Call this method after doing important changes in this MultiDimContainer.
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 232 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.
Definition at line 197 of file multiDimImplementation_tpl.h.
|
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 280 of file multiDimContainer_tpl.h.
|
pure virtualinherited |
Fill the table with d.
| d | The value used to fill this MultiDimContainer. |
Implemented in gum::MultiDimDecorator< GUM_SCALAR >.
|
overrideinherited |
Definition at line 107 of file multiDimReadOnly_tpl.h.
|
overrideprotectedvirtual |
fold_ is applied on value i1 for variable v. the actual result for precedent applications is i2.
Implements gum::aggregator::MultiDimAggregator< GUM_SCALAR >.
Definition at line 80 of file and_tpl.h.
|
overridevirtualinherited |
This function is used for compute
Reimplemented from gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 132 of file multiDimAggregator_tpl.h.
|
overrideprotectedvirtualinherited |
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 116 of file multiDimReadOnly_tpl.h.
|
pure virtualinherited |
In order to insure the dereference for decorators, we need to virtualize the access to master pointer.
Implemented in gum::MultiDimBucket< GUM_ELEMENT >, and gum::MultiDimContainer< GUM_ELEMENT >.
References MultiDimAdressable().
|
overridevirtualinherited |
In order to insure the dereference for decorators, we need to virtualize the access to master pointer.
Implements gum::MultiDimAdressable.
Definition at line 298 of file multiDimContainer_tpl.h.
|
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 295 of file multiDimImplementation_tpl.h.
|
protectedinherited |
Get the actual state of *this.
Definition at line 265 of file multiDimImplementation_tpl.h.
|
inherited |
Definition at line 188 of file multiDimAggregator_tpl.h.
|
protectedinherited |
Get the actual change method of this MultiDimImplementation.
Definition at line 259 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
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_SCALAR >.
Definition at line 172 of file multiDimAggregator_tpl.h.
|
overridevirtualinherited |
Returns the number of vars in the multidimensional container.
Implements gum::MultiDimInterface.
Definition at line 191 of file multiDimImplementation_tpl.h.
|
overrideprotectedvirtual |
neutralElt_() is the result value for the first application of fold_
Implements gum::aggregator::MultiDimAggregator< GUM_SCALAR >.
|
nodiscardoverridevirtual |
This method creates a clone of this object, withouth its content (including variable), you must use this method if you want to ensure that the generated object has the same type than the object containing the called newFactory().
For example :
Then x is a MultiDimArray<double>*
Implements gum::aggregator::MultiDimAggregator< GUM_SCALAR >.
Definition at line 98 of file and_tpl.h.
References And().
|
inherited |
Test if this MultiDimContainer is equal to p.
| p | The MultiDimContainer to test for equality. |
Definition at line 359 of file multiDimContainer_tpl.h.
|
inherited |
An [] operator using a Instantiation as argument.
| i | An Instantiation. |
Definition at line 184 of file multiDimContainer_tpl.h.
|
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::MultiDimDecorator< GUM_SCALAR >.
Definition at line 210 of file multiDimContainer_tpl.h.
|
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 204 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
This function is used for compute
Implements gum::MultiDimImplementation< GUM_SCALAR >.
Definition at line 159 of file multiDimAggregator_tpl.h.
|
virtualinherited |
compute lfold for this container
| f | the function to apply |
| base | the initial value |
Reimplemented in gum::MultiDimDecorator< GUM_SCALAR >.
Definition at line 372 of file multiDimContainer_tpl.h.
|
overridevirtualinherited |
Register i as a slave of this MultiDimAdressable.
| i | The Instantiation to enslave. |
Implements gum::MultiDimAdressable.
Definition at line 216 of file multiDimImplementation_tpl.h.
|
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_().
|
overrideprotectedvirtualinherited |
Replace variable x by y.
Technically this should be call by any subclass overloading this method to proceed with the changes in this class containers.
| x | The first variable to swap. |
| y | The second variable to swap. |
Implements gum::MultiDimInterface.
Definition at line 284 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Reimplemented from gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 101 of file multiDimReadOnly_tpl.h.
|
overridevirtualinherited |
This function is used for compute
Implements gum::MultiDimAdressable.
Definition at line 150 of file multiDimAggregator_tpl.h.
|
overridevirtualinherited |
This function is used for compute
Implements gum::MultiDimAdressable.
Definition at line 148 of file multiDimAggregator_tpl.h.
|
overridevirtualinherited |
This function is used for compute
Implements gum::MultiDimAdressable.
Definition at line 142 of file multiDimAggregator_tpl.h.
|
overridevirtualinherited |
This function is used for compute
Implements gum::MultiDimAdressable.
Definition at line 146 of file multiDimAggregator_tpl.h.
|
overridevirtualinherited |
This function is used for compute
Implements gum::MultiDimAdressable.
Definition at line 144 of file multiDimAggregator_tpl.h.
|
protectedinherited |
Returns a constant reference over the list of slaved instantiations.
Definition at line 273 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
This function is used for compute
Reimplemented from gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 135 of file multiDimAggregator_tpl.h.
|
pure virtualinherited |
Return a string representation of internal data about i in this.
| i | The Instantiation to represent. |
Implemented in gum::aggregator::MultiDimAggregator< GUM_ELEMENT >, gum::MultiDimBucket< GUM_ELEMENT >, gum::MultiDimContainer< 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::MultiDimICIModel< GUM_ELEMENT >, and gum::MultiDimWithOffset< GUM_ELEMENT >.
|
overridevirtualinherited |
Unregister i as a slave of this MultiDimAdressable.
| i | The Instantiation to free. |
Implements gum::MultiDimAdressable.
Definition at line 218 of file multiDimImplementation_tpl.h.
|
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 201 of file multiDimImplementation_tpl.h.
|
pure virtualinherited |
Returns the variable with the name.
| name | The index of the variable |
| NotFound | Raised if the element cannot be found. |
Implemented in gum::Instantiation, gum::MultiDimDecorator< GUM_ELEMENT >, gum::MultiDimImplementation< GUM_ELEMENT >, gum::MultiDimImplementation< GUM_ELEMENT > *(*)(const MultiDimImplementation< GUM_ELEMENT > *, const HashTable< const DiscreteVariable *, Idx > &), gum::MultiDimImplementation< GUM_ELEMENT > *(*)(const MultiDimImplementation< GUM_ELEMENT > *, const MultiDimImplementation< GUM_ELEMENT > *), and gum::VariableSet &)< GUM_ELEMENT >.
|
overridevirtualinherited |
Returns a const ref to the sequence of DiscreteVariable*.
Implements gum::MultiDimInterface.
Definition at line 199 of file multiDimImplementation_tpl.h.
|
privateinherited |
This MultiDimImplementation domain size.
Definition at line 329 of file multiDimImplementation.h.
|
privateinherited |
The current change method.
Definition at line 323 of file multiDimImplementation.h.
|
privateinherited |
The current change state.
Definition at line 326 of file multiDimImplementation.h.
|
privateinherited |
List of instantiations of the tuples (sequences) of variables.
Definition at line 314 of file multiDimImplementation.h.
|
private |
|
privateinherited |
List of discrete variables (dimensions).
Definition at line 311 of file multiDimImplementation.h.
|
protectedinherited |
decomposable_ indicates if the aggregator can be decomposed
Definition at line 200 of file multiDimAggregator.h.
Referenced by gum::aggregator::And< GUM_SCALAR >::And(), gum::aggregator::Max< GUM_SCALAR >::Max(), gum::aggregator::Min< GUM_SCALAR >::Min(), gum::aggregator::Or< GUM_SCALAR >::Or(), and gum::aggregator::Sum< GUM_SCALAR >::Sum().