Categorygithub.com/szhou12/leetcode-goleetcode1489-Find-Critical-and-Pseudo-Critical-Edges-in-Minimum-Spanning-Tree
package
0.0.0-20241220224003-b7cf03a90b2b
Repository: https://github.com/szhou12/leetcode-go.git
Documentation: pkg.go.dev
# README
1489. Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree
Solution idea
MST = Union Find + Kruskal
思路总结
- 这道题要求找MST中两种有特殊性质的边,容易想到类似的题目 - 找redundant edge。怎么做?
- 大致想法是:先用 Kruskal 算法出全局最小的MST,然后逐条边检验,与全局最小的 MST做比较,找出符合要求的边。
- 大致的框架有了,下一步是怎么找出符合要求的边?
- 重中之重是明确 关键边 (critical edge) 和 伪关键边 (pseudo-critical edge) 的定义,并分析出两者之间的关系。
- 关键边 (critical edge):
- 题目中给的定义是: An MST edge whose deletion from the graph would cause the MST weight to increase.
- 怎么结合全局最小MST进行理解?
- Delete this edge, we will end up with a larger-valued MST.
- 删除了这条边,我们无法得到 全局最小MST。
- 隐含暗示:这条边必然是构建 全局最小MST 的边之一。全局最小MST一定用了这条边。
- 伪关键边 (pseudo-critical edge):
- 题目中给的定义是: a pseudo-critical edge is that which can appear in some MSTs but not all.
- 什么意思?也就是说,可以找到“平替”
- 怎么结合全局最小MST进行理解?
- Delete this edge, we will end up with a same-valued MST.
- 删除了这条边,我们依然用一个"平替"得到 全局最小MST。
- 隐含暗示:这条边对于构建 全局最小MST 是可有可无的。全局最小MST可能用了这条边,也可能没用,但是一个可用的候补。
- 明确了定义,我们可以总结出它们之间的关系:
- 关键边 (critical edge) 和 伪关键边 (pseudo-critical edge) 是 互斥 的。
- 一条边 如果是关键边,那它就一定不是 伪关键边;反之亦然。
- 如果把 可以参与构建全局最小MST的边(所有的候补选手) 看作一个集合,那么 关键边集合 和 伪关键边集合 是互补关系。
Resource
【每日一题】1489. Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree, 9/14/2020