阅读本文需要3分钟
Huffman表白季:
Huffman身为一名成功的码农,1024过去了还单着身,他想打破这一科学道理,因此今天他想对他的梦中情人表白:我爱你,我很爱你,我非常爱你。为了展现他表白的诚意,他想用最快的速度进行表白。
Huffman:在网络传输中字符需要转化为计算机看得懂的东西(就是0和1啦),就是这一串神奇的数字:
11000100001000111100100011000110011110110000011111111000011001100010000100011011111100010001110010001100011001111011000001111111100001100110001000010001100101110101111010111100011100011100100011000110011110110000011000000000010
Huffman打算把这个由227个1或0组成的数字缩短:
1,统计重复出现的数的次数:我出现了3次,爱出现的3次,。出现了1次。Huffman就画出这样一个表,做出了这些积木,每一块积木有字符和他们出现的次数:
出现的字符 |
出现的次数 |
我 |
3 |
爱 |
3 |
你 |
3 |
很 |
1 |
非 |
1 |
常 |
1 |
, |
2 |
。 |
1 |
2,Huffman只会从小到大排序和两个数两个数的相加
Huffman:老规矩,先从小排到大:
出现的字符 |
出现的字数 |
我 |
3 |
爱 |
3 |
你 |
3 |
, |
2 |
很 |
1 |
非 |
1 |
常 |
1 |
。 |
1 |
我 |
3 |
爱 |
3 |
你 |
3 |
, |
2 |
很 |
1 |
非 |
1 |
常 |
1 |
。 |
1 |
数 |
|
我 |
3 |
爱 |
3 |
你 |
3 |
, |
2 |
很 |
1 |
非 |
1 |
常 |
1 |
。 |
1 |
Huffman:最小的相加:(常+。)=2,拿块2的积木压上去,从小到大排好:
出现的字符 |
出现的字数 |
我 |
3 |
爱 |
3 |
你 |
3 |
, |
2 |
(常+。) |
2 |
很 |
1 |
非 |
1 |
Huffman:最小的相加(很+非)=2,排好序
出现的字符 |
出现的字数 |
我 |
3 |
爱 |
3 |
你 |
3 |
, |
2 |
(常+。) |
2 |
(很+非) |
2 |
、
Huffman:最小的相加((常+。)+(很+非))=4 排好序
出现的字符 |
出现的字数 |
(常+。)+(很+非) |
4 |
我 |
3 |
爱 |
3 |
你 |
3 |
, |
2 |
Huffman:忙完了,积木长这样:
Huffman:每个积木的左下那个积木为0,右下那个积木为1,我要标上去记住,不然等下忘了就找不回来了:
岁月有你 惜惜相处