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