算法
江浙沪瓜王
逃)。
展开
-
Prim算法与Dijkstra算法的区别
在图论中,Prim算法是计算最小生成树的算法,而Dijkstra算法是计算最短路径的算法。二者看起来比较类似,因为假设全部顶点的集合是V,已经被挑选出来的点的集合是U,那么二者都是从集合V-U中不断的挑选权值最低的点加入U,那么二者是否等价呢?也就是说是否Dijkstra也可以计算出最小生成树而Prim也可以计算出从第一个顶点v0到其他点的最短路径呢?答案是否定的,否则就不必有两个算法了。转载 2013-12-07 21:14:24 · 1237 阅读 · 0 评论 -
最短路径——Dijkstra
头文件"AdjGraph.h"#include#define INFINITY 0x3f3f3f3f#define VISITED 1#define UNVISITED 0using namespace std;class AdjGraph{public: int **edge;//邻接矩阵,值为每条边的权值 int *mark;//记录顶点是否加入V-U int *D;/原创 2013-12-08 10:36:00 · 696 阅读 · 0 评论 -
最小生成树——Kruskal
头文件"Graph.h"#include#includeusing namespace std;class Edge{public: int start; int end; int weight;};//sort() 第三个参数 从小到大排序bool cmp(const Edge & a,const Edge & b){ return a.weight<b.weight原创 2013-12-07 20:21:48 · 575 阅读 · 0 评论 -
最小生成树——Prim
头文件"AdjGraph.h"#include#define VISITED 1#define UNVISITED 0#define INFINITY 1000using namespace std;class AdjGraph{public: int **edge;//边,值为权值 int *low;//最小权值 int *mark;//记录结点是否被标记 int ve原创 2013-12-07 14:14:21 · 454 阅读 · 0 评论 -
最短路径——Floyd
头文件"AdjGraph.h"#include#include#define INFINITY 0x3f3f3f3fusing namespace std;class AdjGraph{public: int **edge;//边的权 int **path;//path[v][u]的值表示从v到u的最短路径中,中间编号不大于vertexNum的u的前驱顶点编号 int ver原创 2013-12-08 16:43:25 · 487 阅读 · 0 评论 -
拓扑排序——判断有向图是否存在回路
头文件"AdjGraph.h"#include#define VISITED 1#define UNVISITED 0#define EXIST 1#define INEXIST 0using namespace std;class AdjGraph{public: int **edge; int *mark; int *indegree; int vertexNum,原创 2013-12-15 18:53:03 · 2153 阅读 · 0 评论