是否有解决以下问题的经典算法。假设没有存在量词的并集查找算法具有以下输入:
x1 = y1 /\ .. /\ xn = yn
然后它将构建一些数据结构 u,以便我可以检查 u.root(x)==u.root(y),以确定 x 和 y 是否在同一个子图中。
输入可以通过以下语法来表征:
Input :== Var = Var | Input /\ Input
现在假设我们也允许存在量词:
Input :== Var = Var | Input /\ Input | exists Var Input
什么联合查找算法可以处理这样的输入。我仍然假设该算法构建了一些数据结构 u,我可以在其中通过 u.root(x)==u.root(y) 检查 x 和 y 是否在同一个子图中。
此外 u.root(x) 在与绑定变量一起使用时应该抛出异常。这些变量都应该被消除,不再是数据结构的一部分。意味着子图应该相应地减少,而不改变结果的有效性。
再见