【发布时间】:2019-02-02 14:23:06
【问题描述】:
我正在从this geeksforgeeks article 学习 Kruskal 的 MST。给出的步骤是:
按权重的非递减顺序对所有边进行排序。
选择最小的边。检查它是否与到目前为止形成的生成树形成一个循环。如果没有形成循环,则包括该边。否则,丢弃它。
重复步骤 (2),直到生成树中有 (V-1) 条边。
我真的觉得没有必要使用不相交集。代替检查循环,我们可以将顶点存储在访问数组中,并在选择边缘时将它们标记为真。如果我们发现一条边的两个顶点都在访问数组中,则循环通过程序,我们将忽略该边。
换句话说,我们不能存储一个位数组,而不是存储一个不相交的森林,而是存储一个位数组,指示哪些顶点在之前的某个步骤中已链接到另一条边?
【问题讨论】:
标签: algorithm minimum-spanning-tree kruskals-algorithm