今天数据结构课的上课内容
Huffman编码
最开始是打算计算最优编码的长度来着,发现26字母出现次数均为一次的时候,等长编码会占十分巨大的优势,并且Huffman编码还得运行两次文本,会比等长编码慢很多。
Huffman编码和等长编码都没有抗干扰能力,这里就不对比这个了。
突发奇想的想要测试什么情况下Huffman编码能比等长编码有优势,这时候想到了吴克群的歌(真的是暴露年龄)
虽然歌词真的很直白,我是喜欢不起来的,但是这种重复程度,我设想能体现出Huffman编码的优势了吧?
然而…
(下面是字数统计)
说 15
你 3
爱 3
我 12
不 3
出 2
口 10
声 4
的 2
对 1
起 1
有 1
大 2
舌 2
头 2
就 1
Huffman编码:15*1+12*2+10*3+4*4+3*5+3*6+3*7+2*8+2*9+2*10+2*11+2*12+13+14+15+15=296(296位01代码表示此歌词)
等长编码:
5*7*8=280(16个字用五位二进制数表示,七字一句歌词共八句)
……这时候我陷入了沉思,看样子估计是低频出现的字太多了,算前三句好了(「・ω・)「
(再次统计)
说 7
你 1
爱 1
我 5
不 1
出 1
口 5
声 2
的 5
Huffman编码:
7*1+5*2+5*3+2*4+5+6+7+8+8=74
等长编码:
4*7*3=84(同上不解释)
终于……男默女泪(´-ι_-`)
这丫不仅慢要求还挺高我觉得真的蛮弱鸡的…
仅个人观点嗷,有时间想试试计算重复比例占多少,低频字符占多少Huffman编码能比等长编码短,嗯我没事找事。