0

我们需要在合并两个历史数据更改时获得 LCA,每个历史中的历史和节点都非常多;随着分支和合并的发生——所以要找到从 2 个点开始的 2 个历史的 LCA,我们必须向后搜索任何历史,而不仅仅是沿着两个给定的历史往回走。

已发布的查找 LCA 的方法似乎假设对所有节点进行预扫描作为第一阶段,我们希望避免这种情况。

研究了对历史中的每个节点使用矢量时钟 - 那么我们根本不需要进行任何搜索,只需知道两个起始节点的 VC 就会给我们 LCA 的 VC。但是 VC 存在问题,因为我们有大量动态的历史和节点。

我们使用了一个简单的标量计数器(类似于逻辑时钟,在其他地方使用)而不是 VC,我们确实需要进行部分搜索,但预计复杂度会更低。该代码似乎工作正常。我想知道是否有其他人做过类似的事情或者可以看到一些问题。

4

0 回答 0