aGrUM 3.1.1
a C++ library for (probabilistic) graphical models
treeOperator.h
Go to the documentation of this file.
1/****************************************************************************
2 * This file is part of the aGrUM/pyAgrum library. *
3 * *
4 * Copyright (c) 2005-2026 by *
5 * - Pierre-Henri WUILLEMIN(_at_LIP6) *
6 * - Christophe GONZALES(_at_AMU) *
7 * *
8 * The aGrUM/pyAgrum library is free software; you can redistribute it *
9 * and/or modify it under the terms of either : *
10 * *
11 * - the GNU Lesser General Public License as published by *
12 * the Free Software Foundation, either version 3 of the License, *
13 * or (at your option) any later version, *
14 * - the MIT license (MIT), *
15 * - or both in dual license, as here. *
16 * *
17 * (see https://agrum.gitlab.io/articles/dual-licenses-lgplv3mit.html) *
18 * *
19 * This aGrUM/pyAgrum library is distributed in the hope that it will be *
20 * useful, but WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
21 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES MERCHANTABILITY or FITNESS *
22 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
25 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
26 * OTHER DEALINGS IN THE SOFTWARE. *
27 * *
28 * See LICENCES for more details. *
29 * *
30 * SPDX-FileCopyrightText: Copyright 2005-2026 *
31 * - Pierre-Henri WUILLEMIN(_at_LIP6) *
32 * - Christophe GONZALES(_at_AMU) *
33 * SPDX-License-Identifier: LGPL-3.0-or-later OR MIT *
34 * *
35 * Contact : info_at_agrum_dot_org *
36 * homepage : http://agrum.gitlab.io *
37 * gitlab : https://gitlab.com/agrumery/agrum *
38 * *
39 ****************************************************************************/
40
41
50
51#ifndef GUM_TREE_OPERATOR_H
52#define GUM_TREE_OPERATOR_H
53
54#include <functional>
55
57
58namespace gum {
59
67 template < typename GUM_ELEMENT,
68 template < typename > class COMBINEOPERATOR,
69 template < typename > class TerminalNodePolicy = ExactTerminalNodePolicy >
71 public:
72 // ============================================================================
74 // ============================================================================
76
82
89
94
96 // ============================================================================
98 // ============================================================================
100
104
106
107 private:
109 NodeId _xPloreDT1_(NodeId currentNodeId);
110
112 NodeId _xPloreDT2_(NodeId currentNodeId);
113
115
119
122
124 const COMBINEOPERATOR< GUM_ELEMENT > _combine_;
125
128 };
129
130#ifndef GUM_NO_EXTERN_TEMPLATE_CLASS
131 extern template class TreeOperator< double, std::plus >;
132#endif
133
134} // namespace gum
135
137
138#endif // GUM_OPERATOR_H
Base class for discrete random variable.
Implementation of a Terminal Node Policy that maps nodeid directly to value.
The class for generic Hash Tables.
Definition hashTable.h:640
Class used to perform Decision Tree Operation in the FMDP Framework.
HashTable< const DiscreteVariable *, Idx > _context_
TreeOperator(const MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy > *dt1, const MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy > *dt2)
Default constructor.
const MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy > * _dt1_
The two function graphs used for the operation.
MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy > * _rd_
The resulting function graph.
NodeId _checkRedundancy_(const DiscreteVariable *, NodeId *)
NodeId _xPloreDT1_(NodeId currentNodeId)
The main recursion function.
~TreeOperator()
Default destructor.
NodeId _xPloreDT2_(NodeId currentNodeId)
The main recursion function.
const COMBINEOPERATOR< GUM_ELEMENT > _combine_
The function to be performed on the leaves.
const MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy > * _dt2_
MultiDimFunctionGraph< GUM_ELEMENT, TerminalNodePolicy > * compute()
Computes and builds the Function Graph that is the result of the operation.
Size NodeId
Type for node ids.
Headers of MultiDimFunctionGraph.
gum is the global namespace for all aGrUM entities
Definition agrum.h:46
Class used to compute the operation between two decision diagrams.