从“指纹”重建树木

时间:2010-04-12 18:53:28

标签: compression tree fingerprinting

我已经完成了我的SO和谷歌研究,并没有找到任何人之前已经解决过这个问题,或者至少没有找到任何人写过它。

我的问题是,给定一个任意高度的“通用”树,每个节点都能有一个任意数量的分支,有没有办法独特地(和有效地)“指纹”任意子树从“通用的“树根”,如果给出通用树和树的指纹,我可以重建原始树吗?

例如,我有一个“通用”树(原谅我可怜的插图),代表了我的可能性:

                Root
        /  /  /  |  \  \ ... \
       O  O  O   O   O  O     O  (Level 1)
      /|\/|\...................\ (Level 2)

我也有树A,我的宇宙的根树

        Root
      / /|\ \
     O O O O O
    /

有没有办法“指纹”树,所以给定指纹和通用树,我可以重建A?

我正在考虑哈希,压缩或者功能/声明构造的内容?大O分析(时间或空间)是一个加号。

作为一个例子,一个嵌套的表达式如:{{(Root)},{(1),(2),(3)},{(2,3),(1),(4,5)}...}表示树中每个级别的实际节点可能是有效的,但它可以更有效地完成吗?

1 个答案:

答案 0 :(得分:0)

我会使用一个列表列表,其中列表中的每个元素都说明了你有多少个孩子:

[[2][1,2][0,0,0]]

是第一级有两个节点的树,左子节点有一个子节点,右子节点有2个节点。

通过您选择的无损压缩算法运行该输出。

您还可以使用树的深度优先遍历或任何其他类型的遍历。无论你最重建的是什么都是最容易的。