aGrUM
3.2.0
a C++ library for (probabilistic) graphical models
Toggle main menu visibility
partialOrderedEliminationSequenceStrategy.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
52
53
#ifndef GUM_PARTIAL_ORDERED_ELIMINATION_SEQUENCE_STRATEGY_H
54
#define GUM_PARTIAL_ORDERED_ELIMINATION_SEQUENCE_STRATEGY_H
55
56
#include <
agrum/base/graphs/algorithms/triangulations/eliminationStrategies/eliminationSequenceStrategy.h
>
57
58
namespace
gum
{
59
73
class
PartialOrderedEliminationSequenceStrategy
:
public
EliminationSequenceStrategy
{
74
public
:
75
// ############################################################################
77
// ############################################################################
79
81
~PartialOrderedEliminationSequenceStrategy
()
override
;
82
87
[[nodiscard]]
PartialOrderedEliminationSequenceStrategy
*
newFactory
()
const override
= 0;
88
90
[[nodiscard]]
PartialOrderedEliminationSequenceStrategy
*
copyFactory
()
const override
= 0;
91
93
94
95
// ############################################################################
97
// ############################################################################
99
101
114
bool
setGraph
(
UndiGraph
*
graph
,
const
NodeProperty< Size >
* dom_sizes)
override
;
115
117
126
virtual
bool
setPartialOrder
(
const
List< NodeSet >
* subsets);
127
130
void
clear
()
override
;
131
133
const
List< NodeSet >
*
partialOrder
() const noexcept;
134
136
139
bool
isPartialOrderNeeded
() const noexcept;
140
142
143
144
protected:
146
const
List
<
NodeSet
>*
subsets_
{
nullptr
};
147
149
List< NodeSet >::const_iterator
subset_iter_
;
150
152
NodeSet
nodeset_
;
153
155
bool
partial_order_needed_
{
true
};
156
157
159
163
bool
isPartialOrderNeeded_
(
const
List< NodeSet >
* subsets)
const
;
164
165
166
// ############################################################################
168
// ############################################################################
170
172
PartialOrderedEliminationSequenceStrategy
();
173
175
186
PartialOrderedEliminationSequenceStrategy
(
UndiGraph
*
graph
,
187
const
NodeProperty< Size >
* dom_sizes,
188
const
List< NodeSet >
* subsets);
189
191
PartialOrderedEliminationSequenceStrategy
(
const
PartialOrderedEliminationSequenceStrategy
&);
192
194
PartialOrderedEliminationSequenceStrategy
(
PartialOrderedEliminationSequenceStrategy
&&);
195
197
};
198
199
}
/* namespace gum */
200
201
202
#ifndef GUM_NO_INLINE
203
# include <
agrum/base/graphs/algorithms/triangulations/eliminationStrategies/partialOrderedEliminationSequenceStrategy_inl.h
>
204
#endif
// GU%_NO_INLINE
205
206
207
#endif
/* GUM_PARTIAL_ORDERED_ELIMINATION_SEQUENCE_STRATEGY_H */
gum::EliminationSequenceStrategy::EliminationSequenceStrategy
EliminationSequenceStrategy()
default constructor
Definition
eliminationSequenceStrategy.cpp:78
gum::EliminationSequenceStrategy::graph
UndiGraph * graph() const noexcept
returns the current graph
Definition
eliminationSequenceStrategy_inl.h:59
gum::List
Generic doubly linked lists.
Definition
list.h:378
gum::List::const_iterator
ListConstIterator< Val > const_iterator
Types for STL compliance.
Definition
list.h:390
gum::PartialOrderedEliminationSequenceStrategy
Base class for all elimination sequence algorithm that impose a given partial ordering on the nodes e...
Definition
partialOrderedEliminationSequenceStrategy.h:73
gum::PartialOrderedEliminationSequenceStrategy::newFactory
PartialOrderedEliminationSequenceStrategy * newFactory() const override=0
creates a new elimination sequence of the same type as the current object, but this sequence contains...
gum::PartialOrderedEliminationSequenceStrategy::isPartialOrderNeeded_
bool isPartialOrderNeeded_(const List< NodeSet > *subsets) const
indicate whether a partial ordering is compatible with the current graph
Definition
partialOrderedEliminationSequenceStrategy.cpp:118
gum::PartialOrderedEliminationSequenceStrategy::partial_order_needed_
bool partial_order_needed_
indicate whether a new partial ordering is necessary for the elimination
Definition
partialOrderedEliminationSequenceStrategy.h:155
gum::PartialOrderedEliminationSequenceStrategy::subsets_
const List< NodeSet > * subsets_
the subsets constituting the partial ordering
Definition
partialOrderedEliminationSequenceStrategy.h:146
gum::PartialOrderedEliminationSequenceStrategy::setGraph
bool setGraph(UndiGraph *graph, const NodeProperty< Size > *dom_sizes) override
sets a new graph to be triangulated
Definition
partialOrderedEliminationSequenceStrategy.cpp:107
gum::PartialOrderedEliminationSequenceStrategy::partialOrder
const List< NodeSet > * partialOrder() const noexcept
returns the current partial ordering
Definition
partialOrderedEliminationSequenceStrategy_inl.h:61
gum::PartialOrderedEliminationSequenceStrategy::clear
void clear() override
clears the sequence (to prepare, for instance, a new elimination sequence)
Definition
partialOrderedEliminationSequenceStrategy.cpp:157
gum::PartialOrderedEliminationSequenceStrategy::subset_iter_
List< NodeSet >::const_iterator subset_iter_
the iterator indicating which is the current subset on which we work
Definition
partialOrderedEliminationSequenceStrategy.h:149
gum::PartialOrderedEliminationSequenceStrategy::copyFactory
PartialOrderedEliminationSequenceStrategy * copyFactory() const override=0
virtual copy constructor
gum::PartialOrderedEliminationSequenceStrategy::isPartialOrderNeeded
bool isPartialOrderNeeded() const noexcept
indicates if a new partial ordering is needed
Definition
partialOrderedEliminationSequenceStrategy_inl.h:66
gum::PartialOrderedEliminationSequenceStrategy::PartialOrderedEliminationSequenceStrategy
PartialOrderedEliminationSequenceStrategy()
default constructor (uses an empty graph)
Definition
partialOrderedEliminationSequenceStrategy.cpp:62
gum::PartialOrderedEliminationSequenceStrategy::setPartialOrder
virtual bool setPartialOrder(const List< NodeSet > *subsets)
sets a new partial ordering constraint on the elimination sequence
Definition
partialOrderedEliminationSequenceStrategy.cpp:135
gum::PartialOrderedEliminationSequenceStrategy::nodeset_
NodeSet nodeset_
the nodes which can be currently eliminated
Definition
partialOrderedEliminationSequenceStrategy.h:152
gum::UndiGraph
Base class for undirected graphs.
Definition
undiGraph.h:130
eliminationSequenceStrategy.h
Base Class for all elimination sequence algorithms used by triangulations.
gum::NodeProperty
HashTable< NodeId, VAL > NodeProperty
Property on graph elements.
Definition
graphElements.h:407
gum::NodeSet
Set< NodeId > NodeSet
Some typdefs and define for shortcuts ...
Definition
graphElements.h:392
gum::graph
Definition
bayesBall.h:79
gum
gum is the global namespace for all aGrUM entities
Definition
agrum.h:46
partialOrderedEliminationSequenceStrategy_inl.h
Base class for all elimination sequence algorithm that impose a given partial ordering on the nodes e...
aGrUM
3.2.0
© PHW&CG&others - 2022
DoXyGeN 1.18.0