跳过不公平硬币的清单

时间:2015-11-22 23:46:48

标签: java skip-lists

所以我一直在学校学习跳过清单,我们简要地谈到了我们是否要使用“不公平的硬币”。在跳过列表而不是公平的硬币中(例如:不正确的硬币翻转的概率导致&#34的值; Heads"被设置为p,其中0

有一些我对此感到疑惑的事情,当我们如此迅速地通过这个话题时,我并不理解。

  1. 如果我们这样做,跳过列表的高度/大小会怎样?如果概率出现偏差,这显然会改变一切,对吧?假设它包含任意n个元素,显然高度与使用公平硬币的高度不同。

  2. 将任意节点添加到跳过列表中时,预期的促销数量会如何变化?我不知道在这种情况下是否会这样,但这是一个讨论话题。

  3. 我没有找人只是在没有我理解的情况下给出答案,但是如果你能够解释为什么这些变化正在发生,以便我能理解它是如何受到概率变化的影响,我会欣赏它。

    编辑:我想我现在已经理解了在使用Pat Morin的开放数据结构书的第99页提供的等式对不同概率进行一些比较之后。一旦我弄明白,我就会在评论中发布我的解决方案,以帮助其他人解决同样的问题。

1 个答案:

答案 0 :(得分:0)

您可以在此处查找问题的答案:https://en.wikipedia.org/wiki/Skip_list#Description
我会试着解释一下:
设p是元素被提升到下一个级别的概率,然后

  1. 高度为 log 1 / p n 原因:
    在最后一行0中我们有n个元素。由于每个元素都有 p 出现在下一个更高行的概率,我们在第1行中有 n * p 个元素。同样的争论我们将得到第2行中的n * p 2 元素。如您所见,我们在行中有 n * p x 元素X 的。
    最高行将有1个项目,因此我们得到等式 1 = n * p x 并为 x 解决这个问题我们得到 x = log 1 / p n x = log 2 n 为公平的硬币)。
  2. 每个元素平均会出现在 1 /(1-p)列表中 原因:
    只出现在一个列表中的机会是(1 - p)(晋升的机会是 p )。
    进入第二个但不是第三个列表的机会是 p *(1 - p)(提升一次[ p ]而不是第二个硬币翻转[< I> 1-p 的])。
    第二个但不是第三个 p 2 *(1 - p)等等 一般来说:
    p x-1 *(1-p)属于 x 列表。
    对于列表的预期值,我们有一个元素:
    exp = 1 *(1-p)+ 2 * p *(1-p)+ 3 * p 2 *(1-p)...
    i = 0 (i + 1)* p i *(1-p)
    =(1-p)*Σ i = 0 (1 + i)* p i
    =(1-p)* 1 /(1-p) 2
    = 1 /(1-p)

    可以在此处找到消除 1 /(1-p) 2 之和的证明:https://en.wikipedia.org/wiki/Geometric_series#Geometric_power_series