我的目标是手动写出快速查找算法的步骤,以充分理解这个概念。我的问题是,我不理解决定是否检查两个对象是否连接的顺序。我指的是普林斯顿大学对我发现的这个算法的解释:http://www.cs.princeton.edu/~rs/AlgsDS07/01UnionFind.pdf
为什么要决定检查id3和id6是否相等?
这可能是错误的方法,但我想使用算法来通过比方说6个联合步骤来形成一个集合。
为此,我将使用以下集合和联合步骤...
[0,1,2,3,4,5,6,7,8,9]
9-0 4-6 2-1 7-6 2-3 4-9
步骤1:9-0
[0,1,2,3,4,5,6,7,8,0]
步骤2:4-6
[0,1,2,3,6,5,6,7,8,0]
步骤3:2-1
[0,1,1,3,6,5,6,7,8,0]
第4步:7-6
[0,1,1,3,6,5,6,6,8,0]
步骤5:2-3
[0,3,3,3,6,5,6,6,8,0]
步骤6:4-9
[0,3,3,3,0,5,0,0,8,0]
有人能确认或否认这一点的正确使用吗?谢谢!
发布于 2014-06-10 14:06:27
你对序列的解释是正确的。
Quick Find
逻辑如下:
Find
检查p和q是否具有相同的id。
Union
要合并包含p和q的组件,请将具有idp的所有条目更改为idq
回答你的问题
为什么要决定检查id3和id6是否相等?
这是因为定义内部数组的方式。如果3和6具有相同的条目,则它们被定义为已连接的。
https://stackoverflow.com/questions/24128328
复制相似问题