一起talk C栗子吧(第五十六回:C语言实例--图的最短路径四)
2015-10-11 20:37
267 查看
各位看官们,大家好,上一回中咱们说的是使用弗洛伊德(Floyd)算法计算图的最短路径的例子,这一回咱
们继续说图的最短路径。闲话休提,言归正转。让我们一起talk C栗子吧!
看官们,我们在前几个章回中介绍了最短路径的概念,以及告诉大家如何使用迪杰斯特拉算法和弗洛伊德
算法计算图的最短路径。这一回中,我们比较一下这两种算法的优缺点。
迪杰斯特拉算法在计算最短路径时,计算的结果是某个顶点到图中其它顶点的最短路径,想计算哪个顶点
与其它顶点的最短路径,就计算哪个顶点,可以说目的非常明确。该算法的性能是平方级的,相对来说会
比弗洛伊德算法的性能高一些。
弗洛伊德算法计算最短路径时,计算的结果是图中任意两个顶点之间的最短路径,它计算出的是全面性的
结果。只需查找算法运算的结果就能得到图中任意两点之间的最短路径。该算法的性能是立方级的,相对
来说会比迪杰斯特拉算法的性能低一些。
看官们,通过上面的对比,我们可以在实际的工作中依据自己的需要来选择不同的算法。如果只想求某个
顶点与其它顶点的最短路径,那么我建议大家使用迪杰斯特拉算法去计算最短路径;如果想要求所有顶点
之间的最短路径,那么我建议大家使用弗洛伊德算法去计算最短路径。
各位看官,关于最短路径的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。
们继续说图的最短路径。闲话休提,言归正转。让我们一起talk C栗子吧!
看官们,我们在前几个章回中介绍了最短路径的概念,以及告诉大家如何使用迪杰斯特拉算法和弗洛伊德
算法计算图的最短路径。这一回中,我们比较一下这两种算法的优缺点。
迪杰斯特拉算法在计算最短路径时,计算的结果是某个顶点到图中其它顶点的最短路径,想计算哪个顶点
与其它顶点的最短路径,就计算哪个顶点,可以说目的非常明确。该算法的性能是平方级的,相对来说会
比弗洛伊德算法的性能高一些。
弗洛伊德算法计算最短路径时,计算的结果是图中任意两个顶点之间的最短路径,它计算出的是全面性的
结果。只需查找算法运算的结果就能得到图中任意两点之间的最短路径。该算法的性能是立方级的,相对
来说会比迪杰斯特拉算法的性能低一些。
看官们,通过上面的对比,我们可以在实际的工作中依据自己的需要来选择不同的算法。如果只想求某个
顶点与其它顶点的最短路径,那么我建议大家使用迪杰斯特拉算法去计算最短路径;如果想要求所有顶点
之间的最短路径,那么我建议大家使用弗洛伊德算法去计算最短路径。
各位看官,关于最短路径的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。
相关文章推荐
- C++和C混编时变量和函数的定义和使用
- [C++] the pointer array & the array's pointer
- K个值求和计算
- c++
- 黑马程序员-c语言回顾-函数
- C、C++复杂类型声明
- C++修改已输出的字符
- 链串的实现C++封装
- 编写函数,接受一对指向vector<int>的迭代器和一个int值。在两个迭代器指定的范围内查找给定的值,返回一个布尔值来指出是否找到。
- PIC24, dsPIC单片机端C语言serial bootloader和PC端C#语言bootloader串口通信程序
- 顺序串的实现C++封装
- 【C++】使用MinGW配置Eclipse for C++环境
- [C++] Variable storage space
- leetcode290 : Word Pattern
- C语言基础之变量的命名规则、定义常量、C的数据类型
- C++拷贝构造函数(深拷贝,浅拷贝)
- 1005. Programming Pattern (35)【待解决】
- 如何区分 const char * p, char * const p, const char * * p?
- C++ Virtual总结
- 小议c++内存分配