aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
graphChangesGenerator4K2.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
80#ifndef GUM_LEARNING_GRAPH_CHANGES_GENERATOR_4_K2_H
81#define GUM_LEARNING_GRAPH_CHANGES_GENERATOR_4_K2_H
82
83#include <agrum/agrum.h>
84
88
89namespace gum {
90
91 namespace learning {
92
93 // a dummy class used to check that the generator is adapted to K2
95
136 template < typename STRUCT_CONSTRAINT >
140 public:
143
146
147 // ##########################################################################
149 // ##########################################################################
151
154
157
160
163
165
166 // ##########################################################################
168 // ##########################################################################
170
174
178
180
181 // ##########################################################################
183 // ##########################################################################
185
188
190 const iterator& end() const;
191
193
194 // ##########################################################################
196 // ##########################################################################
198
200 STRUCT_CONSTRAINT& constraint() const noexcept;
201
204 void setGraph(const DiGraph& graph);
205
207 void modifyGraph(const ArcAddition& change);
208
210 void modifyGraph(const ArcDeletion& change);
211
213 void modifyGraph(const ArcReversal& change);
214
216 void modifyGraph(const GraphChange& change);
217
219 void clearChanges() noexcept;
220
223
225 void setMaxNbThreads(Size nb) noexcept;
226
228 void setOrder(const Sequence< NodeId >& order);
229
231 void setOrder(const std::vector< NodeId >& order);
232
234
235 protected:
238
240 STRUCT_CONSTRAINT* constraint_;
241
244
247
250
251 private:
254 };
255
256 } /* namespace learning */
257
258} /* namespace gum */
259
262
263#endif /* GUM_LEARNING_GRAPH_CHANGES_GENERATOR_4_K2_H */
The base class for all GraphChangesGenerators for directed structures.
Base class for all oriented graphs.
Definition diGraph.h:130
The generic class for storing (ordered) sequences of objects.
Definition sequence.h:972
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.
GraphChangesGenerator4K2(STRUCT_CONSTRAINT &constraint)
default constructor
void clearChanges() noexcept
empty the set of possible change operators that can be applied
void setOrder(const Sequence< NodeId > &order)
set a new order on the random variables
virtual ~GraphChangesGenerator4K2()
destructor
Size _max_threads_number_
the max number of threads authorized
GraphChangesGenerator4K2(GraphChangesGenerator4K2< STRUCT_CONSTRAINT > &&from)
move operator
GraphChangesGenerator4K2< STRUCT_CONSTRAINT > & operator=(const GraphChangesGenerator4K2< STRUCT_CONSTRAINT > &from)
copy operator
typename Set< GraphChange >::const_iterator iterator
the iterator for parsing the list of possible graph change operators
STRUCT_CONSTRAINT * constraint_
the structural constraint used to restrict the changes
iterator const_iterator
the const iterator for parsing the list of graph change operators
const iterator & end() const
returns an (unsafe) iterator on the end of the list of operators
GraphChangesGenerator4K2< STRUCT_CONSTRAINT > & operator=(GraphChangesGenerator4K2< STRUCT_CONSTRAINT > &&from)
move operator
GraphChangesGenerator4K2(const GraphChangesGenerator4K2< STRUCT_CONSTRAINT > &from)
copy constructor
STRUCT_CONSTRAINT & constraint() const noexcept
returns the constraint that is used by the generator
Sequence< NodeId > order_
the order on the variables
DiGraph graph_
the graph on which we generate operators
void notifyGetCompleted()
notifies the generator that we have parsed all its legal changes
iterator begin() const
returns an (unsafe) iterator on the beginning of the list of operators
Set< GraphChange > legal_changes_
the current set of graph changes
void modifyGraph(const ArcAddition &change)
notify the generator of a change applied to the graph
void createChanges_()
create the set of legal and illegal changes from a given graph
void setMaxNbThreads(Size nb) noexcept
sets the maximum number of threads used to compute the set of changes
void setGraph(const DiGraph &graph)
sets a new graph from which the generator will compute possible changes
The basic class for computing the next graph changes possible in a (directed) structure learning algo...
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition types.h:74
Size NodeId
Type for node ids.
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
STL namespace.
The class to use to execute a function by several threads.
Utility functions used for exploiting OpenMP/STL parallelism.