/** 
* @file DTBClusterRandom.h
* @brief build a decision tree for clustering
* @author Erik Rodner
* @date 05/01/2010
*/
#ifndef DTBCLUSTERRANDOMINCLUDE
#define DTBCLUSTERRANDOMINCLUDE

#include "core/vector/VectorT.h"
#include "core/vector/MatrixT.h"

#include "core/basics/Config.h"
#include "DecisionTreeBuilder.h"
#include "vislearning/cbaselib/CachedExample.h"


namespace OBJREC {

/** build a decision tree for clustering */
class DTBClusterRandom : public DecisionTreeBuilder
{
    protected:
		int max_depth;
		int min_examples;

		DecisionNode *buildRecursive ( const FeaturePool & fp, 
				 const Examples & examples,
				 std::vector<int> & examples_selection,
				 FullVector & distribution,
				 int maxClassNo,
				 int depth );

    public:
  
		/** simple constructor */
		DTBClusterRandom( const NICE::Config *conf, std::string section = "DTBClusterRandom" );
		  
		/** simple destructor */
		virtual ~DTBClusterRandom();
	 
		DecisionNode *build ( const FeaturePool & fp, 
				 const Examples & examples,
				 int maxClassNo );
    
};


} // namespace

#endif
