前言
好的编程是要爬上抽象的阶梯才能到达最通用的解决方案
如这句话所言,最小生成树其实是一个相对比较抽象的概念,它是针对于图的概念,因为树是一种特殊的图,下面将详细讲解最小生成树的概念及三种求最小生成树的方法,思路都十分简单。
目录
正文
---最小生成树的概念
首先,要了解最小生成树,我们知道什么是图和树,如上文所说的,树是一种特殊的图,所以,此处我们先来看图的概念。
先来看严格定义:
图是由顶点的有穷非空集合V ( G ) 和顶点之间边的集合E ( G ) 组成,通常表示为: G = ( V , E ) ,其中,G表示个图,V是图G中顶点的集合,E是图G中边的集合。若V = { v 1 , v 2 , . . . , v n } ,则用∣ V ∣表示图G 中顶点的个数,也称图G的阶,E = { ( u , v ) ∣ u ∈ V , v ∈ V } ,用∣ E ∣表示图G 中边的条数。
看起来是不是很复杂,其实如果简单的来说,就是在一堆顶点之间连边,根据图的种类的不同,图也有很多不同的形式,一般来说,根据边的不同来分类有如下几类(可以结合图片理解):(但要特别注意,图不能是空的)
1.有向图(即边有方向意义的图)
2.无向图(即边无方向意义的图,也可以理解为双向)
3.带权图(即边有权值的图)
4.连通图(即所有点相连的图)
5.强连通图(本身是有向图且是连通图)
而在最小生成树中,最重要的其实是第三种,带权图,但是在了解最小生成树之前,我们要先了解什么是树。
定义很简单: