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 ClassesModifier and TypeClassDescriptionstatic classA builder class forTwoStepsLcpMonotoneMinimalPerfectHashFunction. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final intThe size of a bucket.protected final intThe mask forlog2BucketSizebits.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 intFast.ceilLog2(int)ofbucketSize.protected final longThe number of elements.protected final GOV3Function<it.unimi.dsi.bits.BitVector> A function mapping each element to the offset inside its bucket.protected final longThe seed returned by theBucketedHashStore.static final longprotected final longThe mask to compare signatures, or zero for no signatures.protected final it.unimi.dsi.fastutil.longs.LongBigListThe 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
ConstructorsModifierConstructorDescriptionprotectedTwoStepsLcpMonotoneMinimalPerfectHashFunction(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
Methods inherited from class AbstractHashFunction
containsKey, sizeMethods inherited from class it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction
defaultReturnValue, defaultReturnValueMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface it.unimi.dsi.fastutil.Function
apply, clearMethods 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, removeLongMethods inherited from interface it.unimi.dsi.fastutil.Size64
size
-
Field Details
-
serialVersionUID
public static final long serialVersionUID- See Also:
-
n
protected final long nThe number of elements. -
bucketSize
protected final int bucketSizeThe size of a bucket. -
log2BucketSize
protected final int log2BucketSizeFast.ceilLog2(int)ofbucketSize. -
bucketSizeMask
protected final int bucketSizeMaskThe mask forlog2BucketSizebits. -
offsets
A function mapping each element to the offset inside its bucket. -
lcpLengths
A function mapping each element to the length of the longest common prefix of its bucket. -
lcp2Bucket
A function mapping each longest common prefix to its bucket. -
transform
The transformation strategy. -
seed
protected final long seedThe seed returned by theBucketedHashStore. -
signatureMask
protected final long signatureMaskThe mask to compare signatures, or zero for no signatures. -
signatures
protected final it.unimi.dsi.fastutil.longs.LongBigList signaturesThe 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, ornullfor the standard temporary directory.- Throws:
IOException
-
-
Method Details
-
size64
public long size64()- Specified by:
size64in interfaceit.unimi.dsi.fastutil.Size64- Overrides:
size64in classAbstractHashFunction<T>
-
numBits
public long numBits()Returns the number of bits used by this structure.- Returns:
- the number of bits used by this structure.
-
getLong
-
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:
NoSuchMethodExceptionIOExceptioncom.martiansoftware.jsap.JSAPException
-