aGrUM
0.20.3
a C++ library for (probabilistic) graphical models
barrenNodesFinder_tpl.h
Go to the documentation of this file.
1
/**
2
*
3
* Copyright (c) 2005-2021 by Pierre-Henri WUILLEMIN(@LIP6) & Christophe GONZALES(@AMU)
4
* info_at_agrum_dot_org
5
*
6
* This library is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU Lesser General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* This library is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public License
17
* along with this library. If not, see <http://www.gnu.org/licenses/>.
18
*
19
*/
20
21
22
namespace
gum
{
23
24
/// returns the set of barren potentials in messages sent in a junction tree
25
template
<
typename
GUM_SCALAR
>
26
ArcProperty
<
Set
<
const
Potential
<
GUM_SCALAR
>* > >
27
BarrenNodesFinder
::
barrenPotentials
(
const
CliqueGraph
&
junction_tree
,
28
const
IBayesNet
<
GUM_SCALAR
>&
bn
) {
29
// get the barren nodes
30
ArcProperty
<
NodeSet
>
barren_nodes
=
this
->
barrenNodes
(
junction_tree
);
31
32
// transform the node sets into sets of potentials
33
ArcProperty
<
Set
<
const
Potential
<
GUM_SCALAR
>* > >
result
;
34
for
(
const
auto
&
barren
:
barren_nodes
) {
35
Set
<
const
Potential
<
GUM_SCALAR
>* >
potentials
;
36
for
(
const
auto
node
:
barren
.
second
) {
37
potentials
.
insert
(&(
bn
.
cpt
(
node
)));
38
}
39
result
.
insert
(
Arc
(
barren
.
first
),
std
::
move
(
potentials
));
40
}
41
42
return
result
;
43
}
44
45
46
}
/* namespace gum */
gum::Set::emplace
INLINE void emplace(Args &&... args)
Definition:
set_tpl.h:643