Menu
CoddyTech

它是如何工作的?

Coddy 克鲁斯卡尔算法:图算法 课程的第 3 课,共 9 课。

并查集维护一个 parent 数组。每个顶点一开始都是自己的根节点。两个操作就能完成所有工作:

  • find(x):沿着 parent 链接一直查找,直到到达根节点(一个以自身为父节点的顶点)。两个顶点共享同一个根节点时,它们就是连通的。
  • union(a, b):将一个根节点指向另一个根节点,合并这两个集合。

Kruskal 算法:

  1. 按边的权重从小到大处理边。
  2. 对于每条边,使用 find 查找其端点的根节点。如果根节点不同,这条边就连接了两个不同的部分:使用 union 合并它们,并将这条边的权重加到总和中。
  3. 如果根节点相同,这条边会形成一个环,因此跳过它。

处理完所有边后,选出的边构成 MST(对于连通图,恰好有 n - 1 条边)。

亲手试试

这节课没有代码挑战。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

克鲁斯卡尔算法:图算法中的所有课

自己练习: C 在线编译器