【问题标题】:How to select elements in a Quick union operation?如何在快速联合操作中选择元素?
【发布时间】:2019-11-12 18:01:22
【问题描述】:

有一组元素 S = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}。这里有 10 个元素 (N = 10)。一个数组 arr 来管理元素的连接性。 Arr[ ] 由集合的元素索引,大小为 N(作为集合中的 N 个元素),用于管理并集和查找的操作。

https://www.hackerearth.com/practice/data-structures/disjoint-data-strutures/basics-of-disjoint-data-structures/tutorial/

我无法理解的是如何选择元素以开始联合操作?在这个链接(上面提到的)中,联合以 (2,1) 开头,我可以使用任何两个元素吗?说(1,8)?如果我从选择不同的元素(Union(2,1) 除外)开始,我似乎没有得到与图像中解释的相同的树。

【问题讨论】:

    标签: data-structures disjoint-sets union-find


    【解决方案1】:

    您通常会根据您正在解决的任务的要求执行 UnionFind 操作。例如,测试无向图是否包含环的一种方法是逐条考虑其边。在考虑边(u, v)时,我们:

    1. 提出问题:uv 是否已经连接?这转化为两个操作,Find(u) 和 Find(v)。如果Find(u) = Find(v),那么边(u, v) 是循环的一部分,算法以“是”的答案终止。
    2. uv(连同它们各自的集合)标记为已连接,以便它们以后不再连接。这转化为操作 Union(u, v)。

    最后,如果没有找到循环,则算法以“否”的答案终止。

    【讨论】:

    • @Cātālin 感谢您的回复,随着我攻读硕士学位,我才刚刚开始深入了解 DSA。我目前正在关注 robert sedgewick 在 Coursera 上的算法第 1 部分课程。由于我是非 CS 学生(本科),课程的内容和方法经常让我感到困惑。
    猜你喜欢
    • 2011-10-16
    • 1970-01-01
    • 2015-07-14
    • 2019-11-23
    • 2011-11-30
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    相关资源
    最近更新 更多