请举一个kruskal算法的例子
时间: 2023-12-18 19:19:08 浏览: 58
好的,我们来看一个简单的 Kruskal 算法的例子:
假设有如下无向带权图,其中节点用字母表示,边上的数字表示边的权值。
```
7
A-----B
/| |\
5 | | 9
\| |/
C-----D
6
```
首先,将所有边按照权值从小到大排序,得到如下边序列:
```
AC: 5
AB: 7
CD: 6
BC: 9
AD: 8
BD: 9
```
然后,从权值最小的边 AC 开始,将其加入生成树中。此时,生成树包含了节点 A 和节点 C,边权和为 5。
```
7
A-----B
/
5
\
C
```
接着,考虑下一条边 AB。由于 AB 的两个端点 A 和 B 不在同一个连通分量中,因此将其加入生成树中。此时,生成树包含了节点 A、B 和节点 C,边权和为 12。
```
7
A-----B
/ /
5 /
\ /
C
```
然后,考虑下一条边 CD。由于 CD 的两个端点 C 和 D 不在同一个连通分量中,因此将其加入生成树中。此时,生成树包含了节点 A、B、C 和节点 D,边权和为 18。
```
7
A-----B
/ / \
5 / \
\ / \
C-----D
6
```
接着,考虑下一条边 BC。由于 BC 的两个端点 B 和 C 在同一个连通分量中,因此不将其加入生成树中。
然后,考虑下一条边 AD。由于 AD 的两个端点 A 和 D 不在同一个连通分量中,因此将其加入生成树中。此时,生成树包含了所有节点,边权和为 26。
```
7
A-----B
/ / \
5 / \
\ / \
C-----D
6
```
因此,最小生成树为:
```
7
A-----B
/ / \
5 / \
\ / \
C-----D
6
```
边权和为 26。
阅读全文