Package it.unimi.dsi.sux4j.mph
Class TwoStepsLcpMonotoneMinimalPerfectHashFunction<T>
java.lang.Object
it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction<K>
it.unimi.dsi.sux4j.mph.AbstractHashFunction<T>
it.unimi.dsi.sux4j.mph.TwoStepsLcpMonotoneMinimalPerfectHashFunction<T>
- All Implemented Interfaces:
Function<T,
,Long> Object2LongFunction<T>
,Size64
,Serializable
,Function<T,
,Long> ToLongFunction<T>
public class TwoStepsLcpMonotoneMinimalPerfectHashFunction<T>
extends AbstractHashFunction<T>
implements 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
Modifier and TypeClassDescriptionstatic class
A builder class forTwoStepsLcpMonotoneMinimalPerfectHashFunction
. -
Field Summary
Modifier and TypeFieldDescriptionprotected final int
The size of a bucket.protected final int
The mask forlog2BucketSize
bits.protected final GOV3Function<BitVector>
A function mapping each longest common prefix to its bucket.protected final TwoStepsGOV3Function<BitVector>
A function mapping each element to the length of the longest common prefix of its bucket.protected final int
protected final long
The number of elements.protected final GOV3Function<BitVector>
A function mapping each element to the offset inside its bucket.protected final long
The seed returned by theBucketedHashStore
.static final long
protected final long
The mask to compare signatures, or zero for no signatures.protected final LongBigList
The signatures.protected final TransformationStrategy<? super T>
The transformation strategy.Fields inherited from class it.unimi.dsi.fastutil.objects.AbstractObject2LongFunction
defRetValue
-
Constructor Summary
ModifierConstructorDescriptionprotected
TwoStepsLcpMonotoneMinimalPerfectHashFunction
(Iterable<? extends T> keys, long numKeys, 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 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.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
-
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 log2BucketSize -
bucketSizeMask
protected final int bucketSizeMaskThe mask forlog2BucketSize
bits. -
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
The signatures.
-
-
Constructor Details
-
TwoStepsLcpMonotoneMinimalPerfectHashFunction
protected TwoStepsLcpMonotoneMinimalPerfectHashFunction(Iterable<? extends T> keys, long numKeys, 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, ornull
for the standard temporary directory.- Throws:
IOException
-
-
Method Details
-
size64
public long size64()- Specified by:
size64
in interfaceSize64
- Overrides:
size64
in 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
- Specified by:
getLong
in interfaceObject2LongFunction<T>
-
getLongByBitVectorAndSignature
-
main
-