SPFA算法的优化和应用.pdfVIP

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2009Thesis SPFA 的优化与应用 姜碧野 迭代求解的利器 SPFA 算法的优化与应用 广东中山纪念中学 姜碧野 【摘要】 SPFA 算法,全称 Shortest Path Faster Algorithm,是Bellman-Ford 算法的改进 版。该算法以三角不等式为基础,实现时借助队列或栈不断进行迭代以求得最优 解。具有效率高、实现简洁、扩展性强等优点。三角不等式的普适性及其类似搜 索的实现方式,使其应用并不只局限于图论中的最短路径,更可以在动态规划、 迭代法解方程中发挥出巨大的作用,解决一些非常规问题;还可根据具体问题进 行各种各样的优化。本文将对其进行全面的分析、测试和深入的讨论。 迭代 SPFA 深度优先搜索 最优性 动态规划 状态转移 方程 【关键词】 - 第 1 页共 37 页 - 2009Thesis SPFA 的优化与应用 姜碧野 【目录】 SPFA算法简介 3 1.1 SPFA算法的基本实现 3 1.2 活学活用:SPFA的深度优先实现及其优化 5 1.2.1:基于Dfs 的SPFA的基本原理 5 1.2.2:基于Dfs 的SPFA的相关优化 7 1.3 SPFA算法实际效果测试及比较 8 *1.4 Johnson算法介绍 12 2.SPFA算法在实际应用中的优化 13 2.1 如何使用SPFA快速查找负(正)环 13 2.2 注意对无用状态的裁剪 17 3. SPFA算法的应用 19 3.1 差分约束系统 19 3.2 在一类状态转移阶段性不明显的动态规划中的应用 20 3.3 探讨SPFA在解方程中的应用 23 3.4 一类状态转移存在“后效性” 的动态规划中的应用 28 5 附录 33 5.1 例题原题 33 5.2 源程序例题测试数据 37 6.参考文献 37 7.鸣谢 37 - 第 2 页共 37 页 - 2009Thesis SPFA 的优化与应用 姜碧野 【正文】 SPFA 算法简介 1.1 SPFA 算法的基本实现 下面,先介绍一下 SPFA 和 Bellman-Ford 算法的原理和适用条件。 首先一个很重要的性质便是三角不等式。 设 G=(V,E)为一带权有向图,其权函数 w:ER 为边到实型权值的映射,s 为源点,对于任意点 t,d(s,t)为 s 到 t 的最短路。 则对于所有边(u,v) ∈E 有 d(s,v)=d(s,u)+w(u,v) 。 令 d(s,s)=0,这一不等式为 d(s,t)是 s 到 t 的最短路的充要条件。 这一性质很容易理解。我们也很容易将其推广。 设 G=(V,E)为一带权有向图,d(u)为状态(顶点)u 的最优值,权函数w:E自定 义集合。则对于所有边(u,v) ∈E 有 d(u)+w(u,v)不优于 d(v). 注:这里的“+ ”可以是延伸为任意形式的运算表达式。 更进一步,我们并不一定将不等式限定在“最优性”这一框架中,而可根据 具体题目要求制定自己的判断。推广后的三角不等式将不再拘束于最短路问题, 有着更加广泛的适用空间。只要我们根据题目构造出状态间的权函数和优劣判断 标准,在大部分情况下我们都可以使用 SPFA 求解。在下文中将看到相关的应用。 有了三角不等式后,SPFA 也即 Bellman-Ford 的核心算法也就登场了。也就是 著名的松弛操作。 首先令 f(u)为节点

您可能关注的文档

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档