关于最小生成树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类纪录的只是哪些顶点属于同一集合 并不能知道这个集合包括哪些边。
...全文
347 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧