为了简化问题,下文主要考虑外向树,这意味着根是固定的,整棵树的哈希值等于根节点的哈希值。
考虑以下树哈希算法:
hx=1+∑i=1∣sonx∣hsonx[i]×p[i]
其中,hsonx[i] 不严格单调递增,代码实现中通过计算所有子树的哈希值后排序来实现,p[i] 表示第 i 大的质数。代码实现中为了避免高精度会取模,但是下面的问题假设不取模。
- 显然存在一些 a,hx=a 恒成立,即不存在任何一棵外向树的哈希值等于 a,那么这样的 a 有多少个?如果有无穷个,所有 a 构成的集合是否是 N 的概率零测集,或者概率测度为多少?
- 这个哈希算法是否存在冲突?存在冲突当且仅当存在两棵不同构的外向树 T1,T2,满足 hT1=hT2。
- 是否存在 O(n) 复杂度的算法:从无根树中选择一个节点 x,对于所有同构的无根树,算法是确定的(即所有 x 为根的外向树全部是同构的)。注意,确定的求重心算法可能求出两个节点。