第七章 Lecture 04-贪心算法.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Binary Tree v.s. Prefix Code Prefix code: No code is a prefix of some other code. Optimal Prefix Code Design Coding Cost of T: B(T)=? c ? C f(c)dT(c) c : each character in the alphabet C f(c): frequency of c dT(c): depth of cs leaf (length of the codeword of c) Code design: Given f(c1), f(c2), …, f(cn), construct a binary tree with n leaves such that B(T) is minimized. Idea: more frequently used characters use shorter depth. 例 应用二:最佳前缀码 在通讯中要传输八进制数字0,1,2,…,7. 这些数字出现的频率为: 0:30%, 1:20%, 2:15% 3:10%, 4:10%, 5: 6%6: 5%, 7: 4% 编一个最佳前缀码,使通讯中出现的二进制数字尽可能地少。 1、Huffman算法求最优二叉树 2、由二叉树得到前缀码 以频率作为权值,得 4 , 5 , 6 ,10,10, 15 , 20, 30 15 20 30 4 5 6 9 15 10 10 20 30 40 60 100 0 1 0 1 0 1 0 1 0 1 0 1 0 1 00111 00110 01 11 000 100 101 0010 e w e h a 2 4 7 5 12 0 1 0 1 0 1 0 1 0 1 0011 0010 01 110 000 101 100 1110 i r 2 0 1 m s 2 1 0 1 3 0 1111 0:30%,01 1:20%,11 2:15%,000 3:10%,100 4:10%,101 5: 6%,0010 6:5%,00111 7: 4%,00110 Example4:单源最短路径问题 Single-Source Shortest Path Single-Source Shortest Path Problem:给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数。另外,给定 V 中的一个顶点,称为源点。现在我们要计算从源点到所有其他各顶点的最短路径长度。这里的长度是指路上各边权之和。 这个问题通常称为单源最短路径问题。 带权有向图G=(V,E),每条边有一个非负权值w。 路径p=v0,v1,...,vk的权是其组成变的所有权值之和。 从源点s到点v的最短路径为所有可到达路径中权值最小的一条路径。 在单源最短路径问题中,我们期望找出给定原点s到每个顶点v的最短路径。 G中任意一条无环路径包含至多|V|个不同的顶点,同时包含至多(|V|-1)条边,因此,我们把注意力主要集中在至多(|V|-1)条边的最短路径上。 1959年,迪杰斯持拉,标号法 这个算法能求出从给定结点到图中其他每个 结点的最短路。 Dijkstra算法 Dijkstra算法是解单源最短路径问题的贪心算法。 基本思想:设置顶点集合S并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。 Relaxation step Dijkstra’s algorithm d[s] ←0 for each v∈V–{s} do d[v] ←∞ S←? Q←V ?Q is a priority queue maintaining V–S while Q ≠? do u ←EXTRACT-MIN(Q) S←S∪{u} for each v∈Adj[u] do if d[v] d[u] + w(u, v) then d[v] ←d[u] + w(u, v) init Example of Dijkstra’s algorithem Graph with nonnegative edge weights: A B C D E 10 3 1 4 2 2 8 7 9 Example of Dijkstra’s algorithem Initiatize: 0 ∞ ∞ ∞ ∞ Q: A B C D E

您可能关注的文档

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档