Class TwoStepsLcpMonotoneMinimalPerfectHashFunction<T>

java.lang.Object
it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction<T>
it.unimi.dsi.sux4j.mph.AbstractHashFunction<T>
it.unimi.dsi.sux4j.mph.TwoStepsLcpMonotoneMinimalPerfectHashFunction<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 TwoStepsLcpMonotoneMinimalPerfectHashFunction<T> extends AbstractHashFunction<T> implements it.unimi.dsi.fastutil.Size64, Serializable
A monotone minimal perfect hash implementation based on fixed-size bucketing that uses longest common prefixes as distributors, and store their lengths using a TwoStepsGOV3Function.

This implementation should use a few less bits per elements than LcpMonotoneMinimalPerfectHashFunction, but it is a bit slower as one or two additional functions must be queried.

See the package overview for a comparison with other implementations. Similarly to a GOV3Function, an instance of this class may be signed.

See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final int
    The size of a bucket.
    protected final int
    The mask for log2BucketSize bits.
    protected final GOV3Function<it.unimi.dsi.bits.BitVector>
    A function mapping each longest common prefix to its bucket.
    protected final TwoStepsGOV3Function<it.unimi.dsi.bits.BitVector>
    A function mapping each element to the length of the longest common prefix of its bucket.
    protected final int
    Fast.ceilLog2(int) of bucketSize.
    protected final long
    The number of elements.
    protected final GOV3Function<it.unimi.dsi.bits.BitVector>
    A function mapping each element to the offset inside its bucket.
    protected final long
    The seed returned by the BucketedHashStore.
    static final long
     
    protected final long
    The mask to compare signatures, or zero for no signatures.
    protected final it.unimi.dsi.fastutil.longs.LongBigList
    The signatures.
    protected final it.unimi.dsi.bits.TransformationStrategy<? super T>
    The transformation strategy.

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

    defRetValue
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    TwoStepsLcpMonotoneMinimalPerfectHashFunction(Iterable<? extends T> keys, long numKeys, it.unimi.dsi.bits.TransformationStrategy<? super T> transform, int signatureWidth, File tempDir)
    Creates a new two-steps LCP monotone minimal perfect hash function for the given keys.
  • Method Summary

    Modifier and Type
    Method
    Description
    long
     
    long
    getLongByBitVectorAndSignature(it.unimi.dsi.bits.BitVector bitVector, long[] signature)
     
    static void
    main(String[] arg)
     
    long
    Returns the number of bits used by this structure.
    long
     

    Methods inherited from class it.unimi.dsi.sux4j.mph.AbstractHashFunction

    containsKey, size

    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

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

    size
  • Field Details

    • serialVersionUID

      public static final long serialVersionUID
      See Also:
    • n

      protected final long n
      The number of elements.
    • bucketSize

      protected final int bucketSize
      The size of a bucket.
    • log2BucketSize

      protected final int log2BucketSize
      Fast.ceilLog2(int) of bucketSize.
    • bucketSizeMask

      protected final int bucketSizeMask
      The mask for log2BucketSize bits.
    • offsets

      protected final GOV3Function<it.unimi.dsi.bits.BitVector> offsets
      A function mapping each element to the offset inside its bucket.
    • lcpLengths

      protected final TwoStepsGOV3Function<it.unimi.dsi.bits.BitVector> lcpLengths
      A function mapping each element to the length of the longest common prefix of its bucket.
    • lcp2Bucket

      protected final GOV3Function<it.unimi.dsi.bits.BitVector> lcp2Bucket
      A function mapping each longest common prefix to its bucket.
    • transform

      protected final it.unimi.dsi.bits.TransformationStrategy<? super T> transform
      The transformation strategy.
    • seed

      protected final long seed
      The seed returned by the BucketedHashStore.
    • signatureMask

      protected final long signatureMask
      The mask to compare signatures, or zero for no signatures.
    • signatures

      protected final it.unimi.dsi.fastutil.longs.LongBigList signatures
      The signatures.
  • Constructor Details

    • TwoStepsLcpMonotoneMinimalPerfectHashFunction

      protected TwoStepsLcpMonotoneMinimalPerfectHashFunction(Iterable<? extends T> keys, long numKeys, it.unimi.dsi.bits.TransformationStrategy<? super T> transform, int signatureWidth, File tempDir) throws IOException
      Creates a new two-steps LCP monotone minimal perfect hash function for the given keys.
      Parameters:
      keys - the keys to hash.
      numKeys - the number of keys, or -1 if the number of keys is not known (will be computed).
      transform - a transformation strategy for the keys.
      signatureWidth - a signature width, or 0 for no signature.
      tempDir - a temporary directory for the store files, or null for the standard temporary directory.
      Throws:
      IOException
  • Method Details

    • size64

      public long size64()
      Specified by:
      size64 in interface it.unimi.dsi.fastutil.Size64
      Overrides:
      size64 in class AbstractHashFunction<T>
    • numBits

      public long numBits()
      Returns the number of bits used by this structure.
      Returns:
      the number of bits used by this structure.
    • getLong

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

      public long getLongByBitVectorAndSignature(it.unimi.dsi.bits.BitVector bitVector, long[] signature)
    • main

      public static void main(String[] arg) throws NoSuchMethodException, IOException, com.martiansoftware.jsap.JSAPException
      Throws:
      NoSuchMethodException
      IOException
      com.martiansoftware.jsap.JSAPException