Class HollowTrieDistributor<T>

java.lang.Object
it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction<T>
it.unimi.dsi.sux4j.mph.HollowTrieDistributor<T>
All Implemented Interfaces:
it.unimi.dsi.fastutil.Function<T,Long>, it.unimi.dsi.fastutil.objects.Object2LongFunction<T>, it.unimi.dsi.fastutil.Size64, Serializable, Function<T,Long>, ToLongFunction<T>

public class HollowTrieDistributor<T> extends it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction<T> implements it.unimi.dsi.fastutil.Size64
A distributor based on a hollow trie.

Implementation details

This class implements a distributor on top of a hollow trie. First, a compacted trie is built from the delimiter set. Then, for each key we compute the node of the trie in which the bucket of the key is established. This gives us, for each node of the trie, a set of paths to which we must associate an action (exit on the left, go through, exit on the right). Overall, the number of such paths is equal to the number of keys plus the number of delimiters, so the mapping from each pair node/path to the respective action takes linear space. Now, from the compacted trie we just retain a hollow trie, as the path-length information is sufficient to rebuild the keys of the above mapping. By sizing the bucket size around the logarithm of the average length, we obtain a distributor that occupies linear space.

See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected double
    The average skip length in bits (actually, the average length in bits of a skip length increased by one).

    Fields inherited from class it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction

    defRetValue
  • Constructor Summary

    Constructors
    Constructor
    Description
    HollowTrieDistributor(Iterable<? extends T> elements, int log2BucketSize, it.unimi.dsi.bits.TransformationStrategy<? super T> transformationStrategy)
    Creates a partial compacted trie using given elements, bucket size and transformation strategy.
    HollowTrieDistributor(Iterable<? extends T> elements, int log2BucketSize, it.unimi.dsi.bits.TransformationStrategy<? super T> transformationStrategy, File tempDir)
    Creates a hollow trie distributor.
  • Method Summary

    Modifier and Type
    Method
    Description
    double
     
    boolean
     
    long
     
    long
     
    int
    Deprecated.
    long
     

    Methods inherited from class it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction

    defaultReturnValue, defaultReturnValue

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface it.unimi.dsi.fastutil.Function

    apply, clear

    Methods inherited from interface java.util.function.Function

    compose

    Methods inherited from interface it.unimi.dsi.fastutil.objects.Object2LongFunction

    andThen, andThenByte, andThenChar, andThenDouble, andThenFloat, andThenInt, andThenLong, andThenObject, andThenReference, andThenShort, applyAsLong, composeByte, composeChar, composeDouble, composeFloat, composeInt, composeLong, composeObject, composeReference, composeShort, get, getOrDefault, getOrDefault, put, put, remove, removeLong
  • Field Details

    • meanSkipLength

      protected double meanSkipLength
      The average skip length in bits (actually, the average length in bits of a skip length increased by one).
  • Constructor Details

    • HollowTrieDistributor

      public HollowTrieDistributor(Iterable<? extends T> elements, int log2BucketSize, it.unimi.dsi.bits.TransformationStrategy<? super T> transformationStrategy) throws IOException
      Creates a partial compacted trie using given elements, bucket size and transformation strategy.
      Parameters:
      elements - the elements among which the trie must be able to rank.
      log2BucketSize - the logarithm of the size of a bucket.
      transformationStrategy - a transformation strategy that must turn the elements in elements into a list of distinct, lexicographically increasing (in iteration order) bit vectors.
      Throws:
      IOException
    • HollowTrieDistributor

      public HollowTrieDistributor(Iterable<? extends T> elements, int log2BucketSize, it.unimi.dsi.bits.TransformationStrategy<? super T> transformationStrategy, File tempDir) throws IOException
      Creates a hollow trie distributor.
      Parameters:
      elements - the elements among which the trie must be able to rank.
      log2BucketSize - the logarithm of the size of a bucket.
      transformationStrategy - a transformation strategy that must turn the elements in elements into a list of distinct, lexicographically increasing (in iteration order) bit vectors.
      tempDir - the directory where temporary files will be created, or for the default directory.
      Throws:
      IOException
  • Method Details

    • getLong

      public long getLong(Object o)
      Specified by:
      getLong in interface it.unimi.dsi.fastutil.objects.Object2LongFunction<T>
    • numBits

      public long numBits()
    • containsKey

      public boolean containsKey(Object o)
      Specified by:
      containsKey in interface it.unimi.dsi.fastutil.Function<T,Long>
    • size64

      public long size64()
      Specified by:
      size64 in interface it.unimi.dsi.fastutil.Size64
    • size

      @Deprecated public int size()
      Deprecated.
      Specified by:
      size in interface it.unimi.dsi.fastutil.Function<T,Long>
      Specified by:
      size in interface it.unimi.dsi.fastutil.Size64
    • bitsPerSkip

      public double bitsPerSkip()