【问题标题】:How dynamic connectivity and union-find related?动态连接和union-find有什么关系?
【发布时间】:2019-12-08 15:04:17
【问题描述】:

根据维基百科:

dynamic connectivity 结构是一种数据结构,可动态维护有关图的连接组件的信息。

还有:

union–find 数据结构是跟踪一组元素的数据结构,这些元素被划分为多个不相交(不重叠)的子集。

乍一看,这些数据结构之间几乎没有什么关系。但几乎每一篇提到动态连接的文章,都会瞥见 union-find。所以,我想知道这两者有什么关系?

【问题讨论】:

  • 我觉得这两个数据结构更像是可以用来查找图的连接相关信息。我怀疑这两种结构之间是否存在任何直接关联。

标签: algorithm data-structures union-find


【解决方案1】:

来自关于dynamic connectivity的维基百科文章:

图的顶点集合 V 是固定的,但边的集合 E 可以改变。这三种情况,按难易程度依次是:

  • 边只添加到图中(这可以称为增量连接);
  • 仅从图中删除边(这可以称为递减连通性);
  • 可以添加或删除边缘(这可以称为完全动态连接)。

联合查找数据结构(也称为disjoint set data structure)可以用于第一种情况。添加边时可以使用union操作来连接两个组件,find操作可以测试两个顶点是否在同一个组件中。但是,union-find 数据结构没有支持删除边的操作,将一个组件拆分为两个新断开的组件;所以它不能用来解决其他两种情况的动态连通性问题。

【讨论】:

  • 这是否意味着联合查找问题是动态连接问题的特例?或者 union-find 是一种解决动态连接问题的方法?
  • Union-find 是解决第一类动态连通性问题的一种方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-12
  • 1970-01-01
  • 2019-01-30
  • 1970-01-01
  • 2011-04-02
  • 2017-03-19
相关资源
最近更新 更多