我想编写一个适用于一些树状结构数据的工具。(事实上,它可以在 git 修订 DAG 的树状子集上工作,但这对于这个问题并不重要)。特别是我想要一种算法来重建由给定输入集的所有“连接点”组成的树的子集。
具体来说,我认为我想要的是
我们有一些
H
具有“最低共同祖先”功能的类型lca
。这给出H
了树状结构。该算法将某些子集
S
作为H
输入。输出应该是一个多路树
t
,其节点由 的值标记H
。t
应该满足性质全部
s
在S
标签的某个节点中t
的叶子
t
只能由元素标记S
h
标签的任何元素H
不超过一个节点t
如果
h1
标签n1
和h2
标签n2
则标记和inlca(h1, h2)
的最低共同祖先。n1
n2
t
我的问题是:“这是已知算法的已知问题吗?”。我怀疑是这样。它似乎与拓扑排序非常相似。我有一个基于合并排序的算法的想法,但如果已知算法已经存在,那么没有理由想出我自己的算法。