- 1、本文档共94页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7无向树专用课件
* * 1)?初始化。起源点设置为:①?ds=0,?ps为空;②?所有其他点:?di=∞,?pi=?;③?标记起源点s,记k=s,其他所有点设为未标记的。 2)?检验从所有已标记的点k到其直接连接的未标记的点j的距离,并设置:dj=min[dj,?dk+lkj]式中,lkj是从点k到j的直接连接距离。 3)?选取下一个点。从所有未标记的结点中,选取dj?中最小的一个i使得:di=min[dj,?所有未标记的点j]点i就被选为最短路径中的一点,并设为已标记的。 4)?找到点i的前一点。从已标记的点中找到直接连接到点i的点j*,作为前一点,设置:i=j* 5)?标记点i。如果所有点已标记,则算法完全推出,否则,记k=i,转到2)?再继续。 * 用图来解释 * 最优3叉树需要补充0节点满足 (3-1)i=t-1 * 总结 无向树 树的等价定义(性质) 无向树的枚举 基本回路, 基本割集 最小生成树 求最小生成树的算法 * 根树 根树 最优树, Huffman算法 最佳前缀码 根树的遍历 * 根树(rooted tree) 有向树: 基图是树的有向图 根树(rooted tree): 顶点分3类的有向树 名称 入度 出度 个数 分支点 树根 0 0 1 内点 1 0 ? 树叶 1 0 ? * 层数与树高 画法: 树根在最上方, 省略边的方向(从上到下) 顶点v的层数(level): L(v)=从树根到v路径长度 树高(height): h(T)=顶点的最大层数 * 儿子,父亲,兄弟 儿子: u在上方与v相邻, v是u的儿子 父亲: u在上方与v相邻, u是v的父亲 兄弟: u与v有相同父亲, u是v的兄弟 祖先: 从u可达v, u是v的祖先 后代: 从u可达v, v是u的后代 * 有序树(ordered tree) 有序树: 给相同层数的顶点标上次序的根树 1 1 1 1 1 2 2 3 2 2 * r叉树(t-ary tree) r叉树: ?v?V(T), d+(v)?r 正则(regular)r叉树: ?分支点v, d+(v)=r 完全(complete)正则r叉树: ?树叶v, L(v)=h(T) 有序r叉树,有序正则r叉树,有序完全正则r叉树 * 定理1 定理1: 设正则r(?2)叉树T有i个分支点和t个树叶, 则(r-1)i=t-1. 证明: 当把一个树叶变为一个分支点时, 增加(r-1)个树叶, 所以 t=(r-1)i+b. 当t=1时间, i=0, 所以b=1. 所以t=(r-1)i+1. # 证法2: 数学归纳法 * 应用举例1 墙上只有1个电源插孔,每个接线板有r个插孔,有t台计算机,至少需要多少个接线板? (r-1)i≥t-1 i ≥ (t-1)/ (r-1) * 应用举例2 例:一台三地址计算机,用一个加法指令可求三个数之和,现要计算12个数之和,至少要几次加法指令? 解: (m-1)i≥t-1 (3-1)i≥12-1=11 i≥11/2=5.5 i=6,但这种树不唯一,见图示。 * 对应不同的树 * 根子树(rooted subtree) 根子树: T是根树, v?V(T), 由v本身及其所有后代导出的子图Tv 左子树,右子树: 二叉树中分支点的左右两个儿子导出的根子树 * 带权二叉树 带权二叉树: 每个树叶vi都指定实数权wi 带权二叉树的权: W(T)=?ti=1wiL(vi), 树叶是v1,v2,…,vt, 对应的层数是L(v1),L(v2),…, L(vt) 7 8 5 2 3 W(T)=55. # * 最优二叉树 最优二叉树: 树叶权为w1,w2,…,wt的所有二叉树中权最小的一个(不唯一) 求最优二叉树的算法: Huffman算法 7 8 2 3 5 7 8 5 2 3 W(T)=55. # W(T)=57. # * Huffman算法 输入: 实数w1,w2,…,wt, 输出: 树叶权为w1,w2,…,wt的最优二叉树 算法: 1. 选择最小的2个权w1,w2, 连接对应的树叶得到权为w1+w2的分支点 2. 选择w1+w2 ,w3,w4, …,wt中最小的2个权, 连接对应顶点得到新的分支点和权 3. 同上重复进行, 直到只剩1个权为止 * Huffman算法(举例) 例: 2,3,5,7,8 解: 2,3,5,7,8 // 5,5,7,8 // 10,7,8 // 10,15 // 25 // 25 7 8 15 5 10 2 3 5 W(T)=55. # * Huffman算法(正确性) 定理1: 在带权为w1?w2?…?wt的所有最优树中,一定有一棵最优树满足: 设带权w1,w
文档评论(0)