关于最小生成树Dijkstra算法
cdai 博客专家认证 2007-06-26 10:21:01 DijkstraMethod(加权连通无向图 graph)
tree = NULL;
edges = graph中所有边的一个未排序序列
for j=1 to |E|
将Ej加入到tree中
if tree中有环
从环中删除权值最大的边
(机械工业出版社的《数据结构与算法-c++版》)
不是kruskal和prim。我已经完成了算法大部分,只是在如何删除环路中权重最大边上有困难。
我编写Set集合类来判断是否有回路,比如加入边(1,2) 再加入(2,3) 那么此时集合为(1->2->3),当再加入(1,3)时 发现点1和点3的“根”都是1 所以产生环用在Kruskal上很好
可是dijkstra算法要求不断向生成树中加入边 出现回路则删除权重最大边 可Set类纪录的只是哪些顶点属于同一集合 并不能知道这个集合包括哪些边。