某些类型查询的最佳预处理


11

假设我们有一个半群,其元素S = { s 1s 2s n }。我们的目标是计算产品的小号小号+ 1小号Ĵ(S,)S={s1,s2,,sn}sisi+1sj

Alon和Schieber在他们的论文“用于回答在线产品查询的最佳预处理”中证明,仅使用线性量,我们最多可以以步(其中α是逆阿克曼函数)回答每个这样的查询。预处理。O(α(n))α

如果期望,每个查询可以在回答Ö 日志Ĵ - 的步骤,可以在一个仍然只要这样做线性预处理?sisi+1sjO(log(ji))

(这个问题的灵感来自这个最近布伦丹·麦凯在Mathoverflow问题。)


1
您可以向MO问题添加链接吗?
Suresh Venkat

1
有什么理由让它成为半团体而不是团体?
哈克·贝内特

1
@哈克:如果是一个小组,那么上面链接中的Noam构造将给出这样的算法。
Gjergji Zaimi 2011年

Answers:


2

用叶子中的构造一个有序的平衡二叉树。在每个内部节点v中,存储以v为根的子树的叶子的乘积。这种预处理显然在O n 时间和空间上进行。s1,,snvv(n)

现在,计算产品(其中< Ĵ)在树起来从来的最低共同祖先(LCA)Ĵ。收集存储在远离路径的每个正确子项中的产品,不包括LCA的正确子项。换句话说,当您从u升至其父v时,如果uv的左孩子,则提取存储在v的右孩子中的乘积。同样,从jsisji<jiijuvuvvj到LCA,并收集存放在离开该路径的左儿童中的产品。将所有这些乘积以及s j依次乘以。sisj

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.