aGrUM  0.20.3
a C++ library for (probabilistic) graphical models
max.h
Go to the documentation of this file.
1 /**
2  *
3  * Copyright (c) 2005-2021 by Pierre-Henri WUILLEMIN(@LIP6) & Christophe GONZALES(@AMU)
4  * info_at_agrum_dot_org
5  *
6  * This library is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU Lesser General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this library. If not, see <http://www.gnu.org/licenses/>.
18  *
19  */
20 
21 
22 /**
23  * @file
24  * @brief max aggregator
25  *
26  * @author Pierre-Henri WUILLEMIN(@LIP6) & Christophe GONZALES(@AMU)
27  */
28 
29 #ifndef GUM_MAX_AGGREGATOR_H
30 #define GUM_MAX_AGGREGATOR_H
31 
32 #include <agrum/tools/multidim/aggregators/multiDimAggregator.h>
33 
34 namespace gum {
35 
36  namespace aggregator {
37  // =========================================================================
38  // === GUM_MAX_AGGREGATOR ===
39  // =========================================================================
40  /**
41  * @class Max
42  * @headerfile max.h <agrum/tools/multidim/aggregators/max.h>
43  * @ingroup multidim_agg_group
44  *
45  * @brief max aggregator
46  *
47  * @see MultiDimAggregator for more details of implementations
48  *
49  * Note that a <tt>Max</tt> aggregator with a binary aggregator variable is
50  * the \f$ \exists \neq 0\f$ aggregator.
51  */
52  template < typename GUM_SCALAR >
53  class Max: public MultiDimAggregator< GUM_SCALAR > {
54  public:
55  Max();
56  Max(const Max< GUM_SCALAR >& from);
57  virtual ~Max();
58 
59  /**
60  * This method creates a clone of this object, withouth its content
61  * (including variable), you must use this method if you want to ensure
62  * that the generated object has the same type than the object containing
63  * the called newFactory()
64  *
65  * For example :
66  *
67  * @code
68  * MultiDimArray<double> y;
69  * MultiDimContainer<double>* x = y.newFactory();
70  * @endcode
71  *
72  * Then x is a MultiDimArray<double>*
73  *
74  * @warning you must desallocate by yourself the memory
75  * @return an empty clone of this object with the same type
76  */
77  virtual MultiDimContainer< GUM_SCALAR >* newFactory() const;
78 
79  virtual std::string aggregatorName() const;
80 
81  protected:
82  virtual Idx neutralElt_() const;
83  virtual Idx fold_(const DiscreteVariable& v, Idx i1, Idx i2, bool& stop_iteration) const;
84  };
85 
86 
87 #ifndef GUM_NO_EXTERN_TEMPLATE_CLASS
88  extern template class Max< double >;
89 #endif
90 
91 
92  } // namespace aggregator
93 } // namespace gum
94 
95 #include <agrum/tools/multidim/aggregators/max_tpl.h>
96 
97 #endif // GUM_MAX_AGGREGATOR_H
INLINE void emplace(Args &&... args)
Definition: set_tpl.h:643
virtual ~Max()
Definition: max_tpl.h:48
virtual Idx fold_(const DiscreteVariable &v, Idx i1, Idx i2, bool &stop_iteration) const
fold_ is applied on value i1 for variable v. the actual result for precedent applications is i2...
Definition: max_tpl.h:58
virtual MultiDimContainer< GUM_SCALAR > * newFactory() const
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()
Definition: max_tpl.h:71
virtual std::string aggregatorName() const
Definition: max_tpl.h:66
Max(const Max< GUM_SCALAR > &from)
Definition: max_tpl.h:42
max aggregator
Definition: max.h:53
INLINE std::ostream & operator<<(std::ostream &s, const MultiDimAggregator< GUM_SCALAR > &ag)
For friendly displaying the content of the array.
virtual Idx neutralElt_() const
neutralElt_() is the result value for the first application of fold_
Definition: max_tpl.h:53