- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                * 欢迎辞 * 4.3 最优装载 2、贪心选择性质   贪心选择得到的解A为最优解:因为其它解B中选择了比解A更重的集装箱,用A中的集装箱替代B中更重的集装箱后得到的新解比B有更小的重量。  3、最优子结构性质   最优装载问题具有最优子结构性质:其最优解包含子问题的最优解。    由最优装载问题的贪心选择性质和最优子结构性质,容易证明算法loading的正确性。   算法loading的主要计算量在于将集装箱依其重量从小到大排序,故算法所需的计算时间为 O(nlogn)。   作业 算法分析题4-3 算法设计题4-1 * * 4.4 哈夫曼编码   哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法。其压缩率通常在20%~90%之间。哈夫曼编码算法用字符在文件中出现的频率表来建立一个用0,1串表示各字符的最优表示方式。   给出现频率高的字符较短的编码,出现频率较低的字符以较长的编码,可以大大缩短总码长。 1、前缀码   对每一个字符规定一个0,1串作为其代码,并要求任一字符的代码都不是其它字符代码的前缀。这种编码称为前缀码。 * 4.4 哈夫曼编码   编码的前缀性质可以使译码方法非常简单。    表示最优前缀码的二叉树总是一棵完全二叉树,即树中任一结点都有2个儿子结点。   平均码长定义为:    使平均码长达到最小的前缀码编码方案称为给定编码字符集C的最优前缀码。   * 4.4 哈夫曼编码 2、构造哈夫曼编码   哈夫曼提出构造最优前缀码的贪心算法,由此产生的编码方案称为哈夫曼编码。   哈夫曼算法以自底向上的方式构造表示最优前缀码的二叉树T。   算法以|C|个叶结点开始,执行|C|-1次的“合并”运算后产生最终所要求的树T。  		 使用类实现Huffman算法 templateclass  Type class Huffman{ 	friend BinaryTreeint HuffmanTree(Type[],int); 	public: 		operator Type() const {return weigth;} 	private: 		BinaryTreeint  tree;//int型的二叉树 		Type weigth; }; * 使用友元函数构造Huffman树 template class Type BinaryTreeint HuffmanTree(Type  f[],int  n){ 	HuffmanType  *w=new  HuffmanType[n+1]; 	BinaryTreeint z,zero; 	for(int i=1;i=n;i++){z.MakeTree(i,zero,zero);w[i].weigth=f[i];w[i].tree=z;} 	MinHeap HuffmanType Q(1); 	Q.Initialize(w,n,n); 	HuffmanType x,y; 	for(int i=1;in;i++){ 		Q.DeleteMin(x); Q.DeleteMin(y); 		z.MakeTree(0,x.tree,y.tree); 		x.weigth+=y.weigth;x.tree=z; 		Q.Insert(x); } Q.DeleteMin(x); Q.DeleteMin(y); delete[] w;return x.tree;} * * 4.4 哈夫曼编码   在书上给出的算法huffmanTree中,编码字符集中每一字符c的频率是f(c)。以f为键值的优先队列Q用在贪心选择时有效地确定算法当前要合并的2棵具有最小频率的树。一旦2棵具有最小频率的树合并后,产生一棵新的树,其频率为合并的2棵树的频率之和,并将新树插入优先队列Q。经过n-1次的合并后,优先队列中只剩下一棵树,即所要求的树T。   算法huffmanTree用最小堆实现优先队列Q。初始化优先队列需要O(n)计算时间,由于最小堆的removeMin和put运算均需O(logn)时间,n-1次的合并总共需要O(nlogn)计算时间。因此,关于n个字符的哈夫曼算法的计算时间为O(nlogn) 。  堆(小顶堆) 1.根结点的值小于子树上结点的值 2.是一完全二叉树 3.插入时先插入到最后一个结点后面,修改结点个数,当插入后小于其父结点时与其父结点交换,直到成为堆时止。 4.删除根时,将最后一个结点交换到根,将结点个数减1,然后进行堆化 5.堆化(HEAPIFY),当不成为堆时,将该结点与其子结点中较小的交换 例:将数据:5,3,6,4,2,1建成一个小顶堆 * * 4.4 哈夫曼编码 3、哈夫曼算法的正确性   要证明哈夫曼算法的正确性,只要证明最优前缀码问题具有贪心选择性质和最优子结构性质
                您可能关注的文档
最近下载
- 2025年70岁以上老人考驾驶证三力测试题.pdf VIP
- 护理学基础各种注射法.pptx VIP
- 西游记中的乘法口诀(教学设计)-2024-2025学年二年级上册数学北师大版.docx VIP
- 护理事业十五五发展规划(2026-2030).docx
- 护理事业十五五(2026-2030)发展规划纲要.docx
- 青海省2025年中考语文真题试卷附同步解析答案.docx VIP
- DB50T 1015-2020 土地整治项目规划设计规范 .pdf VIP
- 2025-2026学年高中通用技术必修《技术与设计1》地质版(2019)教学设计合集.docx
- 【长租公寓】冠寓运营管理手册.docx VIP
- 2024-2025学年广东省东莞市东华中学九年级上期中物理试卷附答案解析.pdf
 原创力文档
原创力文档 
                        

文档评论(0)