【发布时间】:2015-04-28 02:56:41
【问题描述】:
在我在网络上看到的大多数示例中,假定存在某种外部随机数生成器会产生随机(不同!)优先级。
据我回忆,有一种方法可以实际随机生成优先级,并且当将它们插入到treap 中以解开可能的优先级时,会在旅途中发生冲突。
我有两个问题,那么:
- treaps 是否真的需要使其优先级完全不同,还是只需要比较可能最终被比较的节点的优先级?也就是说,如果我有两个优先级为
p的节点,但我可以确保它们永远不会以任何方式相遇,那么让它们具有相同的优先级会有问题吗? - 我应该如何在我的陷阱中生成和解开优先级?
谢谢
编辑:这是我在说什么的描述:
问题 8.12@Randomized Algorithms
现在让我们分析实现 陷阱的操作。假设我们在 从单位区间 [0,1] 中随机抽取。然后,二进制表示 每个 Pi 可以生成为一个(可能是无限的)序列 比特是无偏掷硬币的结果。这个想法是 在这个序列中只产生尽可能多的位是必要的 解决不同优先级之间的比较。假设我们有 只生成了一些二进制表示的前缀 treap T 中元素的优先级。现在,在插入一个 项目 y,我们将其优先级 Py 与其他项目的优先级进行比较以确定 y 应该如何旋转。在将 Py 与一些 PI 进行比较时。如果他们的 当前的部分二进制表示可以解决比较,然后 我们完了。除此以外。他们有相同的部分二进制 表示,我们不断为每个生成更多位,直到它们 首先不同。
【问题讨论】:
标签: algorithm data-structures binary-search-tree treap