aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
graphChangesGeneratorOnSubDiGraph.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
69#ifndef GUM_LEARNING_GRAPH_CHANGES_GENERATOR_ON_SUBDIGRAPH_H
70#define GUM_LEARNING_GRAPH_CHANGES_GENERATOR_ON_SUBDIGRAPH_H
71
72#include <agrum/agrum.h>
73
77
78namespace gum {
79
80 namespace learning {
81
112 template < typename STRUCT_CONSTRAINT >
114 public:
117
120
121 // ##########################################################################
123 // ##########################################################################
125
128
132
136
139
141
142 // ##########################################################################
144 // ##########################################################################
146
150
154
156
157 // ##########################################################################
159 // ##########################################################################
161
164
166 const iterator& end() const;
167
169
170 // ##########################################################################
172 // ##########################################################################
174
176 STRUCT_CONSTRAINT& constraint() const noexcept;
177
179 void setGraph(const DiGraph& graph);
180
182 void setTargets(const NodeSet& nodes);
183
185 void addTarget(NodeId node);
186
188 void eraseTarget(NodeId node);
189
191 void setTails(const NodeSet& nodes);
192
194 void setTails(Size nb_nodes);
195
197 void addTail(NodeId node);
198
200 void eraseTail(NodeId node);
201
203 void modifyGraph(const ArcAddition& change);
204
206 void modifyGraph(const ArcDeletion& change);
207
209 void modifyGraph(const ArcReversal& change);
210
212 void modifyGraph(const GraphChange& change);
213
215 void clearChanges() noexcept;
216
219
221 void setMaxNbThreads(Size nb) noexcept;
222
224
225 protected:
227 STRUCT_CONSTRAINT* constraint_;
228
231
234
237
240
241 private:
244 };
245
246 } /* namespace learning */
247
248} /* namespace gum */
249
252
253#endif /* GUM_LEARNING_GRAPH_CHANGES_GENERATOR_ON_SUBDIGRAPH_H */
The base class for all GraphChangesGenerators for directed structures.
Base class for all oriented graphs.
Definition diGraph.h:130
Representation of a set.
Definition set.h:131
SetIterator< Key > const_iterator
Types for STL compliance.
Definition set.h:143
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.
NodeSet tail_nodes_
the tail nodes (other extremities than the targets)
Set< GraphChange > legal_changes_
the current set of operators
GraphChangesGeneratorOnSubDiGraph(STRUCT_CONSTRAINT &constraint)
default constructor
STRUCT_CONSTRAINT & constraint() const noexcept
returns the constraint that is used by the generator
void clearChanges() noexcept
empty the set of possible change operators that can be applied
GraphChangesGeneratorOnSubDiGraph(const GraphChangesGeneratorOnSubDiGraph< STRUCT_CONSTRAINT > &from)
copy constructor
GraphChangesGeneratorOnSubDiGraph< STRUCT_CONSTRAINT > & operator=(const GraphChangesGeneratorOnSubDiGraph< STRUCT_CONSTRAINT > &from)
copy operator
void eraseTarget(NodeId node)
removes a target
void addTarget(NodeId node)
adds a new target node
void createChanges_()
create the set of legal and illegal changes from a given graph
typename Set< GraphChange >::const_iterator iterator
the iterator for parsing the list of possible graph change operators
iterator const_iterator
the const iterator for parsing the list of graph change operators
void notifyGetCompleted()
notifies the generator that we have parsed all its legal changes
void setGraph(const DiGraph &graph)
sets a new graph from which the operator will compute possible changes
void setTails(const NodeSet &nodes)
assign a set of "tail" nodes
iterator begin() const
returns an (unsafe) iterator on the beginning of the list of operators
STRUCT_CONSTRAINT * constraint_
a reference on the structural constraint used to restrict the changes
void addTail(NodeId node)
adds a new "tail" node
const iterator & end() const
returns an (unsafe) iterator on the end of the list of operators
void setMaxNbThreads(Size nb) noexcept
sets the maximum number of threads used to compute the set of changes
void modifyGraph(const ArcAddition &change)
notify the operator set of a change applied to the graph
GraphChangesGeneratorOnSubDiGraph(GraphChangesGeneratorOnSubDiGraph< STRUCT_CONSTRAINT > &&from)
move operator
void eraseTail(NodeId node)
removes a tail node
GraphChangesGeneratorOnSubDiGraph< STRUCT_CONSTRAINT > & operator=(GraphChangesGeneratorOnSubDiGraph< STRUCT_CONSTRAINT > &&from)
move operator
void setTargets(const NodeSet &nodes)
assign a set of target nodes
The class for computing the set of graph changes (over a subgraph) transmitted to learning algorithms...
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition types.h:74
Size NodeId
Type for node ids.
Set< NodeId > NodeSet
Some typdefs and define for shortcuts ...
include the inlined functions if necessary
Definition CSVParser.h:54
gum is the global namespace for all aGrUM entities
Definition agrum.h:46
unsigned int getNumberOfThreads()
returns the max number of threads used by default when entering the next parallel region
The class to use to execute a function by several threads.
Utility functions used for exploiting OpenMP/STL parallelism.