- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最短路算法及其应用 广东北江中学 余远铭 yyming@ 定义 重要性质 推论 松弛技术 常用算法 Dijkstra算法 Dijkstra算法 Bellman-Ford算法 Bellman-Ford算法 SPFA算法 SPFA算法 小结 例一 双调路径 (BOI2002) 如今的道路密度越来越大,收费也越来越多,因此选择最佳路径是很现实的问题。城市的道路是双向的,每条道路有固定的旅行时间以及需要支付的费用。路径由连续的道路组成。总时间是各条道路旅行时间的和,总费用是各条道路所支付费用的总和。同样的出发地和目的地,如果路径A比路径B所需时间少且费用低,那么我们说路径A比路径B好。对于某条路径,如果没有其他路径比它好,那么该路径被称为最优双调路径。这样的路径可能不止一条,或者说根本不存在。 给出城市交通网的描述信息,起始点和终点城市,求最优双条路径的条数。城市不超过100个,边数不超过300,每条边上的费用和时间都不超过100。 例一 双调路径 (BOI2002) 这道题棘手的地方在于标号已经不是一维,而是二维,因此不再有全序关系。我们可以采用拆点法,让d[i,c]表示从s到i费用为c时的最短时间。 例一 双调路径 (BOI2002) 例一 双调路径 (BOI2002) 两个算法在空间上是同阶的,一样是O(E)。虽然算法一仅用到二叉堆,并不是特别复杂,但是因为要用两个堆,建立更新删除写起来还是有一定的工作量的。SPFA算法写起来极其简单,效率又高,而且适用范围广(可以处理含有负权的图),在很多情况下,是最短路问题上好的选择。 例二 网络提速 (经典问题) 某学校的校园网由n(1=n=50)台计算机组成,计算机之间由网线相连,其中顶点代表计算机,边代表网线。不同网线的传输能力不尽相同。 现学校购买了m(1=m=10)台加速设备,每台设备可作用于一条网线,使网线上传输信息用时减半。多台设备可用于同一条网线,其效果叠加。 如何合理使用这些设备,使计算机1到计算机n传输用时最少,这个问题急需解决。校方请你编程解决这个问题。 例二 网络提速 (经典问题) 如图,若n=5,m=2,则将两台设备分别用于1-3,3-5的线路,传输用时可减少为22秒,这是最佳解。 例二 网络提速 (经典问题) 让我们重新描述一下问题: 给定含有n个顶点的带权无向图,一共可以进行m次操作,每次操作将一条边的权值除以2。问每次应该对哪条边进行操作,使得1到n的最短路径权和最小。 例二 网络提速 (经典问题) 例二 网络提速 (经典问题) 例二 网络提速 (经典问题) 例二 网络提速 (经典问题) 例二 网络提速 (经典问题) 结语 我们从理论上研究问题的最终目的是更好地指导实践。 在题目中,往往不会直接告诉你,什么元素应该作为结点,什么元素应该作为边,应该如何构图。这就需要你根据题目的自身的特点,借鉴以往的解题经验,运用所学的相关知识,抽象出合适的模型,利用效率已有公论的算法高效求解。 实际中遇到的题目可能千奇百怪,模型的转化千变万化,从而导致解法也多种多样,不拘一格,本文实在难以涵盖万一,只要能对读者有所启发,那么我的目的也就达到了。 构造图G=(V,E)。设原图 ,将原图中的每个顶点vi拆成m+1个顶点 ,构造V使得: 对于原图的每一条边,注意是无向的, ,将它拆成(m+1)(m+2)条有向边: …… …… 构造E使得: 最后设定权函数w。对于 ,w满足: 解释一下图G的含义。 为了更清楚地说明问题,我们举出一个例子。下图(a)显示了某个G0(n=2,m=2),按照以上的构造方法得出(b)中的G。将图G分成三层,第0层由顶点v1,0,v2,0构成,第1层由顶点v1,1,v2,1构成,第2层由顶点v1,2,v2,2构成。可以看出,若两个顶点间有边相连,两个顶点在同一层的,则顶点之间是互连的,若不在同一层,则层号小的顶点为边的起始点,层号大的为边的终点。 8 (a) 8 8 4 4 2 2 4 4 8 1 2 1,0 1,2 2,2 2,1 1,1 2,0 (b) 层号代表已用的加速设备台数,例如从 到 需要且恰好要用一台加速设备。我们无法从层号大的顶点到达层号小的顶点,这符合同一个设备不能使用多次的规定。
文档评论(0)