图算法之最小生成树

连通的无向图G=(V,E)来表示,对于每条边都赋予权重w,希望能找到边的集合是的所有点都能够连接起来,而且这些边的权重能达到最小。

由于这些边是无环的而且能连通所有结点,所以最终构成了一棵树。图G的这棵树叫做生成树,求取该树的问题叫做最小生成树问题。

这里要学习的是Kruskal算法和Prim算法。

这两中算法都是属于贪心算法,其每一步都必须在多个可能的选择中选择一种。

这种策略并不能一定找到一颗权重最小的生成树。

贪心算法在每时每刻都生长最小生成树的一条边,并在整个策略的实施过程中,管理一个遵循下述循环不变式的集合A:

在每遍循环之前,A是某科最小生成树的一个子集。

在每一步之前,都会选择一条不属于集合A的边加入到集合A中,使得A和那条边的新集合仍然是某棵最小生成树的子集。

这种边加入到A中不会破坏掉A的循环不变式,因此也叫做安全边。

下面就是如何找到辨认安全边的规则和利用这种规则构建最小生成树算法。

安全边辨认规则

Kruskal算法

Prim算法

时间: 2024-10-12 08:04:51

图算法之最小生成树的相关文章

【转载】.NET程序员走向高端必读书单汇总

原文:.NET程序员走向高端必读书单汇总 .NET程序员走向高端必读书单汇总 一.知识树 1. 基本能力 1.1 数学 1.2 英语 1.3 语言表达 2. 计算机组织与体系结构 3. 算法与数据结构 4. 操作系统 5. 计算机网络 6. 信息管理 7. 开发语言及框架(以.net平台为例) 8. 软件工程 二.学习方法 三.后记 如今程序开发工作越来越简单(丰富的API.智能的IDE.越来越多的开发框架),普通人通过简单的训练,通过组合和复制就能完成众多程序的功能.因此程序员这种过去高技术职

.NET程序员走向高端必读书单汇总

.NET程序员走向高端必读书单汇总 .NET程序员走向高端必读书单汇总 一.知识树 1. 基本能力 1.1 数学 1.2 英语 1.3 语言表达 2. 计算机组织与体系结构 3. 算法与数据结构 4. 操作系统 5. 计算机网络 6. 信息管理 7. 开发语言及框架(以.net平台为例) 8. 软件工程 二.学习方法 三.后记 如今程序开发工作越来越简单(丰富的API.智能的IDE.越来越多的开发框架),普通人通过简单的训练,通过组合和复制就能完成众多程序的功能.因此程序员这种过去高技术职业的代

vijos--繁华的都市

描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条道路相连接.这些道路是双向的,且把所有的交叉路口直接或间接的连接起来了.每条道路都有一个分值,分值越小表示这个道路越繁忙,越需要进行改造.但是市政府的资金有限,市长希望进行改造的道路越少越好,于是他提出下面的要求:1.改造的那些道路能够把所有的交叉路口直接或间接的连通起来. 2.在满足要求1的情况下,改

【图算法】综述

from wiki:   图算法 基本遍历 深度优先搜索 · 广度优先搜索 · A* · Flood fill 最短路径 Dijkstra · Bellman-Ford · Floyd-Warshall · Kneser图 最小生成树 Prim · Kruskal 强连通分量 Kosaraju算法 · Gabow算法 · Tarjan算法 图匹配 匈牙利算法 · Hopcroft–Karp · Edmonds's matching 网络流 Ford-Fulkerson · Edmonds-Kar

【每日算法】图算法(遍历&MST&最短路径&拓扑排序)

图有邻接矩阵和邻接表两种存储方法,邻接矩阵很简单,这里不讨论,下面我们先看看常用的邻接表表示方法. 邻接表常用表示方法 指针表示法 指针表示法一共需要两个结构体: struct ArcNode //定义边表结点 { int adjvex: //邻接点域 ArcNode* next; }; struct VertexNode //定义顶点表结点 { int vertex; ArcNode* firstedge; }; 每个节点对应一个VertexNode,其firstedge指向边表(与当前节点邻

图算法

图论问题对计算机科学至关重要,这个我认同,遇到很多的问题都可以归结为图论问题. 图本身是解决连接问题的模型,现实世界中的很多问题都可以用图来建模. 比如说网络,网络对于计算机的重要性不言而喻,图算法可以用来求解很多的网络问题. 树结构可以看成是一种简化的图 图的表示 图的广度优先搜索和深度优先搜索 最小生成树 两结点之间最短路径 网络最大流的计算

补课系列:最小生成树

补课初衷:工作对算法能力的要求越来越高,减少刷剧刷微博的时间.所以想在2018年补基础算法的课,提高自己的同时打发一下时间.不一定在接下来的日子能够补完,看到哪里算哪里. 补课方法:结合应用,论文,数据,慢慢实现慢慢模拟慢慢总结. 内容包括 1.图算法: 2.优化算法: 3.分类/回归算法: 4.频繁项挖掘算法: 5.神经网络算法: 6.概率统计算法: 第一课:最小生成树分割遥感影像. 原文地址:https://www.cnblogs.com/alicia-Programming/p/90538

关于图算法 & 图分析的基础知识概览

网址:https://learning.oreilly.com/library/view/graph-algorithms-/9781492060116/ 你肯定没有读过这本书,因为这本书的发布日期是2019年5月.本文会覆盖该书的大部分内容,读完这篇,你能够了解图算法的基本概念.关于此书,作为市面上为数不多的面向数据科学应用的图算法书籍,写的比较全面系统和易懂.当然,书在细节上的提高空间还有很多.今天内容很多,坐稳~ 目录 图算法 & 图分析 图基础知识 连通图与非连通图 未加权图与加权图 有

次最小生成树 模版

次小生成树(转) 转载(http://www.cnblogs.com/z360/p/6875488.html) 所谓次小生成树,顾名思义就是从生成树中取出的第二小的生成树. 我们在前面已经说过最小生成树的概念及代码实现了,所以接下来要说的次小生成树应该比较简单理解了. 求次小生成树的两种方法 1:首先求出最小生成树T,然后枚举最小生成树上的边,计算除了枚举的当前最小生成树的边以外的所有边形成的最小生成树Ti,然后求最小的Ti就是次小生成树.2:首先计算出最小生成树T,然后对最小生成树上任意不相邻