Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Huffman coding algorithm
C++
Branch: master
Failed to load latest commit information.
Makefile initial commit
README.md example updated
huffman initial commit
huffman.exe initial commit
huffman.sln initial commit
huffman.vcproj initial commit
input.txt initial commit
main.cpp initial commit

README.md

Huffman Coding Algorithm

$ ./huffman

Huffman coding algorithm
by Sergey Tikhonov (st@haqu.net)

Usage: huffman [OPTIONS] input [output]
  The default action is to encode input file.
  -d    Decode file.

Example

$ cat input.txt

In computer science and information theory, Huffman coding is an entropy
encoding algorithm used for lossless data compression. The term refers to the
use of a variable-length code table for encoding a source symbol (such as a
character in a file) where the variable-length code table has been derived in a
particular way based on the estimated probability of occurrence for each
possible value of the source symbol. It was developed by David A. Huffman while
he was a Ph.D. student at MIT, and published in the 1952 paper "A Method for the
Construction of Minimum-Redundancy Codes".

$ ./huffman input.txt

41
    0.164666    110
e   0.099485    001
a   0.066895    1010
o   0.061750    1000
n   0.051458    0110
t   0.051458    0101
r   0.048027    0001
s   0.048027    0000
i   0.046312    11111
d   0.037736    11100
c   0.036021    10111
h   0.036021    10110
l   0.032590    10011
u   0.027444    01111
f   0.025729    01001
b   0.022298    111101
m   0.020583    111100
p   0.017153    100101
y   0.013722    011101
.   0.010292    010000
g   0.010292    1110111
v   0.010292    1110110
w   0.008576    1001001
-   0.005146    11101011
M   0.005146    11101010
I   0.005146    11101001
,   0.003431    11101000
T   0.003431    01110001
D   0.003431    01110000
C   0.003431    01110011
H   0.003431    01110010
"   0.003431    01000101
A   0.003431    01000100
2   0.001715    100100001
R   0.001715    100100000
9   0.001715    100100011
5   0.001715    100100010
P   0.001715    010001101
1   0.001715    010001100
)   0.001715    010001111
(   0.001715    010001110

11101001011011010111100011110010010101111010100100011100000101111111100101101011
10011101010011011100110111110110010011000000111110010100101111111000011011001011
01100011000000101110111101000110011100100111101001010011111001010011011010111100
01110011111011011101111101111100001101010011011000101100101000110001001010111011
10001011010111100011100111110110111011111010101001111101111000000111111010110110
11110011001111000000111100110010011000000111010011100000000000100110010000000011
01110010100101101011010111100011110010010100010010000000011111100001100100001100
11100011011000111001010010001111100110000100101001001000100001100101100011001011
01100011100111100000011101000010011101010110111011010100001111111010111101100110
01111010111001100101101110111010110110110101111000111000011100101101011110110011
00111001001100000011100010110101111000111001111101101110111110101011000001000011
11000110111001110000001110111110011110110001001111001000111000000111110111101101
10101000001101010110101111011010100001101010111010100100011101111101101101010110
01001111111001100101000111111010010011011000100010011100101101100011101110110101
00001111111010111101100110011110101110011001011011101110101101101101011110001110
00011100101101011110110011001110101101010000011011110100100101101101110000100011
11111110110001111001101111101101101010110100101101000010101111111011101111100111
01000011101001001101001110111011110110100000001111001101000011011001011011000111
00010000010111111111100101001010011110011010010100011000111101101011110111111100
11111110101011101110100001001110100010111101110111100010001001011010111001110010
01100000011100011010101111011011010010110000000000011111111101100110011101110110
10101001101111001110100001001110010110110001110000010000111100011011100111000000
11101111100111101100010011010000110111010010101110100100110100000110111000011110
11000110011100010010100111100110111101011101110011100001010111011011111111001100
10001000100001100111001001111010010100111110010100110110100100110110111111001100
11101011000111010010011010000011010101100100011011011001000001110000010000110000
00101011111110000101100101110101001011101110101011101001011100011110100011010100
11011100110100101011111111011001111111000010110001111001101111101101100101101100
01110010001100100100011100100010100100001110100101101010010100100011100100010101
00010011011101010001010110110100011100110010011000000111001011011000111001110011
10000110000001010001011111011101011111110000110110100001001110111010101111101101
11111111000111111110011101011100100000001111000111101101110010100110101110111011
1001110011100011100001000001000101010000
Something went wrong with that request. Please try again.