基于压缩枚举的树相似度计算
在树结构的处理中,树相似度的计算是一个重要的问题。本文将介绍基于压缩枚举的树相似度计算方法,包括相关的基本概念、算法实现以及实验结果。
基本概念
- 有序树与k - 子树
- 有序树 (T = (V, E, r)) 由节点集 (V = {1, \ldots, n})、边集 (E) 和根节点 (r) 组成,每个内部节点的子节点有固定顺序。树的大小 (|T| = |V|)。
- (k -) 子树是 (T) 的一个连通子图 (T[S] = (S, E(S), root(S))),其中 (S \subseteq V) 且 (|S| = k)。用 (S_k(T)) 表示 (T) 中所有不同的 (k -) 子树(同构意义下)。
- 位签名
- 有序树 (T) 的平衡括号表示(BP)是一个位序列 (BP(T) = b_{2k - 1} \cdots b_0),通过深度优先遍历定义,“(” 用 0 表示,“)” 用 1 表示。
- 对于节点 (v),(lpos(v)) 和 (rpos(v)) 分别表示 (BP(S)) 中对应 (v) 的左右括号的位位置。对于子集 (R \subseteq S),(RPOS(R)) 是一个位向量 (X),满足 (X[rpos(v)] = 1) 当且仅当 (v \in R)。
- 树相似度
- 给定输入有序树 (