Java 算法:(有权图)最小生成树问题

以下面相互联通的带权图为例:

Java 算法:(有权图)最小生成树问题_第1张图片

一张图如果有V个节点的话,相应的有V - 1条边,V-1条边连接了V个节点,就说它是这个图的生成树。

生成树连接图中的所有节点。

最小生成树:生成树所有边的权值相加是最小的、针对带权无向图、连通图。

应用:电缆的布线设计、网络设计、电路设计。

 

设计思路:找V-1条边,连接V个顶点,总权值最小。

 

切分定理(Cut Property):

1.把图中的节点分成两部分,成为一个切分(Cut)。

Java 算法:(有权图)最小生成树问题_第2张图片

对于图有很多种切分方式,图上只是其中一种。

2.如果一个边的两个端点属于切分不同的两边,这个边称为横切边。

图中的蓝色边就是横切边:

Java 算法:(有权图)最小生成树问题_第3张图片

例如下图中的蓝色部分与红色部分就是图的切分:

 

切分定理:

给定任意切分,横切边中权值。

最小的边必然属于最小生成树。

 

图中发现蓝色边有权值最小的:(用红色标记)

Java 算法:(有权图)最小生成树问题_第4张图片

当对两个相连的节点存在最小生成边,但是此时的边又不是最小的,当求出两个边的最小生成边时,两条边就形成了一个环,生成树不能有环,此时就可以删除那条不是最小的边即可。

Java 算法:(有权图)最小生成树问题_第5张图片          将红色边变为蓝色边:       Java 算法:(有权图)最小生成树问题_第6张图片

 

 

 

 

 

你可能感兴趣的:(#,数据结构和算法,大学与Java那些年)