小字母表下具有常数时间操作的简洁动态基数树
1. 引言
在计算机科学领域,树结构是一种极为重要的数据结构,而 k - 元基数树(k - ary cardinal trees)作为其中的一种,有着广泛的应用。k - 元基数树是一种根树,每个节点最多有 k 个子节点,且每条边都用字母表 {1, …, k} 中的一个符号进行标记,也被称为度为 k 的字典树(tries)。
在本文中,我们聚焦于节点数为 n 的 k - 元基数树,且字母表大小较小的情况,即 k = (log n)^O(1)。我们的目标是设计一种简洁的数据结构来表示动态 k - 元基数树,该数据结构使用的空间接近信息论下界,并且能高效地支持所需的操作。
信息论下界是通过对不同 k - 元基数树数量取对数来计算的,即 log C(n, k) = log( (kn + 1 选 n) / (kn + 1) ) ≈ 2n + n log k - o(n + log k) 位。我们需要支持的操作如下:
- parent :返回当前节点的父节点。
- child(i) :返回当前节点的第 i 个子节点。
- label - child(α) :返回当前节点与边标记为 α 的子节点。
- degree :返回当前节点的子节点数量。
- subtree - size :返回以当前节点为根的子树的节点总数。
- is - ancestor(x) :判断当前节
超级会员免费看
订阅专栏 解锁全文
616

被折叠的 条评论
为什么被折叠?



