Using Huffman

173 days ago by bennoms

sage: from sage.coding.source_coding.huffman import Huffman 
       
ft = {' ': 21, '.': 1, 'T': 1, 'a': 12, 'c': 5, 'b': 1, 'e': 15, 'd': 3, 'g': 2, 'f': 3, 'i': 8, 'h': 4, 'm': 6, 'l': 5, 'o': 12, 'n': 9, 'p': 6, 's': 4, 'r': 7, 'u': 3, 't': 13, 'y': 2, 'x': 2} 
       
ft 
       
{' ': 21, '.': 1, 'T': 1, 'a': 12, 'c': 5, 'b': 1, 'e': 15, 'd': 3, 'g':
2, 'f': 3, 'i': 8, 'h': 4, 'm': 6, 'l': 5, 'o': 12, 'n': 9, 'p': 6, 's':
4, 'r': 7, 'u': 3, 't': 13, 'y': 2, 'x': 2}
{' ': 21, '.': 1, 'T': 1, 'a': 12, 'c': 5, 'b': 1, 'e': 15, 'd': 3, 'g': 2, 'f': 3, 'i': 8, 'h': 4, 'm': 6, 'l': 5, 'o': 12, 'n': 9, 'p': 6, 's': 4, 'r': 7, 'u': 3, 't': 13, 'y': 2, 'x': 2}
h = Huffman(ft) 
       
encoded ='10100111011100010010110110101000111001101011111011000000101101010111111\ 100100010010000001011111111110001111010010000011011100101011000001111011\ 110010100011110010110101010110111000000000110010111000011100100110111011\ 010101101001000001101110010010011000001001000000110010101101101110000011\ 101010010101010110100100000000111000100100010000011100000101101001011000\ 111000110111011100001001001011000100010101101100110111110111100100000010\ 010010101010010001001000000100011100111101010101101100011111011110010101\ 011001011110110000011001110101110101100010010001111000111111100010110011\ 011000110011001010101011010010101010001000001101110111000010010010001000\ 00111000001011010011' 
       
x = h.decode(encoded); x 
       
' hsrea ehgxitraeucretruph rtioe nh oenpeae  .tieotoeioaeartioeeiteetb
ia.o r earttsrertsteardd aTredt im ppetree eeretrhh e  nfpe iep.mas
nchnun libme ic ertiootcertstea'
' hsrea ehgxitraeucretruph rtioe nh oenpeae  .tieotoeioaeartioeeiteetb ia.o r earttsrertsteardd aTredt im ppetree eeretrhh e  nfpe iep.mas nchnun libme ic ertiootcertstea'
T = sorted(h.encoding_table().items()) for symbol, code in T: print symbol, code 
       
  101
. 1100000
T 1100001
a 1101
b 001100
c 10010
d 110001
e 010
f 111110
g 001101
h 00111
i 0110
l 10011
m 11001
n 1000
o 1110
p 11110
r 0010
s 01110
t 000
u 111111
x 011111
y 011110
  101
. 1100000
T 1100001
a 1101
b 001100
c 10010
d 110001
e 010
f 111110
g 001101
h 00111
i 0110
l 10011
m 11001
n 1000
o 1110
p 11110
r 0010
s 01110
t 000
u 111111
x 011111
y 011110
im = h.tree(); im.show(figsize=[25,25]) 
       
 
       
#Huffman?