从分隔符查询重构树


18

假设是一棵不知道其结构的恒定度树。问题是通过询问以下形式的查询来输出树:“节点是否位于从节点到节点的路径上?”。假设每个查询都可以由Oracle在固定时间内回答。我们知道的值,即树中节点的数量。目的是使输出树所需的时间最小化为。T x a b n nTTxabnn

是否存在针对上述问题的算法?o(n2)

假设中任何节点的度数最大为3。T


我知道的

有直径的情况很容易。如果树的直径为,则可以得到分治算法:D

任何二叉树都有一个很好的分隔符,可以将树分成大小不小于1 / 3n的分量。

  1. 选择任何顶点x。如果它是一个很好的分隔符,则标签并递归。
  2. 找到x的所有3个邻居。
  3. 向节点数最多的邻居方向移动。与邻居重复步骤2。

由于找到分隔符最多需要步,因此我们得到了算法。O n D log n DO(nDlogn)

一个随机化算法O(nlog2n)。(从下面的评论中删除)

随机选择两个顶点x和y。它们以1/9的概率位于分隔符的相对侧。选择从到的路径的中间节点。看看是否是分隔符,如果不是,则执行二进制搜索。ÿxy

查找分隔符需要预期时间。这样我们得到了随机算法。O nO(nlogn)O(nlog2n)


背景。我从一个在概率图形模型中工作的朋友那里得知了这个问题。上面的问题大致对应于使用一个预言机学习结点树的结构,该预言机在给定三个随机变量X,Y和Z的情况下,可以根据给定的Z值来判断X和Y之间的互信息的值。为零,我们可以假设Z位于从X到Y的路径上。


7
请透露您对这个问题的了解,因此我们不会浪费时间重新设计轮子。
杰夫斯2012年

@Jɛff E我已经编辑了我的问题。
Jagadish 2012年

Answers:


5

。以下简单的对抗策略意味着,重建节点树的任何算法都至少需要 “中间”查询。n(n12)=n(n1)/2

任意标记节点。对手回答所有查询,就好像树是中心为顶点的星形。将视为根,将其他节点视为其子代。0 00,1,2,,n100

Between?(a,x,b)
    if x=0 return TRUE else return FALSE

现在,假设算法在执行少于查询后停止。然后必须有两个顶点和,都不等于零,这样该算法就不会查询三元组任何排列。如果算法声称树不是中心为的星星,则对手会透露其输入,从而证明算法是错误的。对手然后发现实际上是的唯一子,再次证明算法是错误的。y z 0 y z 0 x yn(n1)/2yz(0,y,z)0xy

更新:糟糕,刚注意到度约束。 幸运的是,这并不是主要障碍。用您喜欢的二叉树替换节点,其他节点以未知顺序替换为叶子,然后将该子树显示给重构算法。重建生成的节点二叉树仍然需要至少查询。等效地,重建节点二叉树至少需要查询。(我确信,更细微的构造会改善常数。)n 1 2 n 3 n n 1 / 2 m m + 3 m + 2 / 80n1(2n3)n(n1)/2m(m+3)(m+2)/8 正如贾加迪什(Jagadish)所指出的,这种概括是行不通的。有关树中内部节点的查询在叶子上施加了顺序,从而减少了必要查询的数量。


我的问题是关于恒度树。这种说法不适用于那种情况,对吗?
Jagadish 2012年

2
@Jagadish:(1)我不认为这种下界的证明适用于随机算法。对手仍然可以构造一个失败的例子,但这与随机算法以高概率正确工作的假设并不矛盾。(2)顺便说一句,您似乎在知道答案的情况下问了这个问题。你出于什么目的这样做?
伊藤刚(Tsuyoshi Ito)

2
我知道了。感谢您的解释,也感谢您编辑问题!
伊藤刚(Tsuyoshi Ito)2012年

4
如果您有一个随机算法,那么您就有一个算法。确定性被高估了。
杰夫斯

1
这个问题使我想起了螺母/螺栓的分类/匹配。在时间内以高概率运行的随机算法很容易-只是随机quicksort。有确定性的 -time算法,但是它非常重要O n log n O(nlogn)O(nlogn)
杰夫斯

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.