霍夫曼编码将频繁出现的字符采用短编码,出现频率较低的字符采用长编码。具体的操作过

练习题库2022-08-02  33

问题 霍夫曼编码将频繁出现的字符采用短编码,出现频率较低的字符采用长编码。具体的操作过程为:i)以每个字符的出现频率作为关键字构建最小优先级队列;ii)取出关键字最小的两个结点生成子树,根节点的关键字为孩子节点关键字之和,并将根节点插入到最小优先级队列中,直至得到一颗最优编码树。霍夫曼编码方案是基于(  )策略的。用该方案对包含a到f六个字符的文件进行编码,文件包含100000个字符,每个字符的出现频率(用百分比表示)如下表所示,则与固定长度编码相比,该编码方案节省了(  )存储空间。问题1选项A.分治B.贪心C.动态规划D.回溯问题2选项A.21%B.27%C.18%D.36%

选项

答案 BA

解析 根据题目对霍夫曼编码的描述,我们不难知道,每次都是选择当前最小的情况,这符合贪心算法总是找当前看来最优的情况,因此属于贪心策略。如果对包含100,000个字符,且这些字符都属于a到f。那么如果采用固定长度的编码,针对于每个字符需要3位来编码(因为有6个不同的字符,至少需要3位才能表示6种不同的变化)。那么对100000个字符编码,其编码长度为300000。如果采用霍夫曼编码,那么首先我们就要根据字符出现的频率构造出其霍夫曼树。首先选择出现频率最低的4和8,生成子树,其父节点为12,然后放入出现频率队列中,后面的采用同样的道理,以此类推。构造出的霍夫曼树如下图所示:由图可以知道,a的编码为00,b的编码为11,c的编码为0110,d的编码为0111,e的编码为010,f的编码为10。因此总的编码长度为(2*18%+2*32%+4*4%+4*8%+3*12%+2*26%)*100000=236000,因此节省的存储空间大小为300000-236000=64000。因此节省的存储空间为比例为64000/300000=21%。
转载请注明原文地址:https://tihaiku.com/congyezige/2409938.html

最新回复(0)