克鲁斯卡尔思路以及代码分析
我们用邻接矩阵来表示该图,克鲁斯卡尔算法思想及找到最小边,查看是否形成回路,若形成回路则这条边不形成,若不形成回路则构成最小路径,以此类推。(思路和代码都在下方)
-
第一步edge{(0,2,1)}
-
-
[ ]第二步 edge{(3,5,2)}
-
第三步edge{(1,4,3)}
-
-
第四步edge{(2,5,4)}
-
第五步edge{(0,3,5)}
i==j 不添加
-
第六步edge{(1,2,5)}
最短路径形成,后面的思路以此类推但是都形成回路。不添加。
- 创建一个Edge数组,存放邻接矩阵的有用数据
typedef struct Edge{
int x;
int y;
int cost;//路径大小
}
int n = g->NumVertices;
Edge *edge = (Edge *)malloc(sizeof(Edge)