public class HuTuckerCodec extends Object implements PrefixCodec, Serializable
The familiar Huffman coding technique can be extended so to preserve the order in which symbols are given to the coder, in the sense that if j<k, then the j-th symbol will get a code lexicographically smaller than the one assigned to the k-th symbol. This result can be obtained with a small loss in code length (for more details, see the third volume of The Art of Computer Programming).
A Hu–Tucker coder is built given an array of frequencies corresponding to each symbol. Frequency 0 symbols are allowed, but they will degrade the resulting code.
The implementation of this class is rather inefficient, and the time required to build a Hu–Tucker code is quadratic in the number of symbols. An O(n log n) implementation is possible, but it requires very sophisticated data structures.
Modifier and Type | Field and Description |
---|---|
int |
size
The number of symbols of this coder.
|
Constructor and Description |
---|
HuTuckerCodec(int[] frequency) |
HuTuckerCodec(long[] frequency) |
Modifier and Type | Method and Description |
---|---|
CodeWordCoder |
coder()
Returns a coder for the compression technique represented by this coded.
|
BitVector[] |
codeWords()
Returns the vector of prefix-free codewords used by this prefix coder.
|
Decoder |
decoder()
Returns a decoder for the compression technique represented by this coded.
|
PrefixCoder |
getCoder()
Deprecated.
|
Decoder |
getDecoder()
Deprecated.
|
int |
size()
Returns the number of symbols handled by this codec.
|
public HuTuckerCodec(int[] frequency)
public HuTuckerCodec(long[] frequency)
public CodeWordCoder coder()
Codec
coder
in interface Codec
coder
in interface PrefixCodec
public Decoder decoder()
Codec
public int size()
Codec
public BitVector[] codeWords()
PrefixCodec
codeWords
in interface PrefixCodec
@Deprecated public PrefixCoder getCoder()
@Deprecated public Decoder getDecoder()
Copyright © 2006–2019 SYSTAP, LLC DBA Blazegraph. All rights reserved.