对任意点对间的最短路径算法的思考

论文题目

对任意点对间的最短路径算法的思考

姓名

学院

学号

日期

对任意点对间的最短路径算法的思考

算法的设计与分析最重要的是要对所描述问题有一个清晰的认识和整体的思路,运用所学的知识,通过不断的探索、比较,找到针对问题的最优化的算法。本文是对任意点对间的最短路径算法的学习领会。

全源点对最短路径是单源最短路径的推广与延伸,所以两者的算法也有是相通之处。因为一个图中如果有负权边环存在的话,那么最短路径路就有可能不会存在,因此对于存在有负权重边的图来说,一定要能判断出它的存在,如果能求出最短的路径,最好能给出解法。在单源最短路径算法中,Bellman-Ford 算法可以判断负权重的环是否存在。

Bellman-Ford 算法的伪码:

1. d[s] ← 0

2. for each v ∈ V – {s}

3. do d[v] ← ∞

4. for i ← 1 to | V | – 1

5. do for each edge (u, v) ∈ E

6. do if d[v] > d[u] + w(u, v)

7. then d[v] ← d[u] + w(u, v)

8. for each edge (u, v) ∈ E

9. do if d[v] > d[u] + w(u, v)

10. then report that a negative-weight cycle exists

1~3是初始化操作;4~7是对边的松弛操作;8~10是对图中是否有负权环存在的判断。

算法,就是解决某类问题的一系列步骤。算法的最大特征就是分步,并且每个步骤都是明确的、可行的,而且能在有限步骤内完成。

课本上介绍了三种全源点对路径的算法:动态规划的算法、

Floyd-Warshall 算法和Johnson 算法。

动态规划的算法的思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原始问题的解。由优化准则可知最优解一定存在。值得注意的地方是教授将矩阵乘法的表示方法用于表示算法,而且使时间复杂度降低(Θ(n4)),而通过对矩阵的改进可以使时间进一步降低(Θ(n3lg n) ),这种思想是非常值得学习的!

Floyd-Warshall 算法也是一种动态规划算法,时间复杂度更低(Θ(n3)),是对原始动态规划算法的改进。这种算法代码简单,效率高。 另外利用有向图的传递闭包表示方法会很方便,而且时间复杂度不会改变。

Johnson 算法是通过对原始图的边进行重新赋权重,通过任意两个顶点的路径调整相同的权值,从而使每个定点都拥有一定的权值,然后利用Bellman-Ford 算法解决不同的约束条件问题,或者判断负环的存在,接着对每个顶点运行Dijkstra 算法,总的运行时间是O(VE+V2lg V),可见Johnson 算法时间复杂度已经大大降低,不过这是以算法的复杂性来作为代价的。因此,设计算法时要综合多种因素,综合判断需要设计什么样的计算方法。

以上三种方法都是针对全源点对最短路径的算法,可以看出,全源点对最短路径是对单源最短路径的延伸,我们对图中的每个点都进行单源最短路径算法的运行就可以求得全源点对的最短路径。这是最原始的想法,然后我们要做的就是对算法的改进和提升工作,这时也是对自己最大的考验,因为它要综合运用所学的知识,是一个演绎升华的过程。

通过对任意点对间的最短路径算法的学习,我对算法的设计有了很大一步的认识,算法设计立足于用自然语言描述解决实际问题,明确的过程顺序是实现用程序框图、程序语言的表示方式的基础,此外就是对时间问题复杂度的分析,时间复杂度越低越好。学习的过程中令我印象最深的地方是教授将矩阵和传递闭包的运算性质运用到算

法中,我们利用矩阵和传递闭包的的表示形式和运算性质,通过对其运算符号进行改进,使它们演变为表示算法的符号,这种思想是极其重要的。在以后的学习过程中尤其要注意这方面的锻炼。

算法设计有利于培养我们清晰的思维,使我们更有条理地处理事情,同时,它在科学领域中应用广泛,特别是在计算机程序方面。以下是我对算法学习的总结:1. 基础算法要扎实,现在感觉到仍然需要学习基础的算法思想,很多大型、复杂的算法都是以简单算法为基础的;2. 知识面要广,算法的设计过程中可能会借鉴很多其他专业、学科的知识,多读多写多思考,灵活运用;3. 勇于创新,创新是解决很多问题的重要途径。

论文题目

对任意点对间的最短路径算法的思考

姓名

学院

学号

日期

对任意点对间的最短路径算法的思考

算法的设计与分析最重要的是要对所描述问题有一个清晰的认识和整体的思路,运用所学的知识,通过不断的探索、比较,找到针对问题的最优化的算法。本文是对任意点对间的最短路径算法的学习领会。

全源点对最短路径是单源最短路径的推广与延伸,所以两者的算法也有是相通之处。因为一个图中如果有负权边环存在的话,那么最短路径路就有可能不会存在,因此对于存在有负权重边的图来说,一定要能判断出它的存在,如果能求出最短的路径,最好能给出解法。在单源最短路径算法中,Bellman-Ford 算法可以判断负权重的环是否存在。

Bellman-Ford 算法的伪码:

1. d[s] ← 0

2. for each v ∈ V – {s}

3. do d[v] ← ∞

4. for i ← 1 to | V | – 1

5. do for each edge (u, v) ∈ E

6. do if d[v] > d[u] + w(u, v)

7. then d[v] ← d[u] + w(u, v)

8. for each edge (u, v) ∈ E

9. do if d[v] > d[u] + w(u, v)

10. then report that a negative-weight cycle exists

1~3是初始化操作;4~7是对边的松弛操作;8~10是对图中是否有负权环存在的判断。

算法,就是解决某类问题的一系列步骤。算法的最大特征就是分步,并且每个步骤都是明确的、可行的,而且能在有限步骤内完成。

课本上介绍了三种全源点对路径的算法:动态规划的算法、

Floyd-Warshall 算法和Johnson 算法。

动态规划的算法的思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原始问题的解。由优化准则可知最优解一定存在。值得注意的地方是教授将矩阵乘法的表示方法用于表示算法,而且使时间复杂度降低(Θ(n4)),而通过对矩阵的改进可以使时间进一步降低(Θ(n3lg n) ),这种思想是非常值得学习的!

Floyd-Warshall 算法也是一种动态规划算法,时间复杂度更低(Θ(n3)),是对原始动态规划算法的改进。这种算法代码简单,效率高。 另外利用有向图的传递闭包表示方法会很方便,而且时间复杂度不会改变。

Johnson 算法是通过对原始图的边进行重新赋权重,通过任意两个顶点的路径调整相同的权值,从而使每个定点都拥有一定的权值,然后利用Bellman-Ford 算法解决不同的约束条件问题,或者判断负环的存在,接着对每个顶点运行Dijkstra 算法,总的运行时间是O(VE+V2lg V),可见Johnson 算法时间复杂度已经大大降低,不过这是以算法的复杂性来作为代价的。因此,设计算法时要综合多种因素,综合判断需要设计什么样的计算方法。

以上三种方法都是针对全源点对最短路径的算法,可以看出,全源点对最短路径是对单源最短路径的延伸,我们对图中的每个点都进行单源最短路径算法的运行就可以求得全源点对的最短路径。这是最原始的想法,然后我们要做的就是对算法的改进和提升工作,这时也是对自己最大的考验,因为它要综合运用所学的知识,是一个演绎升华的过程。

通过对任意点对间的最短路径算法的学习,我对算法的设计有了很大一步的认识,算法设计立足于用自然语言描述解决实际问题,明确的过程顺序是实现用程序框图、程序语言的表示方式的基础,此外就是对时间问题复杂度的分析,时间复杂度越低越好。学习的过程中令我印象最深的地方是教授将矩阵和传递闭包的运算性质运用到算

法中,我们利用矩阵和传递闭包的的表示形式和运算性质,通过对其运算符号进行改进,使它们演变为表示算法的符号,这种思想是极其重要的。在以后的学习过程中尤其要注意这方面的锻炼。

算法设计有利于培养我们清晰的思维,使我们更有条理地处理事情,同时,它在科学领域中应用广泛,特别是在计算机程序方面。以下是我对算法学习的总结:1. 基础算法要扎实,现在感觉到仍然需要学习基础的算法思想,很多大型、复杂的算法都是以简单算法为基础的;2. 知识面要广,算法的设计过程中可能会借鉴很多其他专业、学科的知识,多读多写多思考,灵活运用;3. 勇于创新,创新是解决很多问题的重要途径。


相关内容

  • 最短路径问题
  • 最短路径问题 摘要 在图论当中,任意两点间的最短路径问题,运用Dijkstra算法,Flord算法,匈牙利算法等都可以就解决这类相关问题,本文主要就是运用图论相关知识,来分析问题的. 在问题一中,需要为货车司机选择一条从地点1到地点11的最短时间问题,其实际归结为求一个两点间最短路径问题,运用运筹学 ...

  • 最短路径实验报告(1)
  • 实验 最短路径 姓名: 班 级: 学号: 试验时间: 一.从某个源点到其余各顶点的最短路径 1.问题描述 本实验实现dijkstra算法.图存储采用了数组存储结构.图类的定义为第9.1.1节图类的修改,仅保留了与本程序有关的成员函数,增添了一个求单源点最短路径的成员函数. 2.算法设计 源程序: t ...

  • 最短路问题-最新修改版
  • 最短路模型与方法 许志军 2015年7月24日 摘要:介绍最短路问题的Matlab 软件和Lingo 软件求解方法,给出了各种方法的完整代码,这些代码包含了若干Matlab 和Lingo 编程小技巧. 目录 目录1 无向图的最短路问题 1.1图的矩阵表示. . . . . . . . . . . . ...

  • 最小生成树and最短路径
  • 最小生成树and 最短路径 无独有偶,在两个学期的期末中两门不同的科目<离散数学>和<数据结构>中都谈到了图及其衍生的最小生成树.最短路径问题,并给出了相应的算法--克鲁斯卡尔.普林.迪杰斯特拉.沃舍尔算法.这无疑是释放了一个很大的信号--这些内容很重要.由于之前学<离 ...

  • 网络最短路问题的改进算法
  • 第23卷第9期 2002年9月 文章编号:1000-1220(2002) 09-1083-05 小型微型计算机系统M IN I -M I CRO SY ST EM V ol. 23N o. 9 Sep . 2002 网络最短路问题的改进算法 王晓东 陈国龙 林柏钢 (福州大学计算机科学与技术系, 福 ...

  • 公园道路最短路径问题
  • 公园道路最短路径问题 摘要 针对问题一:我们建立了基于floyd 算法的综合评价模型.我们根据题目所给的的信息,主要通过任意两点边线距离是否可用进行第一步筛选,选出个直连路径.根据题目所提供的原则,我们选取了路长和利用效率相结合的权值,并且构建了一种满足题目要求的路径,长度为472.5m 针对问题二 ...

  • 最短路径问题设计论文
  • 目 录 第1章 绪论 ........................................................................................................................................... ...

  • 交通咨询系统
  • „„„„„„„„大学 算法与数据结构 课程设计报告 题 目: 交通咨询系统 设 计 者: 25045012 专业班级: 本网络 学 号: 指导教师: 所属系部: 计算机科学与技术系 2012年06月03日 目 录 1 问题描述及要求.................................. ...

  • 校园导游实验报告
  • 一:设计目的 1.进一步掌握图的存储,建立和遍历. 2.掌握弗洛伊德算法和迪杰斯特拉算法完成最短路径的有关问题. 3.文件的读写操作的练习与使用. 4.提供校园导游的实用地图. 二. 设计内容 1.以图中顶点表示校园内各景点,存放景点名称.代号.简介等信息:以边表示路径,存放路径长度等相关信息. 2 ...