最小生成树算法(一)
最小生成树算法(一) 包含了最小生成树的原理、相关证明和Prim算法的C实现
最小生成树算法及C语言实现(一)
本文主要讲述最小生成树的概念和相应的算法原理和证明,包含了Prim算法的C实现,其它实现方式会在“最小生成树算法及C语言实现(二)”中讲到。
最小生成树(Minimum Spanning Tree, MST)对于有向图也是有意义的,但那比较难,下文只讨论无向图的情况。
简单地说,生成树就是使用原来图上的所有或者部分边把图上所有点相连的树。
简单地说,最小生成树就是使用原来图上的所有或者部分边并通过最少的总路径把图上所有点相连(可以间接相连)得到的树。
定理:
生成树存在当且仅当图是连通的。
证明:
如果图不是连通的,则显然不存在最小生成树。对于一个连通的图来说,如果它已经是树,则本身即是一棵生成树,如果它的某部分形成了环,则把相应的环去掉,则可以得到一颗生成树。
定理:
最小生成数存在当且仅当图是连通的。
证明:
由上面的定理可以直接得到。
定理:
一个N个顶点的图的最小生成树的边的数量为N-1。
证明:
最小生成树没有环,所以是一棵树,对于一棵树而言,我们可以选定一个根结点,那么,除了根结点外,其它结点有且仅有一条边连向它的父结点,所以共N-1条边。
同样,为了简单起见,下文假设图是连通的。以下的两个经典算法都是通过贪心算法的原理实现的。贪心算法对于MST是成立的,这在下面会证明。
1.Prim 算法
Prim算法的步骤非常简单:
1.选择任意一个顶点为根,并把它做为一棵树。
2.在任意状态下,选择在树上的一点和不在树上的一点构成的边中最短的一条边使树得以伸长。
定理:
Prim算法可以用于产生MST。
证明:设G是一个连通的具有n个顶点的有权图。我们知道Prim算法最终会生成一棵n个顶点的树(由上述过程,是不会生成环的,因为形成环必然要连接已经在树上的两个结点),不妨记N-1条边为E1,E2,E3,...,En-1,其中序号沿着树生成时的每条边产生的序号。我们再记Sk为E1,E2,E3,...,EK(k是一个变量,可以进行取值)构成的树。我们再记一棵和S最相接近的最小生成树T(即两者包含的边尽量一致),它包含了E1,E2,E3,...,EK这几条Sk的边(如
你可能喜欢
- 最小生成树算法实现
- 算法合集
- 数据结构实验报告
- 最短路径算法
- 设计问题
- 道路设计
- 路线优化
- 拓扑排序算法
- 用c语言实现prim算法k算法生成最小主树3页
- 最小生成树的Kruskal算法实现5页
- 最小生成树算法的快速实现2页
- 最小生成树算法实现2页
- 分别利用prim算法和kruskal算法实现求图的最小生成树9页
- 遗传算法最小生成树的实现13页
- 经典ACM算法合集经典ACM算法合集14页
- 遗传算法合集3页
- 算法合集之《信息学竞赛中的思维方法》8页
- 算法合集之《偶图的算法及应用》13页
- 算法合集之《遗传算法的特点及其应用》21页
- 算法合集之《论对题目中算法的选择》4页
- 数据结构实验报告13页
- 数据结构课程设计实验报告8页
- 数据结构实验报告4页
- 《数据结构》栈和队列实验报告11页
- 数据结构实验报告一—约瑟夫环问题3页
- 《数据结构 》实验报告格式4页
- matlab最短路径算法17页
- 平面移动机器人最短路径规划的几何算法研究5页
- 无回路网络最短路径的一种新算法5页
- 【数据结构算法】实验8 图的最短路径问题(附源代码)11页
- 并行最短路径搜索算法的设计与实现3页
- 基于改进蚁群算法的最短路径问题研究4页
- 实验表格的设计问题3页
- 实验设计型问题4页
- 第42课 方案设计型问题44页
- 畜牧场规划与设计存在的问题及解决措施4页
- 建筑消防设计中常见问题10页
- 方案设计型问题4页
- 浅谈园林道路规划设计5页
- 浅谈城市道路设计5页
- 城市道路施工组织设计50页
- 城市道路设计37页
- 道路施工组织设计(福州地区大学城溪源江路道路工程)66页
- 道路设计任务书14页
- 物流中配送路线选择的优化分析3页
- 配送路线优化18页
- 车辆调度与路线优化1页
- 配送路线优化模型研究2页
- 3-1 运输路线优化14页
- 运输路线优化16页


