/** 
* @file ClusterAlgorithm.h
* @brief Interface for Cluster-Algorithms
* @author Erik Rodner
* @date 10/29/2007

*/
#ifndef CLUSTERALGORITHMINCLUDE
#define CLUSTERALGORITHMINCLUDE

// nice-core includes
#include <core/basics/Exception.h>
// 
#include <core/vector/VectorT.h>
#include <core/vector/MatrixT.h>
#include <core/vector/VVector.h>


namespace OBJREC {

  /** Interface for Cluster-Algorithms */
  class ClusterAlgorithm
  {

      protected:

      public:
    
    /** simple constructor */
    ClusterAlgorithm();
        
    /** simple destructor */
    virtual ~ClusterAlgorithm();

    virtual void cluster ( 
            const NICE::VVector & features,
            NICE::VVector & prototypes,
            std::vector<double> & weights,
            std::vector<int>    & assignment ) = 0;
      
  };


} // namespace

#endif
