forked from boostorg/algorithm
Fixed bug w/ eps data type.
Added size() to cluster_data. [SVN r45235]
This commit is contained in:
@ -52,6 +52,7 @@ struct cluster_data
|
|||||||
value_type & back() { return m_pClusters->back(); }
|
value_type & back() { return m_pClusters->back(); }
|
||||||
value_type const & back() const { return m_pClusters->back(); }
|
value_type const & back() const { return m_pClusters->back(); }
|
||||||
|
|
||||||
|
size_t size() const { return m_pClusters->size(); }
|
||||||
private:
|
private:
|
||||||
boost::shared_ptr<clusters> m_pClusters;
|
boost::shared_ptr<clusters> m_pClusters;
|
||||||
};
|
};
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <boost/algorithm/cluster/cluster_data.hpp>
|
#include <boost/algorithm/cluster/cluster_data.hpp>
|
||||||
#include <boost/algorithm/cluster/concept.hpp>
|
#include <boost/algorithm/cluster/concept.hpp>
|
||||||
#include <boost/algorithm/cluster/detail/naive_query.hpp>
|
#include <boost/algorithm/cluster/detail/naive_query.hpp>
|
||||||
|
#include <boost/utility/result_of.hpp>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
@ -45,11 +46,12 @@ struct node
|
|||||||
* \param[in] d
|
* \param[in] d
|
||||||
* \return The cluster data (partitioning of the tuples).
|
* \return The cluster data (partitioning of the tuples).
|
||||||
*/
|
*/
|
||||||
template<typename ClusterT, typename NTupleIterT, typename DistFunT>
|
template<typename ClusterT, typename NTupleIterT,
|
||||||
|
typename DistanceT, typename DistFunT>
|
||||||
cluster_data<ClusterT>
|
cluster_data<ClusterT>
|
||||||
dbscan(NTupleIterT const & begin,
|
dbscan(NTupleIterT const & begin,
|
||||||
NTupleIterT const & end,
|
NTupleIterT const & end,
|
||||||
typename NTupleIterT::difference_type const & eps,
|
DistanceT const & eps,
|
||||||
size_t min_points,
|
size_t min_points,
|
||||||
DistFunT const & d)
|
DistFunT const & d)
|
||||||
{
|
{
|
||||||
@ -57,6 +59,8 @@ dbscan(NTupleIterT const & begin,
|
|||||||
function_requires<
|
function_requires<
|
||||||
DistanceComparableConcept<typename NTupleIterT::value_type, DistFunT> >();
|
DistanceComparableConcept<typename NTupleIterT::value_type, DistFunT> >();
|
||||||
//DistanceComparableConcept<int, DistFunT> >();
|
//DistanceComparableConcept<int, DistFunT> >();
|
||||||
|
function_requires<
|
||||||
|
DistanceComparableConcept<DistanceT, DistFunT> >();
|
||||||
|
|
||||||
// TODO: Rework the algorithm to NOT make this extra collection?
|
// TODO: Rework the algorithm to NOT make this extra collection?
|
||||||
typedef detail::node<NTupleIterT> node;
|
typedef detail::node<NTupleIterT> node;
|
||||||
|
@ -21,12 +21,12 @@ namespace detail
|
|||||||
|
|
||||||
// TODO: Replace this naive query function w/ R*-tree or fractional cascading.
|
// TODO: Replace this naive query function w/ R*-tree or fractional cascading.
|
||||||
// This query mechanism makes the runtime quadratic.
|
// This query mechanism makes the runtime quadratic.
|
||||||
template<typename NTupleIterT, typename DistFunT>
|
template<typename NTupleIterT, typename DistanceT, typename DistFunT>
|
||||||
static void naive_query(
|
static void naive_query(
|
||||||
NTupleIterT const & query_pt,
|
NTupleIterT const & query_pt,
|
||||||
NTupleIterT const & begin,
|
NTupleIterT const & begin,
|
||||||
NTupleIterT const & end,
|
NTupleIterT const & end,
|
||||||
typename NTupleIterT::difference_type eps,
|
DistanceT const & eps,
|
||||||
DistFunT const & d,
|
DistFunT const & d,
|
||||||
std::vector<NTupleIterT> & v)
|
std::vector<NTupleIterT> & v)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user