网络优化2|最小生成树|Kruskal|Prim|Matlab

最小生成树问题

连通图G=(V,E)G=(V,E)G=(V,E),若G中不含任何回路,则称G为树。
∣V∣=1|V |=1V=1时称之为平凡树
![[Pasted image 20240826122021.png]]

生成树

G=(V,E)G=(V,E)G=(V,E),若G的一个生成子图是一棵树,则称之为G的一棵生成树,或者支撑树
![[Pasted image 20240826122236.png]]

定理

任何连通图至少有一棵生成树
![[Pasted image 20240826122331.png]]

最小生成树

无向图G的所有生成树中,边的权值总和最小的称为G的最小生成树,或最短树
![[Pasted image 20240826122525.png]]

性质

假设一个图中存在最小生成树,并且该图具有n个节点,m条边,则该图的最小生成树一定含有n个节点,并且具有n-1条边

最小生成树构造方法
  1. Kruskal算法
    每次选择一条最小且不会构成回路权边直至构成一个生成树
  2. Prim算法
    从一个结点的子图开始构造生成树:
    选择连接当前子图和子图外结点的最小权边,将相应结点和边加入子图,直至将所有结点加入子图。

构造最小生成树Kruskal算法

Kruskal算法基本思想
  1. 按所有边权值排序,升序(从小到大)
  2. 按排好序的边集合,选择一条边加入生成树
    贪心准则:不会产生环路
    按耗费递增顺序考察每条边
  • 若产生环路,丢弃
  • 否则,加入
Kruskal算法示例

![[Pasted image 20240826124506.png]]

B=(112234452334556612354321) B=\begin{pmatrix} 1&&1&&2&&2&&3&&4&&4&&5 \\ 2&&3&&3&&4&&5&&5&&6&&6 \\ 1&&2&&3&&5&&4&&3&&2&&1 \end{pmatrix} B= 121132233245354

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值