- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
树的应用 — 堆、huffman树.ppt
树的应用 — 堆、huffman树 2011/04/11 期中小测试: 4月18号(下周一),上机。 登陆教学网。 没有显示课程的同学发信:刘洋助教。 liuyang1@icst.pku.edu.cn 栈结构与深度优先算法 根节点进栈,同时保存下一分枝标号。 进入下一个分枝 保留分枝根节点及他的下一分枝标号 到叶结点?且没有找到?返回父节点,进入父节点下一个分支的兄弟分枝… 深度优先迷宫老鼠 广度优先搜索 层层推进 搜索的层数不超过答案所在的层数 广度优先搜索 最常用的广度优先纪录路径的方法 状态编码作route数组的下标 route数组单元中存放前一个状态的下标号。 广度优先算法与过河问题 0000 农夫 狼 白菜 羊 1000* 1100* 1010* 1001 0001 0000@ 1001@ 1011 0011* 0001@ 0010 1010* 1110 1011@ 0110 0010@ 0100 过河问题核心算法 状态: 0000 ? 入队 四种状态变迁操作:1000,1001,1010,1100 队头元素出队, 依次探查四种情况 发现合理的变迁状态则入队 直到发现变迁到状态1111,成功。 或 队空,没有合理解 状态剪枝操作 safe(loaction) == 1 ?; 0101 1010 (狼吃羊) 1100 0011(羊吃菜) 出现回头路? int route[16] = {-1}; route[0] = 0; route[newLocation] = location 今天的内容 优先队列 Huffman树 完全二叉树的顺序存储实现 将完全二叉树上序号为i (广度优先顺序)的结点存储在数组 下标为i - 1的元素中(如下图)。 堆与优先队列 堆是一种特殊的完全二叉树 满足根的值小于(大于)左右子树根的值。 左右子树也是堆。 优先队列 是基于堆的一种抽象数据类型 出队(访问-删除根节点-维护堆) 入队(加入到尾部-维护堆) 利用完全二叉树的特点,一般都存放于一个顺序结构的数组中 建立n个元素的堆? 从0开始,不断插入:O(nlogn) 有木有更好的方法? Huffman树与最优编码 信息与编码 扩充二叉树与最优编码 Huffman树 信息量: 信息编码与信息熵 扩充二叉树的概念 把原二叉树的结点都变为度数为2的分支结点 如果原结点的度数为2,则不变 度数为1,则增加一个分支, 度数为0(树叶),则增加两个分支。 空二叉树的扩充二叉树规定为只有一个外部结点组成的二叉树。 概率加权、前缀编码、加权平衡二叉树 wi是第i个外部结点的权值 li为从根到第i个外部结点的路径长度 m为外部结点的个数。 WPL = 1 x 5 + 2 x 70 + 3 x 18 + 3 x 7 = 5 + 140 + 54 + 21 = 220 哈夫曼树: 对于一组非负实数{w1 , w2 , w3 ,…, wm},存在一棵以wi(i = 1,2,…,m)为权的m个外部结点的扩充的二叉树,使得带权的外部路径长度WPL最小。这棵二叉树就称为哈夫曼树或最优二叉树。 WPL = 1 x 70 + 2 x 18 + 3 x 5 + 3 x 7 = 70 + 36 + 15 +21 = 142 哈夫曼树(构建算法) 给定m个权值{ w1 , w2 ,…, wm } (叶子) 构造由m棵二叉树组成的树林F = {T1,T2,…,Tm},其中每棵树Ti 只有一个根结点,且根结点的权值为wi; 在树林中选取两棵根结点权值最小的和次小的二叉树作为左右子树构造一棵新的二叉树,其根结点的权值为左右子树根结点权值之和。 将新的二叉树加入到树林F中,去除原两棵权值最小的树; 重复2、3步骤,直至F中只剩一棵树为止。 满二叉树 m+1 = n 在线性结构上实现哈夫曼树 struct HtNode //* 哈夫曼树结点的结构 { int ww; int parent, llink, rlink;}; 哈夫曼树可定义为: struct HtTree { struct HtNode ht[MAXNODE]; int root;/
您可能关注的文档
最近下载
- 治疗原则及用药注意事项.pptx VIP
- GP规范中文版2.2_原创精品文档.pdf VIP
- 安徽灿松工程技术有限公司招聘简章.PDF VIP
- 制粉系统外委维护技术协议..doc VIP
- 华东理工大学《化工设备设计》期末知识点复习习题(含答案).pdf VIP
- 儿童流行性感冒中西医结合诊疗指南(2024)解读 PPT课件.pptx VIP
- 华东理工大学《过程流体机械》期末复习资料.pdf VIP
- GB50236-2011 现场设备、工业管道焊接工程施工规范.docx VIP
- 比亚迪新能源汽车零部件选型手册V2.6.pdf
- 凯恩帝K1000Mi-A,K1000M4i-A说明书(连接调试篇).pdf
原创力文档


文档评论(0)