BFS and DFS 一般来说,能用DFS解决的问题,都能用BFS。DFS容易爆栈,而BFS可以自己控制队列的长度。深度优先一般是解决连通性问题,而广度优先一般是解决最短路径问题。 广优的话,占内存多,能找到最优解,必须遍历所有分枝. 广优的一个应用就是迪科斯彻单元最短路径算法. 深优的话,占内存 ...
分类:
其他好文 时间:
2017-06-08 19:42:41
阅读次数:
222
Bellman-Ford算法 Bellman-Ford是一种容易理解的单源最短路径算法, Bellman-Ford算法需要两个数组进行辅助: dis[i]: 存储顶点i到源点已知最短路径 path[i]: 存储顶点i到源点已知最短路径上, i的前一个顶点. 若图有n个顶点, 则图中最长简单路径长度不 ...
分类:
编程语言 时间:
2017-06-05 23:42:52
阅读次数:
318
// 经过 1 号顶点 for(i=1;i<=n;i++) for(j=1;j<=n;j++) if (e[i][j] > e[i][1]+e[1][j]) e[i][j]=e[i][1]+e[1][j]; // 经过 2 号顶点 for(i=1;i<=n;i++) for(j=1;j<=n;j++ ...
分类:
编程语言 时间:
2017-05-19 00:53:02
阅读次数:
154
Breadth First Search 宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的 ...
分类:
其他好文 时间:
2017-05-09 21:44:50
阅读次数:
168
注意:以下代码 只是描述思路,没有测试过!! Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业 ...
分类:
编程语言 时间:
2017-05-09 00:53:52
阅读次数:
191
最短路径算法1——Floyed与Dijkstra算法。 求图中一个点到另一个点的最短路径,毫无疑问Floyed算法是最简单的,而且是多源最短路径,但时间复杂度很高,达到O(n^3)。 原理就是不断遍历一边所有点,把他们当作中间点,每次更新整个图。 Floyed代码: 1 #include<cstdi ...
分类:
编程语言 时间:
2017-05-07 13:03:12
阅读次数:
173
这一篇博客以一些OJ上的题目为载体。整理一下最短路径算法。会陆续的更新。。。 一、多源最短路算法——floyd算法 floyd算法主要用于求随意两点间的最短路径。也成最短最短路径问题。 核心代码: /** *floyd算法 */ void floyd() { int i, j, k; for (k ...
分类:
编程语言 时间:
2017-05-03 20:34:45
阅读次数:
323
public class City { String name; int id; static int idCounter = 0; public City(String name) { this.name=name; id = idCounter++; } } import java.util.A ...
分类:
编程语言 时间:
2017-04-29 22:15:22
阅读次数:
541
Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法, 在很多专业课程中都作为基本内容有详细的介绍,如数据结构 ...
分类:
编程语言 时间:
2017-04-22 17:39:36
阅读次数:
191
带权图分为有向和无向 无向图的最短路径又叫做最小生成树,有prime算法和kruskal算法; 有向图的最短路径算法,有dijkstra算法和floyd算法。 生成树的概念:联通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树 生成树是联通图的极小连通子图。所谓极小是指:若在树中 ...
分类:
其他好文 时间:
2017-04-22 00:03:18
阅读次数:
247