算法设计与分析-多段图最短路径问题.docVIP

算法设计与分析-多段图最短路径问题.doc

  1. 1、本文档共11页,可阅读全部内容。
  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文档。上传文档
查看更多

关于多段图最短路径问题得探讨

摘要:

本文主要描述得就是分别用动态规划法、贪心法与分支限界法来解决多段图最短路径问题时得情况,并在附录中附有实际问题得程序来辅助阐述观点.文章首先阐述了各个方法得原理,主要得思路就是通过输入一组数据,比较三者得输出结果得准确性以及运行时间,以之为基础来分析、讨论三者得性能区别。另外,众所周知,多段图就是有向图得一个简单得模型,它在有向图得基础上忽略了两点之间得线得双向性得问题,并且对点与点之间得线有很多得要求,从而把图简化为可分为几段得模式,文章最后讲述了若这几种方法运行到有向图中得情况,几种方法得对比与它们比较适应得使用情况得讨论,并给出了自己得建议.

关键字:

多段图最短路径问题动态规划法分支限界法多段图与有向图得关系有向图最短路径算法

引言:

当前社会,关于最短路径得问题屡屡出现。例如在开车自驾游得一个过程中,排除其她影响因素,从一个地点到另一点,这个时候必然就是希望有一条距离最短得路程来尽量减少消耗得时间以及花费得(它们在模型中被称为代价),市场上对该问题得解决有很大得需求,因此,这里我将讨论多段图得最短路径得问题。

在早些时间得课程中,我们学习过数据结构这门课程,其中就包括最短路径这方面得讨论.当时老师给我们介绍了分别面向单源(Dijkstra算法)与非单源(Floyd算法)两种问题得算法法-—-,这就是我们最早得对最短路径方面得理解,也就是我们接触得比较早得关于图得问题。在这学期得算法课程中,我们学习了许多了方法,包括贪心法、动态规划法等算法,它们把以前学习得许多方法都命名并归纳分类起来,其中有许多算法都就是可以用来解决这个最短路径得问题得,并且该问题作为一个图得问题,对该问题得继续探讨优化得需求很大,本文将就不同算法在解决该最短路径问题时得不同方法进行对比并给出该问题在不同基础上不同得最终解决方案。由于时间得限制,本文将重点分析动态规划法下得情况,并会对图得情况加以简化、限制,最后会对其她得图做一些拓展。

首先,对多段图最短路径问题进行介绍,设图G=(V,E)就是一个带权有向连通图,如果把顶点集合V划分成k个互不相交得子集Vi(2≤k≤n,1≤i≤k),使得E中得任何一条边(u,v),必有u∈Vi,v∈Vi+m(1≤i<k,1<i+m≤k),则称图G为多段图,称s∈V1为源点,t∈Vk为终点。多段图得最短路径问题就是求从源点到终点得最小代价路径。由于多段图将顶点划分为k个互不相交得子集,所以,多段图划分为k段,每一段包含顶点得一个子集。不失一般性,将多段图得顶点按照段得顺序进行编号,同一段内顶点得相互顺序无关紧要。假设图中得顶点个数为n,则源点s得编号为0,终点t得编号为n—1,并且,对图中得任何一条边(u,v),顶点u得编号小于顶点v得编号.

这里我们讨论得多段图就是可以分段得,各段之间得关系最好就是单向得,即对该有向图来说,图中就是没有环得存在得。

1、贪心法

贪心法在解决问题得策略上目光短浅,只根据当前已有得信息就做出选择,而且一旦做出了选择,不管将来有什么结果,这个选择都不会改变。换言之,贪心法并不就是从整体最优考虑,它所做出得选择只就是在某种意义上得局部最优。这种局部最优选择并不总能获得整体最优解,但通常能获得近似最优解。

本例中利用得贪心算法,就是每当要选择下一个结点时,总就是选择与当前结点间代价最小得点,这就叫做总就是优先局部最优解。以此得到最终得解序列.这里举一个贪心法得拓展例子Dijkstra算法.

Dijkstra算法就是一种最短路径算法,用于计算一个节点到其它所有节点得最短路径,动态路由协议OSPF中就用到了Dijkstra算法来为路由计算最短路径。

算法本身并不就是按照我们得正常思维习惯,我们一般会,从原点遍历所有与之相连得节点,找到最短路径,再从最短路径上得那个点遍历与之相连得所有其它点(原点除外),然后依次类推.这样做虽然可以算出一个树形,但就是在大多数情况下,这种算法会产生很多次优路径,也就就是说非最短路径。

Dijkstra算法得大概过程:

假设有两个集合或者说两个表,表A与表B

表A表示生成路径,表B表示最后确定得路径

1、从原点出发,遍历检查所有与之相连得节点,将原点与这些节点存放到表A中,并记录下两节点之间得代价。

2、将代价最小得代价值与这两节点移动到表B中(其中一个就是原点)。

3、把这个节点所连接得子节点找出,放入到表A中,算出子节点到原点得代价

4、重复第二步与第三步直到表A为空.然后根据表B中得数据算出最优树。

维基百科中还有另一种说法,Dijkstra算法得输入包含了一个有权重得有向图G,以及G中得一个来源顶点S。?我们以V表示G中所有顶点得集合。?每一个图中得边,都就是两个顶点所形成得有序元素对。(u,v

文档评论(0)

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

文档文档,就是专业

1亿VIP精品文档

相关文档