[mlpack-svn] [MLPACK] #367: Ball trees are not guaranteed to have decreasing child furthest descendant distances
MLPACK Trac
trac at coffeetalk-1.cc.gatech.edu
Tue Aug 26 12:20:10 EDT 2014
#367: Ball trees are not guaranteed to have decreasing child furthest descendant
distances
---------------------+------------------------------------------------------
Reporter: rcurtin | Owner:
Type: defect | Status: new
Priority: minor | Milestone: mlpack 1.1.0
Component: mlpack | Keywords: ballbound, ball tree, allknn, furthest descendant distance, tree
Blocking: | Blocked By:
---------------------+------------------------------------------------------
The BallBound class uses an iterative algorithm to determine a bounding
ball of a set of points. But this is not guaranteed to be the minimum
bounding ball. This means that a parent node may end up with a bounding
ball that has radius smaller than the bounding balls of its children!
This may break the assumption that the FurthestDescendantDistance() of a
child is smaller than the FurthestDescendantDistance() of the parent.
In r17121 I have committed a workaround fix, which makes NeighborSearch
work correctly with ball trees, but that workaround (the use of
std::min()) should be removed when this bug is resolved.
For this bug to be resolved, we must be able to guarantee that any
`BinarySpaceTree<BallBound<...>, ...>` tree is such that the parent node's
furthest descendant distance is _always_ larger than any child's furthest
descendant distance. This probably requires a rewrite and rethink of the
algorithm implemented in `BallBound<>::operator|=(MatType&)`.
--
Ticket URL: <http://trac.research.cc.gatech.edu/fastlab/ticket/367>
MLPACK <www.fast-lab.org>
MLPACK is an intuitive, fast, and scalable C++ machine learning library developed at Georgia Tech.
More information about the mlpack-svn
mailing list