- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Chapter贪婪算法
第三部分 算法设计方法 中国地质大学信息工程学院 相关章节 Chapter13 贪婪算法 Chapter14 分而治之算法 Chapter15 动态规划 Chapter16 回溯 Chapter17 分枝定界 贪婪算法的特点 通过分阶段地挑选最优解,较快地得到整体的较优解 示例:Huffman最优编码,Dijkstra最短路径 特点:既可能得到次优解,也可能得到最优解,依赖于具体问题的特点和贪心策略的选取 多步判断+最优子结构性质+贪心选择性质 分而治之算法的特点 通过把问题化为较小的问题来解决原问题,从而简化或减少了原问题的复杂度 示例:折半查找、快速排序、归并排序 特点:自顶向下、问题化解 子结构不重复 分、治、合 动态规划算法的特点 将问题分成子问题来做,从某一集合中选出子集,进行逐项的测试比较逐步达到整个解,通过逐步逼近最优解而最终得到满足条件的解 自底向上,利用中间结果,迅速构造问题的解空间树,以空间换时间 示例:Floyd(多源点最短路径)算法 特点:能够得到最优解 多步判断+最优子结构性质 回溯算法的特点 也是从某一集合中选出子集,进行逐项的测试比较逐步达到整个解,通过逐步逼近最优解而最终得到满足条件的解 在搜索解空间树时,能够跳过无解分枝! 示例:迷宫问题、八皇后问题 特点:能够得到最优解 最优化问题的通法 分枝定界算法的特点 在系统搜索问题的解空间树时,加入上下界的条件检查以达到有效剪枝的目的 特点:能够得到最优解 多步判断+多米诺性质 Chapter13 贪婪算法 中国地质大学信息工程学院 内容提要 13.1 示例问题提出 13.2 贪婪算法的思想 13.3 贪婪算法的应用 货箱装船 拓扑排序 单源最短路径 最小耗费生成树 算法的基本思路 从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。当达到某算法中的某一步不能再继续前进时,算法停止。 存在问题: 1.不能保证求得的最后解是最佳的; 2.不能用来求最大或最小解问题; 3.只能求满足某些约束条件的可行解的范围。 最优化问题的几个概念 每个最优化问题包含一组限制条件和一个优化函数 可行解:符合限制条件的问题求解方案 最优解:使优化函数取得最佳解的可行解 例如:Huffman树,从可用的二叉树中选取权重最小的两棵子树,进行合并 例13-1 渴婴问题 求解: 设各种饮料的满意度已知。令Xi为婴儿将要引用的第i种饮料的量,需要解决的问题是:找到一组实数Xi(1=i=n)使满足 限制条件: 优化函数: 注意:可行解、优化解、无解的情况 例13-2 装载问题 装载问题 求解:找到一组变量Xi,其可能取值为0或1,使它满足 限制条件: 优化函数: 例13-3 最小代价通讯网络 最小代价生成网络 求解:选择一个无向图中的边集合的子集 这个子集必须具备如下: 限制条件:所有的边构成一个生成树 优化函数:子集中所有边的权值之和 2、贪婪算法思想 在贪婪算法(greedy method)中采用逐步构造最优解的方法。 在每个阶段,都作出一个看上去最优的决策(在一定的标准下)。决策一旦作出,就不再可更改。 作出贪婪决策的依据成为贪婪准则 贪婪算法思想(续1) 贪心算法的基本思路如下:1. 建立数学模型来描述问题2. 把求解的问题分成若干个子问题3. 对每一子问题求解,得到子问题的局部最优解 4. 把子问题的解局部最优解合成原来解问题的一个解 贪婪算法思想(续2) 实现该算法的过程:从问题的某一初始解出发;while 能朝给定总目标前进一步 do 求出可行解的一个解元素;由所有解元素组合成问题的一个可行解; 例13-4 找零钱问题 贪婪算法有一种直觉的倾向, 例如:在找零钱时,直觉告诉我们应使找出的硬币数目最少(至少是接近最少的数目) 例13-5 机器调度问题 贪婪算法求解:机器调度 一种获取最有分配的贪婪方法是逐步分配任务。每步分配一件任务,且按照任务的非递减顺序进行分配。 若已经至少有一件任务分配给某台机器,则称这台机器是旧的;若机器非旧则它就是新的。 在选择机器时,遵循的贪婪法则为:根据欲分配任务的开始时间,若此时有旧的机器可用,则将任务分配给旧机器。否则,任务分配给新机器 机器调度 (续) 例13-6 最短路径 总结 贪婪算法并不总能保证得到最优解 启发式算法:算法并不保证得到最优解,但是通常所得结果与最优解相差无几或很接近。 例如:
文档评论(0)