aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
structuralConstraintSliceOrder.h
Go to the documentation of this file.
1/****************************************************************************
2 * This file is part of the aGrUM/pyAgrum library. *
3 * *
4 * Copyright (c) 2005-2025 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-2025 *
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
58#ifndef GUM_LEARNING_STRUCTURAL_CONSTRAINT_SLICE_ORDER_H
59#define GUM_LEARNING_STRUCTURAL_CONSTRAINT_SLICE_ORDER_H
60
61#include <agrum/agrum.h>
62
64
65namespace gum {
66
67 namespace learning {
68
87 protected virtual StructuralConstraintSetStatic< StructuralConstraintDiGraph > {
88 public:
89 // ##########################################################################
91 // ##########################################################################
93
96
98
100
103
106
109
112
114
115 // ##########################################################################
117 // ##########################################################################
119
122
125
127
128 // ##########################################################################
130 // ##########################################################################
132
135
138
140 void addNode(NodeId node, NodeId slice);
141
145
147 void setGraphAlone(const DiGraph& graph);
148
150
156 void modifyGraphAlone(const ArcAddition& change);
157
159
161 void modifyGraphAlone(const ArcDeletion& change);
162
164
170 void modifyGraphAlone(const ArcReversal& change);
171
173
179 void modifyGraphAlone(const GraphChange& change);
180
182
195 bool isAlwaysInvalidAlone(const GraphChange& change) const;
196
198
202
204
206
208
211
213
216 bool checkModificationAlone(const ArcAddition& change) const;
217
219
220 bool checkModificationAlone(const ArcDeletion& change) const;
221
223
225 bool checkModificationAlone(const ArcReversal& change) const;
226
228
234 bool checkModificationAlone(const GraphChange& change) const;
235
237
238#ifndef DOXYGEN_SHOULD_SKIP_THIS
239// include the set of methods that enable the structural constraint to
240// be standalone, i.e., that it needs not be included into a
241// StructuralConstraintSetStatic to be used by learning algorithms
242# define GUM_CONSTRAINT_CLASS_NAME StructuralConstraintSliceOrder
244# undef GUM_CONSTRAINT_CLASS_NAME
245#endif // DOXYGEN_SHOULD_SKIP_THIS
246
247 protected:
250 };
251
252 } /* namespace learning */
253
254} /* namespace gum */
255
257#ifndef GUM_NO_INLINE
259#endif /* GUM_NO_INLINE */
260
261#endif /* GUM_LEARNING_STRUCTURAL_CONSTRAINT_SLICE_ORDER_H */
Base class for all oriented graphs.
Definition diGraph.h:130
The class for notifying learning algorithms of new arc additions.
The class for notifying learning algorithms of arc removals.
The class for notifying learning algorithms of arc reversals.
bool checkModificationAlone(const ArcReversal &change) const
checks whether the constraints enable to reverse an arc
void modifyGraphAlone(const ArcDeletion &change)
notify the constraint of a modification of the graph
bool checkModificationAlone(const ArcDeletion &change) const
checks whether the constraints enable to remove an arc
NodeProperty< NodeId > _SliceOrder_order_
slices to which belong the nodes
void modifyGraphAlone(const ArcAddition &change)
notify the constraint of a modification of the graph
bool checkArcDeletionAlone(NodeId x, NodeId y) const
checks whether the constraints enable to remove arc (x,y)
void setDefaultSlice(NodeId slice)
assign a given slice to all the nodes specified in the partial order
bool checkModificationAlone(const ArcAddition &change) const
checks whether the constraints enable to add an arc
void modifyGraphAlone(const ArcReversal &change)
notify the constraint of a modification of the graph
void setGraphAlone(const DiGraph &graph)
sets a new graph from which we will perform checkings
bool checkArcAdditionAlone(NodeId x, NodeId y) const
checks whether the constraints enable to add arc (x,y)
bool isAlwaysInvalidAlone(const GraphChange &change) const
indicates whether a change will always violate the constraint
bool checkModificationAlone(const GraphChange &change) const
checks whether the constraints enable to perform a graph change
const NodeProperty< NodeId > & sliceOrder() const
returns the current slice order
StructuralConstraintSliceOrder & operator=(const StructuralConstraintSliceOrder &from)
copy operator
void setSliceOrder(const NodeProperty< NodeId > &slice)
sets the time slices of all the nodes in the property
void modifyGraphAlone(const GraphChange &change)
notify the constraint of a modification of the graph
bool checkArcReversalAlone(NodeId x, NodeId y) const
checks whether the constraints enable to reverse arc (x,y)
void addNode(NodeId node, NodeId slice)
adds a new node in the slice order
Size NodeId
Type for node ids.
HashTable< NodeId, VAL > NodeProperty
Property on graph elements.
include the inlined functions if necessary
Definition CSVParser.h:54
gum is the global namespace for all aGrUM entities
Definition agrum.h:46
the base class for structural constraints used by learning algorithms that learn a directed graph str...
the structural constraint imposing a partial order over nodes