[mlpack-git] [mlpack/mlpack] Hilbert R tree (#664)

lozhnikov notifications at github.com
Wed Jun 1 10:13:40 EDT 2016


I think the Hilbert R tree is almost done and it's time to make PR.

Known issues:
1. I am not sure of the `DiscreteHilbertValue` class. It uses `std::list` for the local dataset.
`std::list<arma::Col<uint64_t>> *localDataset;`
I think `std::vector` or `arma::Mat` may be much faster since `std::list` can not reserve memory.
And maybe the type of the `arma::Col` should be a template parameter.
2. The RecursiveHilbertValue class is very slow. I think it is better to utilize at each step at least 32 bits instead of one.
3. Some constructions like `root->AuxiliaryInfo().LargestHilbertValue().LargestValue()` are long. As for me it is better to correct them.

Now the tree passes RectangleTreeTest/(DiscreteHilbertRTreeTraverserTest, RecursiveHilbertRTreeTraverserTest, DiscreteHilbertOrderingTest, RecursiveHilbertOrderingTest) tests. I'll try to think out other tests.
You can view, comment on, or merge this pull request online at:

  https://github.com/mlpack/mlpack/pull/664

-- Commit Summary --

  * Added initial support for Hilbert R trees (split and descent heuristic design).
  * Move tree-specific information to a new class (AuxiliaryInformationType).
  * A lot of changes. Implemented two approaches in order to compare points.
  * Added a bit of documentation.
  * Hilbert R tree fixes.

-- File Changes --

    M src/mlpack/core/tree/CMakeLists.txt (12)
    M src/mlpack/core/tree/rectangle_tree.hpp (7)
    A src/mlpack/core/tree/rectangle_tree/discrete_hilbert_value.hpp (200)
    A src/mlpack/core/tree/rectangle_tree/discrete_hilbert_value_impl.hpp (399)
    M src/mlpack/core/tree/rectangle_tree/dual_tree_traverser.hpp (7)
    M src/mlpack/core/tree/rectangle_tree/dual_tree_traverser_impl.hpp (16)
    A src/mlpack/core/tree/rectangle_tree/hilbert_r_tree_auxiliary_information.hpp (119)
    A src/mlpack/core/tree/rectangle_tree/hilbert_r_tree_auxiliary_information_impl.hpp (177)
    A src/mlpack/core/tree/rectangle_tree/hilbert_r_tree_descent_heuristic.hpp (59)
    A src/mlpack/core/tree/rectangle_tree/hilbert_r_tree_descent_heuristic_impl.hpp (59)
    M src/mlpack/core/tree/rectangle_tree/hilbert_r_tree_split.hpp (85)
    M src/mlpack/core/tree/rectangle_tree/hilbert_r_tree_split_impl.hpp (334)
    A src/mlpack/core/tree/rectangle_tree/no_auxiliary_information.hpp (84)
    M src/mlpack/core/tree/rectangle_tree/r_star_tree_descent_heuristic.hpp (13)
    M src/mlpack/core/tree/rectangle_tree/r_star_tree_descent_heuristic_impl.hpp (9)
    M src/mlpack/core/tree/rectangle_tree/r_star_tree_split.hpp (24)
    M src/mlpack/core/tree/rectangle_tree/r_star_tree_split_impl.hpp (35)
    M src/mlpack/core/tree/rectangle_tree/r_tree_descent_heuristic.hpp (13)
    M src/mlpack/core/tree/rectangle_tree/r_tree_descent_heuristic_impl.hpp (7)
    M src/mlpack/core/tree/rectangle_tree/r_tree_split.hpp (29)
    M src/mlpack/core/tree/rectangle_tree/r_tree_split_impl.hpp (44)
    M src/mlpack/core/tree/rectangle_tree/rectangle_tree.hpp (18)
    M src/mlpack/core/tree/rectangle_tree/rectangle_tree_impl.hpp (336)
    A src/mlpack/core/tree/rectangle_tree/recursive_hilbert_value.hpp (227)
    A src/mlpack/core/tree/rectangle_tree/recursive_hilbert_value_impl.hpp (245)
    M src/mlpack/core/tree/rectangle_tree/single_tree_traverser.hpp (7)
    M src/mlpack/core/tree/rectangle_tree/single_tree_traverser_impl.hpp (16)
    M src/mlpack/core/tree/rectangle_tree/traits.hpp (7)
    M src/mlpack/core/tree/rectangle_tree/typedef.hpp (40)
    A src/mlpack/core/tree/rectangle_tree/x_tree_auxiliary_information.hpp (158)
    M src/mlpack/core/tree/rectangle_tree/x_tree_split.hpp (62)
    M src/mlpack/core/tree/rectangle_tree/x_tree_split_impl.hpp (94)
    M src/mlpack/tests/rectangle_tree_test.cpp (145)

-- Patch Links --

https://github.com/mlpack/mlpack/pull/664.patch
https://github.com/mlpack/mlpack/pull/664.diff

---
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/mlpack/mlpack/pull/664
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.cc.gatech.edu/pipermail/mlpack-git/attachments/20160601/0769f51b/attachment-0001.html>


More information about the mlpack-git mailing list