31 #ifndef GUM_CONCRETE_LEAF_H 32 #define GUM_CONCRETE_LEAF_H 34 #include <agrum/agrum.h> 35 #include <agrum/tools/core/hashTable.h> 36 #include <agrum/tools/core/multiPriorityQueue.h> 37 #include <agrum/tools/core/sequence.h> 39 #include <agrum/tools/graphs/graphElements.h> 41 #include <agrum/FMDP/learning/core/templateStrategy.h> 42 #include <agrum/FMDP/learning/datastructure/leaves/abstractLeaf.h> 43 #include <agrum/FMDP/learning/datastructure/nodeDatabase.h> 57 template < TESTNAME AttributeSelection,
bool isScalar >
71 NodeDatabase< AttributeSelection, isScalar >* n1,
72 const Sequence< ValueType >* valueDomain) :
75 GUM_CONSTRUCTOR(ConcreteLeaf);
82 GUM_DESTRUCTOR(ConcreteLeaf);
89 void*
operator new(size_t s) {
return SmallObjectAllocator::instance().allocate(s); }
91 SmallObjectAllocator::instance().deallocate(p,
sizeof(ConcreteLeaf));
99 virtual double effectif(Idx moda)
const {
return _effectif_(moda, Int2Type< isScalar >()); }
103 return (
double)_n1_->effectif(Idx(_valueDomain_->atPos(moda)));
108 virtual double total()
const {
return double(_n1_->nbObservation()); }
110 Idx nbModa()
const {
return _nbModa_(Int2Type< isScalar >()); }
118 std::stringstream ss;
119 ss <<
"{ Id : " <<
this->id() <<
"}";
void * operator new(size_t s)
Allocators and Deallocators redefinition.
INLINE void emplace(Args &&... args)
const Sequence< ValueType > * _valueDomain_
Idx _nbModa_(Int2Type< false >) const
NodeDatabase< AttributeSelection, isScalar > * _n1_
ValueSelect< isScalar, double, Idx >::type ValueType
~ConcreteLeaf()
Default destructor.
ConcreteLeaf(NodeId leafId, NodeDatabase< AttributeSelection, isScalar > *n1, const Sequence< ValueType > *valueDomain)
Default constructor.
virtual double total() const
virtual double effectif(Idx moda) const
Gaves the leaf effectif for given modality.
double _effectif_(Idx moda, Int2Type< false >) const
void operator delete(void *p)
Default constructor.