Class AdaptiveSortTileRecursiveBulkSplit

  • All Implemented Interfaces:
    BulkSplit

    public class AdaptiveSortTileRecursiveBulkSplit
    extends AbstractBulkSplit
    This is variation of the original STR bulk load for non-rectangular data spaces. Instead of iterating through the dimensions and splitting each by (approximately) the same factor, this variation tries to adjust the factor to the extends of the data space. I.e. if the data set is twice as wide as high, this should produce twice as many partitions on the X than on the Y axis. Whether or not this offers benefits greatly depends on the distance queries used. But for symmetric distances, the resulting pages should be more rectangular, which often is beneficial. See SortTileRecursiveBulkSplit for the original STR bulk load.
    Since:
    0.6.0
    Author:
    Erich Schubert
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      <T extends elki.data.spatial.SpatialComparable>
      java.util.List<java.util.List<T>>
      partition​(java.util.List<T> spatialObjects, int minEntries, int maxEntries)
      Partitions the specified feature vectors
      protected <T extends elki.data.spatial.SpatialComparable>
      void
      strPartition​(java.util.List<T> objs, int start, int end, int depth, int dims, int maxEntries, elki.data.spatial.SpatialSingleMeanComparator c, java.util.List<java.util.List<T>> ret)
      Recursively partition.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AdaptiveSortTileRecursiveBulkSplit

        public AdaptiveSortTileRecursiveBulkSplit()
    • Method Detail

      • partition

        public <T extends elki.data.spatial.SpatialComparable> java.util.List<java.util.List<T>> partition​(java.util.List<T> spatialObjects,
                                                                                                           int minEntries,
                                                                                                           int maxEntries)
        Description copied from interface: BulkSplit
        Partitions the specified feature vectors
        Type Parameters:
        T - actual type we split
        Parameters:
        spatialObjects - the spatial objects to be partitioned
        minEntries - the minimum number of entries in a partition
        maxEntries - the maximum number of entries in a partition
        Returns:
        the partition of the specified spatial objects
      • strPartition

        protected <T extends elki.data.spatial.SpatialComparable> void strPartition​(java.util.List<T> objs,
                                                                                    int start,
                                                                                    int end,
                                                                                    int depth,
                                                                                    int dims,
                                                                                    int maxEntries,
                                                                                    elki.data.spatial.SpatialSingleMeanComparator c,
                                                                                    java.util.List<java.util.List<T>> ret)
        Recursively partition.
        Type Parameters:
        T - data type
        Parameters:
        objs - Object list
        start - Subinterval start
        end - Subinterval end
        depth - Iteration depth (must be less than dimensionality!)
        dims - Total number of dimensions
        maxEntries - Maximum page size
        c - Comparison helper
        ret - Output list