无向图基本算法 -- 遍历及最小生成树算法
2012-08-25 17:21
281 查看
1. 无向图图的表示
2. 无向图遍历算法
3. 最小生成树算法
4. 代码下载
在表示最小生成树之前,首先定义最小生成树。设图G= (V, E),对于其中的每条边(u, v) 属于E,定义函数w(u, v)为连接u和v的代价,定义最小生成树T(E的子集),T连接所有的顶点,并且权值最小。
3.2 算法思想
最小生成树的基本算法采用“贪心策略”。我们初始化一个集合T,然后在每次迭代保证向T中加入边后,A仍然能够保证最小特性。算法的思想基本如下:
那么现在剩下了一个问题,如何得到上面算法中的(u, v),保证A仍然是最小生成树的一部分。这里用到了“割”的概念。无向图G=(V, E)的一个割是V的一个划分,如下。
如果一条边是通过某个“割”的所有边的最小边的话,就是我们上面寻找的(u, v)。 下面的两种算法Krukal和Prim算法都是对上面算法思想的具体实现。
3.3 Krukal算法
Krukal算法首先通过对图中的所有边递增排序,检查顶点u和v是否属于同一棵树,如果不是将u和v合并,最终形成最小生成树。对于下面的无向图生成算法顺序如下:
3.4 Prim算法
个人感觉Prim算法相对于上面算法是比较好理解的。该算法首先从一个顶点开始,寻找还未在最小生成树中的顶点,并且该顶点对于该最小生成树是“安全”的,将该顶点添加到最小生成树中。伪代码如下:
这里面需要注意的是上面需要使用最小优先级队列Q,由于在.net类库中不存在相应的模板类,需要自己实现,可以使用这个版本:/Files/xuqiang/PriorityQueue.rar
/article/6798120.html
2. 无向图遍历算法
3. 最小生成树算法
4. 代码下载
1. 无向图表示
下面的代码中使用的无向图的表示方法和有向图中表示相同。如下:2.无向图遍历算法
无向图的遍历算法和有向图是类似,具体可以常见上一篇有向图的介绍。3. 最小生成树算法
3.1 基本概念在表示最小生成树之前,首先定义最小生成树。设图G= (V, E),对于其中的每条边(u, v) 属于E,定义函数w(u, v)为连接u和v的代价,定义最小生成树T(E的子集),T连接所有的顶点,并且权值最小。
3.2 算法思想
最小生成树的基本算法采用“贪心策略”。我们初始化一个集合T,然后在每次迭代保证向T中加入边后,A仍然能够保证最小特性。算法的思想基本如下:
那么现在剩下了一个问题,如何得到上面算法中的(u, v),保证A仍然是最小生成树的一部分。这里用到了“割”的概念。无向图G=(V, E)的一个割是V的一个划分,如下。
如果一条边是通过某个“割”的所有边的最小边的话,就是我们上面寻找的(u, v)。 下面的两种算法Krukal和Prim算法都是对上面算法思想的具体实现。
3.3 Krukal算法
Krukal算法首先通过对图中的所有边递增排序,检查顶点u和v是否属于同一棵树,如果不是将u和v合并,最终形成最小生成树。对于下面的无向图生成算法顺序如下:
3.4 Prim算法
个人感觉Prim算法相对于上面算法是比较好理解的。该算法首先从一个顶点开始,寻找还未在最小生成树中的顶点,并且该顶点对于该最小生成树是“安全”的,将该顶点添加到最小生成树中。伪代码如下:
这里面需要注意的是上面需要使用最小优先级队列Q,由于在.net类库中不存在相应的模板类,需要自己实现,可以使用这个版本:/Files/xuqiang/PriorityQueue.rar
4. 代码下载
/Files/xuqiang/UnDirectedGraphTest.rar作者:许强1. 本博客中的文章均是个人在学习和项目开发中总结。其中难免存在不足之处 ,欢迎留言指正。 2. 本文版权归作者和博客园共有,转载时,请保留本文链接。
/article/6798120.html
相关文章推荐
- 无向图基本算法 -- 遍历及最小生成树算法
- 图基本算法:深度广度遍历最小生成树
- 《算法导论》笔记(12) 基本的图算法,最小生成树
- [数据结构]--图(图的遍历,最小生成树,最短路径算法)
- 最小生成树,最短路径的基本算法
- 图的基本操作(遍历,寻找最短路径,最小生成树)
- 数据结构:图——图的遍历、最小生成树、最短路径算法
- 图(有向图,无向图)的邻接矩阵表示C++实现(遍历,拓扑排序,最短路径,最小生成树) Implement of digraph and undigraph using adjacency matrix
- 最小生成树的两种最基本的算法
- 图的基本算法(最小生成树)
- 算法:图(Graph)的遍历、最小生成树和拓扑排序
- 图的基本算法(最小生成树)
- 图的广度遍历、深度遍历及最小生成树书算法(Prim、Kruskal)
- hdu1233 还是畅通工程(两种基本最小生成树算法)
- 图基本算法 最小生成树 Prim算法(邻接表/邻接矩阵+优先队列STL)
- 最小生成树基本算法---算法导论读书笔记
- 图基本算法 最小生成树 Prim算法(邻接表/邻接矩阵+优先队列STL)
- 【无浪】无向图论_最小生成树三种算法
- 最小生成树的两种算法及模版整理
- 最小生成树算法之prim算法