当前课程知识点:算法设计与分析 > 4 Greedy Algorithms > 4.7 Minimum Spanning Tree > Minimum Spanning Tree
这节我们来学习最小支撑树
给定一个连通图G=(V,E)
令边e的权重为c_e
包含所有节点的树
我们称为一棵支撑树
所有支撑树中
其包含的边总权重最小的树
称为最小支撑树
简称为MST
在下面这个例子中
选择所标示的这几条边
我们得到一个目标值为50的支撑树
最小支撑树问题
是一个基本问题
有众多的理论和实际应用
比如说在网络设计中
电话 电视的电路设计
电脑线路布局
道路设计等
都存在最小支撑树问题
它还广泛应用于一些
困难问题的算法设计分析中
比如说旅行商问题 斯坦纳树问题等
它还有很多并不明显的应用
比如说
在我们后面要介绍的聚类分析中
也有最小支撑树的应用
我们将介绍两个算法
Kruskal算法和Prim算法
它们都是基于贪婪策略
Kruskal算法
首先令T是空集
它把边按照权重升序排列
对于当前的边
如果和T中的边不形成圈的话
就把它加入到T
我们来演示一下Kruskal算法
把边按照权重升序排列
依次考虑各条边
如果加入后不形成一个圈的话
那么就加入这条边
否则就考虑下一条边
我们先把长度为1的边加入
再加入长度为2的边
长度为3的边和4的边
在这个过程中都没有形成圈
当考虑加入长度为5的边时
形成了圈
那么考虑下一条长度为6的边
加入后仍然形成圈
再考虑下一条长度为7的边
不形成圈
加入该边
此时已加入了5条边
已得到了支撑树
而之后的长度为8和9的边加入后
都形成了圈
最后算法得到的最小支撑树如图
Prim算法
它令某一个节点s为根节点
从s出发贪婪地生成树T
在每一步
它从恰好有一个端点在T中的边中
选取权重最小的边加入到T
我们来演示一下Prim算法
令任意一个节点s为根节点
从s出发贪婪地生成树T
在每一步
它从恰好有一个端点属于T的边中
选取权重最小的边加入T
如图 我们选中所标示的节点
关联的3条边的长度为3,5,11
最小的边长为3
把这条边加入T中
此时 恰好有一个端点属于T的边有5条
最小的长度为5
把该边加入
继续进行
相关联的边中
最小长度为2
加入这条边
然后 最小长度依次为7,1,4,9
加入这几条边
得到了最小支撑树
我们说
这些算法都能够产生最小支撑树
为了证明算法的正确性
我们需要圈和割这两个图中的基本概念
圈是一条首尾相连的路
而且中间的节点没有重复
也可以看成是一些首尾相连的边的集合
比如 在这个图中
圈C包含边1-2,2-3,3-4,4-5,5-6,6-1
定义割S是点的一个子集
所有恰好有一个端点在S中的边构成的集合
称为S对应的割集
比如这个图中 我们取S={4,5,8}
那么它对应的割集为5-6,5-7,3-4,3-5,7-8
对于圈和割集
有这样简单的性质
圈和割集的交集一定包含偶数条边
给定圈C和割S
如图 我们可以看出
圈C中的边
离开集合S和进入集合S的次数一定是相等的
所以 C和S对应的割集的交集中
一定包含偶数条边
-1.1 Introduction
-1.2 A First Problem: Stable Matching
--A First Problem: Stable Matching
-1.3 Gale-Shapley Algorithm
-1.4 Understanding Gale-Shapley Algorithm
--Understanding Gale-Shapley Algorithm
-Homework1
-Lecture note 1
--Lecture note 1 Introduction of Algorithm
-2.1 Computational Tractability
-2.2 Asymptotic Order of Growth
-2.3 A Survey of Common Running Times
--A Survey of Common Running Times
-Homework2
-Lecture note 2
--Lecture note 2 Basics of Algorithm Analysis
-3.1 Basic Definitions and Applications
--Basic Definitions and Applications
-3.2 Graph Traversal
-3.3 Testing Bipartiteness
-3.4 Connectivity in Directed Graphs
--Connectivity in Directed Graphs
-3.5 DAG and Topological Ordering
--DAG and Topological Ordering
-Homework3
-Lecture note 3
-4.1 Coin Changing
-4.2 Interval Scheduling
-4.3 Interval Partitioning
-4.4 Scheduling to Minimize Lateness
--Scheduling to Minimize Lateness
-4.5 Optimal Caching
-4.6 Shortest Paths in a Graph
-4.7 Minimum Spanning Tree
-4.8 Correctness of Algorithms
-4.9 Clustering
-Homework4
-Lecture note 4
--Lecture note 4 Greedy Algorithms
-5.1 Mergesort
-5.2 Counting Inversions
-5.3 Closest Pair of Points
-5.4 Integer Multiplication
-5.5 Matrix Multiplication
--Video
-5.6 Convolution and FFT
-5.7 FFT
--FFT
-5.8 Inverse DFT
-Homework5
-Lecture note 5
--Lecture note 5 Divide and Conquer
-6.1 Weighted Interval Scheduling
--Weighted Interval Scheduling
-6.2 Segmented Least Squares
-6.3 Knapsack Problem
-6.4 RNA Secondary Structure
-6.5 Sequence Alignment
-6.6 Shortest Paths
-Homework6
-Lecture note 6
--Lecture note 6 Dynamic Programming
-7.1 Flows and Cuts
-7.2 Minimum Cut and Maximum Flow
--Minimum Cut and Maximum Flow
-7.3 Ford-Fulkerson Algorithm
-7.4 Choosing Good Augmenting Paths
--Choosing Good Augmenting Paths
-7.5 Bipartite Matching
-Homework7
-Lecture note 7
-8.1 Polynomial-Time Reductions
-8.2 Basic Reduction Strategies I
--Basic Reduction Strategies I
-8.3 Basic Reduction Strategies II
--Basic Reduction Strategies II
-8.4 Definition of NP
-8.5 Problems in NP
-8.6 NP-Completeness
-8.7 Sequencing Problems
-8.8 Numerical Problems
-8.9 co-NP and the Asymmetry of NP
--co-NP and the Asymmetry of NP
-Homework8
-Lecture note 8
--Lecture note 8 NP and Computational Intractability
-9.1 Load Balancing
-9.2 Center Selection
-9.3 The Pricing Method: Vertex Cover
--The Pricing Method: Vertex Cover
-9.4 LP Rounding: Vertex Cover
-9.5 Knapsack Problem
-Homework9
-Lecture note 9
--Lecture note 9 Approximation Algorithms
-10.1 Landscape of an Optimization Problem
--Landscape of an Optimization Problem
-10.2 Maximum Cut
-10.3 Nash Equilibria
-10.4 Price of Stability
-Homework10
-Lecture note 10
--Lecture note 10 Local Search
-11.1 Contention Resolution
-11.2 Linearity of Expectation
-11.3 MAX 3-SAT
-11.4 Chernoff Bounds
-Homework11
-Lecture note 11
--Lecture note 11 Randomized Algorithms
-Exam