36 template <
typename GUM_SCALAR >
43 template <
typename GUM_SCALAR >
50 template <
typename GUM_SCALAR >
55 template <
typename GUM_SCALAR >
60 auto Ip =
_p.completeInstantiation();
61 auto Iq =
_q.completeInstantiation();
66 for (
Idx ite = 0; ite < Ip.nbrDim(); ++ite) {
67 map.
insert(&Ip.variable(ite), &
_q.variableFromName(Ip.variable(ite).name()));
69 GUM_SCALAR pp, pq, pmid, lpp, lpq, lpmid;
70 for (Ip.setFirst(); !Ip.end(); ++Ip) {
71 Iq.setValsFrom(map, Ip);
72 pp =
_p.jointProbability(Ip);
73 pq =
_q.jointProbability(Iq);
74 pmid = (pp + pq) / 2.0;
75 lpmid = lpq = lpp = (GUM_SCALAR)0.0;
76 if (pmid != (GUM_SCALAR)0.0) lpmid = log2(pmid);
77 if (pp != (GUM_SCALAR)0.0) lpp = log2(pp);
78 if (pq != (GUM_SCALAR)0.0) lpq = log2(pq);
81 _hellinger += std::pow(std::sqrt(pp) - std::sqrt(pq), 2);
84 if (pp != (GUM_SCALAR)0.0) {
85 if (pq != (GUM_SCALAR)0.0) {
86 _klPQ -= pp * (lpq - lpp);
92 if (pq != (GUM_SCALAR)0.0) {
93 if (pp != (GUM_SCALAR)0.0) {
94 _klQP -= pq * (lpp - lpq);
99 if (pmid != (GUM_SCALAR)0.0) {
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
virtual ~ExactBNdistance()
destructor
const IBayesNet< GUM_SCALAR > & _p
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Class representing the minimal interface for Bayesian Network.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
The class for generic Hash Tables.
const IBayesNet< GUM_SCALAR > & _q
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
ExactBNdistance computes exactly the KL divergence betweens 2 BNs.
ExactBNdistance(const IBayesNet< GUM_SCALAR > &P, const IBayesNet< GUM_SCALAR > &Q)
constructor must give 2 BNs
Size Idx
Type for indexes.
value_type & insert(const Key &key, const Val &val)
Adds a new element (actually a copy of this element) into the hash table.