博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最小生成树算法讨论(转)
阅读量:4585 次
发布时间:2019-06-09

本文共 680 字,大约阅读时间需要 2 分钟。

一些定义:

1.一个连通且无回路的无向图称为树.
2.若图G的生成子图是一棵树,则该树称为G的生成树.
3.在图G的所有生成树中,树权最小的那棵生成树,称作最小生成树.
关于找出最小生成树的两种算法,一个称为Kruskal(克鲁斯卡尔),另一个叫Prim(普里姆)
(1) Kruskal 算法
  step1:  选取最小权边e1, 置边数i=1
  step2:  若 i=n-1 结束,否则转到step3
  step3:  设已选择边为e1,e2,...ei  在 G中选取不同于e1,e2,...,ei的边, 使{e1,e2,...,ei,ei+1}中无回路且ei+1是满足此条件的最小边.
  step4: i= i+1 转 step2
 
一句话记住此算法: 在保证无回路前提下选n-1条最小权边.
如下图演示了此算法.
(2) Prim算法(普里姆算法)
   step1: 找出存在最小权边的点.
   step2: 若所有顶点已经过完,则结束.否则跳step3
   step3: 通过已存在的点构成的树来计算出此树到其它未到达的点的最小权.
   step4: 选取step3中标记的最小权边的顶点.转至step2.
注:此步骤为自己总结的,如有错误请指正.^_^
比较优劣:
从二者的原理来看,Kruskal是基于边的算法,Prim是基于顶点的.因此对于一个边数很多的图,用Kruskal算法不明智.而顶点多边少的图用Kruskal效率多了

(转)

转载于:https://www.cnblogs.com/WayneZeng/archive/2012/10/23/2735502.html

你可能感兴趣的文章
洛谷——P1802 5倍经验日
查看>>
leetcode121—Best Time to Buy and Sell Stock
查看>>
【系统优化】为系统提速,何须重装
查看>>
让Chrome 接管邮件连接,收发邮件更方便了
查看>>
cmd 编码 utf8
查看>>
jquery-file-upload demo
查看>>
第一期_Nor Flash
查看>>
oracle 10g
查看>>
ecshop那些事
查看>>
Oracle复制表结构及数据
查看>>
javaweb实现添加课程
查看>>
andriod jbox2d学习笔记二 通过移动关节移动body
查看>>
python列表-简单操作
查看>>
NYOJ题目97兄弟郊游问题
查看>>
IIS web.config拒绝访问 未能开始监视对 XX 文件的更改
查看>>
Opengl编程指南第二章:状态管理、几何绘图
查看>>
二分查找——算法系列
查看>>
python中的命名
查看>>
读书印记 - 《大学潜规则:谁能优先进入美国顶尖大学》
查看>>
DFS Codeforces Round #306 (Div. 2) B. Preparing Olympiad
查看>>