Professional Documents
Culture Documents
Huffman Code
Huffman Code
Huffman Code
Algorithms
Huffman tree
Huffman Coding
It is Compression technique to reduce the
size of the data or message.
(Lossless data Compression technique)
Computer Data Encoding:
How do we represent data in binary?
ABCA
A B C A
01000001 01000010 01000011 01000001
ASCII Example:
Suppose we have a message
BCCABBDDAECCBBAEDDCC
Message send using ASCII code
ASCII codes are 8 bit code
A-65
B-66
C-67
D-68
E-69
Total space usage in bits:
Need nl bits.
ASCII Example:
Suppose we have a message
BCCABBDDAECCBBAEDDCC
A B C D E
01000001 01000010 01000011 01000100
01000101
Encode: A B C
0 10 11
1,001,000
Example: A = 00
B = 01
C = 10
000000010110101001100100001010
A A A BB CCCBC B A A CC
How do we decode
In the variable length code, we use an
idea called Prefix code, where no code is a
prefix of another.
Example: A = 0
B = 10
C = 11
0 0 01010111111101110 0 01111
Prefix Code
Example: A = 0
B = 10
C = 11
0 0 01010111111101110 0 01111
AA AB B C C C BC BAAC C
Requirement:
1. Prefix code.
2. Using shortest possible codes.
3. Efficient.
Huffman Tree
0 1
A
0 1
B
0 1
C D
Huffman Tree Example:
Alphabet: A, B, C, D, E, F
Frequency table:
A B C D E F
10 20 30 40 50 60
A 10 B 20
Algorithm Run:
Y 60 D 40 E 50 F 60
X 30 C 30
A 10 B 20
Algorithm Run:
D 40 E 50 Y 60 F 60
X 30 C 30
A 10 B 20
Algorithm Run:
Z 90 Y 60 F 60
D 40 E 50 X 30 C 30
A 10 B 20
Algorithm Run:
Y 60 F 60 Z 90
X 30 C 30 D 40 E 50
A 10 B 20
Algorithm Run:
W 120 Z 90
Y 60 F 60 D 40 E 50
X 30 C 30
A 10 B 20
Algorithm Run:
Z 90 W 120
D 40 E 50 Y 60 F 60
X 30 C 30
A 10 B 20
Algorithm Run:
V 210
0 1
Z 90 W 120
1
0 0 1
D 40 E 50 Y 60 F 60
0 1
X 30 C 30
0 1
A 10 B 20
The Huffman encoding:
V 210
A: 1000 0 1
B: 1001
C: 101 Z 90
1
W 120
0 0 1
D: 00
E: 01 D 40 E 50 Y 60 F 60
0 1
F: 11
X 30 C 30
0 1
A 10 B 20
0 1
W 60 D 16
0 1
B 12 A 04
100010111001010
Example: Construct a Huffman
Code for the following message
and decode the code whose
ending using the Huffman code
100010111001010.
Character A B C D E
Probability 0.4 0.1 0.2 0.15 0.15
The Huffman encoding:
Z 1
A: 1 0
B: 000
W 0.6
C: 001 0 1
1
D: 001 X 0.25 Y 0.35
E: 010 0 1 0 1
100010111001010
Huffman Tree:
Initially: n subtrees.