最小生成树

Defination

给一个无向连通图,生成一颗边权和最小的树


Algorithm

Prime: 看作两个集合,每次找出集合间最小的边选入,把对应点选入。
该算法中,“集合”和“讨论集合之间的边”的思路很妙,在删边最短路和删点最短路中都有运用。

kruskal:sort边,从小到大加入。


Application

1.martix tree 定理 (咕咕)

2.对算法的思考:每一条边的地位相同,只是边权不同。本质贪心。

3.瓶颈路:做一遍最小/大生成树,倍增找路径上最大/小的边。本质贪心。
-应用:(不一定要把整棵树建出来)noip模拟T2

4.数据结构优化 动态加边/删边(只删/只加)。若形成环,该边可以替代环上任意一条边,然后 lct/树剖 维护最值即可。 删边 / 任意删边

5.动态合并(每次合并相关点数较小): 一条边试探加入,只会影响所成环上的所有边。更具体的,是环上的最值边。所以建一个有关端点的虚树,把边权压缩成两点间的最值边,每次把虚树上的边和待试探边拿来kruskal即可。sdoi2019世界地图

6.二分check。生成树在一些情况下具有单调性。如(最优比例生成树): 做一个0/1分数规划即可。

7.最优乘积生成树 即: m i n i m i z e : ∑ a [ i ] ∗ ∑ b [ i ] minimize:\sum a[i] *\sum b[i] minimize:a[i]b[i]

  • ∑ a [ i ] = x , ∑ b [ i ] = y , \sum a[i]=x,\sum b[i]=y, a[i]=x,b[i]=y, m i n i m i z e : k = x ∗ y minimize :k=x*y minimize:k=xy − > -> > y = k x y={k\over x} y=xk离坐标轴最近。

在这里插入图片描述

A C ‾ ∗ A B ‾ ≥ 0 \overline{AC}*\overline{AB}\ge0 ACAB0
k 1 , A , B ∗ ∑ x [ c ] + k 2 , A , B ∗ ∑ y [ c ] + b A , B ≥ 0 k_{1,A,B}*\sum x[c]+k_{2,A,B}*\sum y[c]+b_{A,B}\ge0 k1,A,Bx[c]+k2,A,By[c]+bA,B0

  • 直接在每一个点的 x x x, y y y上修改,跑最大生成树即可。
    如果没有满足的 C C C,break;
    否则递归{A,C},{B,C},中途取 m i n min min即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值