aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
graphChangesGenerator4UndiGraph.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
75#ifndef GUM_LEARNING_GRAPH_CHANGES_GENERATOR_4_UNDIGRAPH_H
76#define GUM_LEARNING_GRAPH_CHANGES_GENERATOR_4_UNDIGRAPH_H
77
78#include <agrum/agrum.h>
79
83
84namespace gum {
85
86 namespace learning {
87
128 template < typename STRUCT_CONSTRAINT >
130 public:
133
136
137 // ##########################################################################
139 // ##########################################################################
141
144
148
151
154
156
157 // ##########################################################################
159 // ##########################################################################
161
165
169
171
172 // ##########################################################################
174 // ##########################################################################
176
179
181 const iterator& end() const;
182
184
185 // ##########################################################################
187 // ##########################################################################
189
191 STRUCT_CONSTRAINT& constraint() const noexcept;
192
194 void setGraph(const UndiGraph& graph);
195
197 void modifyGraph(const EdgeAddition& change);
198
200 void modifyGraph(const EdgeDeletion& change);
201
203 void modifyGraph(const GraphChange& change);
204
206 void clearChanges() noexcept;
207
210
212 void setMaxNbThreads(Size nb) noexcept;
213
215
216 protected:
219
221 STRUCT_CONSTRAINT* constraint_;
222
225
228
229 private:
232 };
233
234 } /* namespace learning */
235
236} /* namespace gum */
237
240
241#endif /* GUM_LEARNING_GRAPH_CHANGES_GENERATOR_4_UNDIGRAPH_H */
The base class for all GraphChangesGenerators for undirected structures.
Representation of a set.
Definition set.h:131
SetIterator< Key > const_iterator
Types for STL compliance.
Definition set.h:143
Base class for undirected graphs.
Definition undiGraph.h:128
The class for notifying learning algorithms of new edge additions.
The class for notifying learning algorithms of edge removals.
GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > & operator=(GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > &&from)
move operator
void createChanges_()
create the set of legal and illegal changes from a given graph
void setGraph(const UndiGraph &graph)
sets a new graph from which the operator will compute possible changes
typename Set< GraphChange >::const_iterator iterator
the iterator for parsing the list of possible graph change operators
void setMaxNbThreads(Size nb) noexcept
sets the maximum number of threads used to compute the set of changes
Set< GraphChange > legal_changes_
the current set of operators
void modifyGraph(const EdgeAddition &change)
notify the operator set of a change applied to the graph
void clearChanges() noexcept
empty the set of possible change operators that can be applied
iterator const_iterator
the const iterator for parsing the list of graph change operators
GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > & operator=(const GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > &from)
copy operator
iterator begin() const
returns an (unsafe) iterator on the beginning of the list of operators
GraphChangesGenerator4UndiGraph(const GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > &from)
copy constructor
STRUCT_CONSTRAINT * constraint_
a reference on the structural constraint used to restrict the changes
STRUCT_CONSTRAINT & constraint() const noexcept
returns the constraint that is used by the generator
GraphChangesGenerator4UndiGraph(GraphChangesGenerator4UndiGraph< STRUCT_CONSTRAINT > &&from)
move operator
const iterator & end() const
returns an (unsafe) iterator on the end of the list of operators
void notifyGetCompleted()
notifies the generator that we have parsed all its legal changes
Size _max_threads_number_
the max number of threads authorized
UndiGraph graph_
the graph on which we generate operators
GraphChangesGenerator4UndiGraph(STRUCT_CONSTRAINT &constraint)
default constructor
The basic class for computing the next graph changes possible in an undirected structure learning alg...
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition types.h:74
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.