Questions tagged «union-find»

1
有指导的工会发现
考虑一个有向图在该图上可以动态添加边并进行一些特定的查询。GGG 示例:不相交的森林 考虑以下查询集: arrow(u, v) equiv(u, v) find(u) 第一个向图形添加箭头,第二个确定,最后一个找到等价类的规范表示,即使得表示。ü ↔ * v ↔ * - [R (Û )Ü ↔ * v [R (v )= - [R (Û )u→vu→vu→vu↔∗vu↔∗vu↔^*v↔∗↔∗↔^*r(u)r(u)r(u)u↔∗vu↔∗vu↔^*vr(v)=r(u)r(v)=r(u)r(v)=r(u) 有一种众所周知的算法,它使用不相交集森林数据结构以准恒定的摊销复杂度实现这些查询,即O(α(n))O(α(n))O(α(n))。请注意,在这种情况下,equiv是使用实现的find。 更复杂的变体 现在,我对一个方向很重要的更复杂的问题感兴趣: arrow(u, v) confl(u, v) find(u) 第一个添加箭头,秒确定是否存在从和均可到达的节点,即。最后一个应该返回对象,使得暗示其中应该易于计算。(例如,为了进行计算)。目的是找到一个好的数据结构,使这些操作快速进行。u→vu→vu→vwwwuuuvvvu→∗←∗vu→∗←∗vu→^*←^*vr(u)r(u)r(u)u→∗←∗vu→∗←∗vu→^*←^*vr(u)∙r(v)r(u)∙r(v)r(u) \bullet r(v)∙∙\bulletconfl 周期数 该图可以包含周期。 我不知道是否有一种方法可以有效地和增量地计算强连接的组件,以便仅针对主要问题考虑DAG。 当然,我也希望为DAG提供解决方案。这将对应于最小公共祖先的增量计算。 天真的方法 不相交的森林数据结构在这里没有帮助,因为它忽略了边的方向。请注意,在图形不汇合的情况下,不能是单个节点。r(u)r(u)r(u) 可以定义并在时将定义为。但是如何逐步计算呢?r(u)={v∣u→∗v}r(u)={v∣u→∗v}r(u)=\{v ∣ u→^*v\}∙∙\bulletS1∙S2S1∙S2S_1\bullet S_2S1∩S2≠∅S1∩S2≠∅S_1 ∩ …

2
无等级的联合查找与路径压缩的复杂性
Wikipedia表示不进行路径压缩的按等级合并会产生的摊销时间复杂度,而通过等级压缩和路径压缩会产生的摊销时间复杂度(其中是Ackerman函数的反函数)。但是,它没有提到没有联合等级的路径压缩的运行时间,这就是我通常自己实现的时间。O (α (n ))αO (对数n )O(log⁡n)O(\log n)O (α (n ))O(α(n))O(\alpha(n))αα\alpha 如果没有路径压缩优化,那么使用路径压缩优化进行联合查找的摊还时间复杂度是多少?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.