aGrUM 3.2.0
a C++ library for (probabilistic) graphical models
essentialGraph_inl.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#pragma once
42
43
50
51// to ease parsing by IDE
53
54namespace gum {
55
56 INLINE PDAG EssentialGraph::pdag() const { return _pdag_; }
57
58 INLINE const NodeSet& EssentialGraph::parents(NodeId id) const { return _pdag_.parents(id); }
59
60 INLINE const NodeSet& EssentialGraph::children(NodeId id) const { return _pdag_.children(id); }
61
62 INLINE NodeSet EssentialGraph::parents(const NodeSet& ids) const { return _pdag_.parents(ids); }
63
64 INLINE NodeSet EssentialGraph::children(const NodeSet& ids) const { return _pdag_.children(ids); }
65
67
68 INLINE NodeSet EssentialGraph::ancestors(NodeId id) const { return _pdag_.ancestors(id); }
69
70 INLINE const NodeSet& EssentialGraph::neighbours(NodeId id) const {
71 return _pdag_.neighbours(id);
72 }
73
74 INLINE Size EssentialGraph::sizeArcs() const { return _pdag_.sizeArcs(); }
75
76 INLINE const ArcSet& EssentialGraph::arcs() const { return _pdag_.arcs(); }
77
78 INLINE Size EssentialGraph::sizeEdges() const { return _pdag_.sizeEdges(); }
79
80 INLINE const EdgeSet& EssentialGraph::edges() const { return _pdag_.edges(); }
81
82 INLINE Size EssentialGraph::sizeNodes() const { return _pdag_.sizeNodes(); }
83
84 INLINE Size EssentialGraph::size() const { return _pdag_.size(); }
85
86 INLINE const NodeGraphPart& EssentialGraph::nodes() const { return _pdag_.nodes(); }
87
88 INLINE NodeId EssentialGraph::idFromName(std::string_view name) const {
89 return _dagmodel_->idFromName(name);
90 }
91
92 INLINE const std::string& EssentialGraph::nameFromId(NodeId node) const {
93 return _dagmodel_->variable(node).name();
94 }
95
99} // namespace gum
Size sizeArcs() const
indicates the number of arcs stored within the ArcGraphPart
const NodeSet & parents(NodeId id) const
returns the set of nodes with arc ingoing to a given node
NodeSet children(const NodeSet &ids) const
returns the set of nodes which consists in the node and its parents returns the set of children of a ...
const ArcSet & arcs() const
returns the set of arcs stored within the ArcGraphPart
NodeSet ancestors(NodeId id) const
returns the set of all ancestors of id (nodes from which id is reachable)
NodeSet descendants(NodeId id) const
returns the set of all descendants of id (nodes reachable from id)
NodeId idFromName(std::string_view name) const override
Returns the NodeId of a variable given its name.
const DiscreteVariable & variable(NodeId id) const override
Returns a constant reference over a variable given its node id.
Size sizeEdges() const
indicates the number of edges stored within the EdgeGraphPart
const EdgeSet & edges() const
returns the set of edges stored within the EdgeGraphPart
const NodeSet & neighbours(NodeId id) const
returns the set of node neighbours to a given node
const NodeSet & neighbours(NodeId id) const
wrapping MixedGraph::parents(id)
const std::string & nameFromId(NodeId node) const
wrappping .name()
Size sizeEdges() const
wrapping MixedGraph::sizeEdges()
const NodeSet & children(NodeId id) const
wrapping MixedGraph::parents(id)
NodeProperty< NodeId > connectedComponents() const
Returns the connected components of the essential graph. Each node maps to the id of its component ro...
Size sizeArcs() const
wrapping MixedGraph::sizeArcs()
const ArcSet & arcs() const
wrapping MixedGraph::arcs()
const DAGmodel * _dagmodel_
NodeId idFromName(std::string_view name) const
wrappping DAGModel::idFromName()
const NodeSet & parents(NodeId id) const
wrapping MixedGraph::parents(id)
const NodeGraphPart & nodes() const
wrapping MixedGraph::nodes()
NodeSet descendants(NodeId id) const
wrapping PDAG::descendants(id)
NodeSet ancestors(NodeId id) const
wrapping PDAG::ancestors(id)
Size size() const
wrapping MixedGraph::size()
const EdgeSet & edges() const
wrapping MixedGraph::edges()
Size sizeNodes() const
wrapping MixedGraph::sizeNodes()
NodeProperty< NodeId > connectedComponents() const
returns a property {node:id of weakly connected component}
Class for node sets in graph.
Size size() const
alias for sizeNodes
Size sizeNodes() const
returns the number of nodes in the NodeGraphPart
const NodeGraphPart & nodes() const
return *this as a NodeGraphPart
Base class for partially directed acyclic graphs.
Definition PDAG.h:130
const std::string & name() const
returns the name of the variable
Class building the essential Graph from a DAGmodel.
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition types.h:74
Set< Edge > EdgeSet
Some typdefs and define for shortcuts ...
Size NodeId
Type for node ids.
Set< Arc > ArcSet
Some typdefs and define for shortcuts ...
HashTable< NodeId, VAL > NodeProperty
Property on graph elements.
Set< NodeId > NodeSet
Some typdefs and define for shortcuts ...
gum is the global namespace for all aGrUM entities
Definition agrum.h:46