MRPT  2.0.4
List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
KmTree Class Reference

Detailed Description

Definition at line 42 of file KmTree.h.

#include <kmeans++/KmTree.h>

Classes

struct  Node
 

Public Member Functions

 KmTree (int n, int d, Scalar *points)
 
 ~KmTree ()
 
Scalar DoKMeansStep (int k, Scalar *centers, int *assignment) const
 
Scalar SeedKMeansPlusPlus (int k, Scalar *centers) const
 

Private Member Functions

NodeBuildNodes (Scalar *points, int first_index, int last_index, char **next_node_data)
 
Scalar GetNodeCost (const Node *node, Scalar *center) const
 
Scalar DoKMeansStepAtNode (const Node *node, int k, int *candidates, Scalar *centers, Scalar *sums, int *counts, int *assignment) const
 
bool ShouldBePruned (Scalar *box_median, Scalar *box_radius, Scalar *centers, int best_index, int test_index) const
 
void SeedKmppSetClusterIndex (const Node *node, int index) const
 
Scalar SeedKmppUpdateAssignment (const Node *node, int new_cluster, Scalar *centers, Scalar *dist_sq) const
 

Private Attributes

int n_
 
int d_
 
Scalarpoints_
 
Nodetop_node_
 
char * node_data_
 
int * point_indices_
 

Constructor & Destructor Documentation

◆ KmTree()

KmTree::KmTree ( int  n,
int  d,
Scalar points 
)

Definition at line 19 of file KmTree.cpp.

References BuildNodes(), d_, KM_ASSERT, node_data_, point_indices_, PointAllocate(), PointCopy(), PointFree(), and top_node_.

Here is the call graph for this function:

◆ ~KmTree()

KmTree::~KmTree ( )

Definition at line 52 of file KmTree.cpp.

References node_data_, and point_indices_.

Member Function Documentation

◆ BuildNodes()

KmTree::Node * KmTree::BuildNodes ( Scalar points,
int  first_index,
int  last_index,
char **  next_node_data 
)
private

Definition at line 106 of file KmTree.cpp.

References d_, KmTree::Node::first_point_index, GetNodeCost(), KM_ASSERT, KmTree::Node::lower_node, KmTree::Node::median, KmTree::Node::num_points, KmTree::Node::opt_cost, point_indices_, PointAdd(), PointAllocate(), PointCopy(), PointFree(), PointScale(), KmTree::Node::radius, KmTree::Node::sum, and KmTree::Node::upper_node.

Referenced by KmTree().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DoKMeansStep()

Scalar KmTree::DoKMeansStep ( int  k,
Scalar centers,
int *  assignment 
) const

Definition at line 58 of file KmTree.cpp.

References d_, DoKMeansStepAtNode(), KM_ASSERT, mrpt::system::os::memcpy(), PointAllocate(), PointCopy(), PointFree(), PointScale(), and top_node_.

Referenced by RunKMeansOnce().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DoKMeansStepAtNode()

Scalar KmTree::DoKMeansStepAtNode ( const Node node,
int  k,
int *  candidates,
Scalar centers,
Scalar sums,
int *  counts,
int *  assignment 
) const
private

Definition at line 252 of file KmTree.cpp.

References d_, KmTree::Node::first_point_index, GetNodeCost(), KM_ASSERT, KmTree::Node::lower_node, KmTree::Node::median, KmTree::Node::num_points, point_indices_, PointAdd(), PointDistSq(), KmTree::Node::radius, ShouldBePruned(), KmTree::Node::sum, and KmTree::Node::upper_node.

Referenced by DoKMeansStep().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetNodeCost()

Scalar KmTree::GetNodeCost ( const Node node,
Scalar center 
) const
private

Definition at line 231 of file KmTree.cpp.

References d_, KmTree::Node::num_points, KmTree::Node::opt_cost, and KmTree::Node::sum.

Referenced by BuildNodes(), DoKMeansStepAtNode(), and SeedKmppUpdateAssignment().

Here is the caller graph for this function:

◆ SeedKMeansPlusPlus()

Scalar KmTree::SeedKMeansPlusPlus ( int  k,
Scalar centers 
) const

Definition at line 346 of file KmTree.cpp.

References d_, GetRandom(), KM_ASSERT, mrpt::system::os::memcpy(), n_, point_indices_, PointDistSq(), points_, SeedKmppSetClusterIndex(), SeedKmppUpdateAssignment(), and top_node_.

Referenced by RunKMeansPlusPlus().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SeedKmppSetClusterIndex()

void KmTree::SeedKmppSetClusterIndex ( const Node node,
int  index 
) const
private

Definition at line 392 of file KmTree.cpp.

References KmTree::Node::kmpp_cluster_index, KmTree::Node::lower_node, and KmTree::Node::upper_node.

Referenced by SeedKMeansPlusPlus(), and SeedKmppUpdateAssignment().

Here is the caller graph for this function:

◆ SeedKmppUpdateAssignment()

Scalar KmTree::SeedKmppUpdateAssignment ( const Node node,
int  new_cluster,
Scalar centers,
Scalar dist_sq 
) const
private

Definition at line 402 of file KmTree.cpp.

References d_, KmTree::Node::first_point_index, GetNodeCost(), KmTree::Node::kmpp_cluster_index, KmTree::Node::lower_node, KmTree::Node::median, KmTree::Node::num_points, point_indices_, PointDistSq(), points_, KmTree::Node::radius, SeedKmppSetClusterIndex(), ShouldBePruned(), and KmTree::Node::upper_node.

Referenced by SeedKMeansPlusPlus().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ShouldBePruned()

bool KmTree::ShouldBePruned ( Scalar box_median,
Scalar box_radius,
Scalar centers,
int  best_index,
int  test_index 
) const
private

Definition at line 325 of file KmTree.cpp.

References d_.

Referenced by DoKMeansStepAtNode(), and SeedKmppUpdateAssignment().

Here is the caller graph for this function:

Member Data Documentation

◆ d_

int KmTree::d_
private

◆ n_

int KmTree::n_
private

Definition at line 99 of file KmTree.h.

Referenced by SeedKMeansPlusPlus().

◆ node_data_

char* KmTree::node_data_
private

Definition at line 102 of file KmTree.h.

Referenced by KmTree(), and ~KmTree().

◆ point_indices_

int* KmTree::point_indices_
private

◆ points_

Scalar* KmTree::points_
private

Definition at line 100 of file KmTree.h.

Referenced by SeedKMeansPlusPlus(), and SeedKmppUpdateAssignment().

◆ top_node_

Node* KmTree::top_node_
private

Definition at line 101 of file KmTree.h.

Referenced by DoKMeansStep(), KmTree(), and SeedKMeansPlusPlus().




Page generated by Doxygen 1.8.14 for MRPT 2.0.4 Git: 33de1d0ad Sat Jun 20 11:02:42 2020 +0200 at sáb jun 20 17:35:17 CEST 2020