我有以下数据集
if
现在如何使用union-find确定5是否与7相关?有人请指导我。
答案 0 :(得分:1)
您不必在此使用Union-Find
。您可以使用基本DFS
标记一个连接组件中的每个访问顶点,以及在此组件中从中开始DFS
的顶点的索引。此方法在输入大小方面是线性的,因此它总是比Union-Find
的任何实现都快。
但是,如果您希望Union-Find
按照输入中的每个边x-y
进行操作,请致电Union(x, y)
。在处理完所有边之后,如果要查明顶点a是否与a
顶点b
相关,即是否存在由a
开始的边连接的顶点序列,以b
结尾,只需检查是否Find(a) == Find(b)
。此方法的复杂性取决于您实现Union-Find数据结构的方式。最佳实现实现了几乎线性的时间,实际上这被认为是线性算法。