求助拉,基于熵编码的数据压缩算法,哪位大侠帮帮忙拉

来源:百度知道 编辑:UC知道 时间:2024/06/03 13:44:40
还是新手,老师就给这样的,不晓得怎么办了,大家帮帮忙吧,谢谢拉

“熵”( Entropy )来表示一条信息中真正需要编码的信息量,即数据压缩的理论极限。对于任何一种无损数据压缩,最终的数据量一定大于信息熵,数据量越接近于熵值,说明其压缩效果越好,假定一种无损数据压缩之后数据量小于信息熵,只能说明一个问题,说明其数据压缩肯定出错了.
信息熵是指一组数据所携带的信息量,它定义为:
H=-∑i=0N-1Pilog2Pi
N为数据类数或码元个数, Pi为码元yi发生的概率.
为使信息编码单位数据量d接近于或等于H,应设:
d=∑i=0N-1Pib(yi)
其中b(yi)是分配给码元yi的比特数, 理论上应取b(yi)=-log2Pi. 实际一般取b(y0)=b(y1)=…=b(yK-1).
举个例子 : 字符串:aabbaccbaa
字符串长度为 10,字符 a、b、c 分别出现了 5、3、2 次,则 a、b、c 在信息中出现的概率分别为 0.5、0.3、0.2,他们的熵分别为:
Ea = -log2(0.5) = 1
Eb = -log2(0.3) = 1.737
Ec = -log2(0.2) = 2.322
该信息源的熵为:
E = Ea * 0.5 + Eb * 0.3 + Ec * 0.2 = 1.4855 位