【问题标题】:Skip list with unfair coin使用不公平硬币跳过列表
【发布时间】:2015-11-22 23:46:48
【问题描述】:

所以我在学校一直在研究跳过列表,我们简要讨论了如果我们要在跳过列表中使用“不公平硬币”而不是公平硬币,(例如:不公平硬币翻转导致“Heads”的值设置为 p,其中 0

由于我们这么快就跳过了这个主题,所以我对此感到有些疑惑。

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

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

我不是在找人在没有我真正理解的情况下给出答案,但如果你能真正解释为什么会发生这些变化,以便我能理解它是如何受到概率变化的影响的,我将不胜感激.

编辑:在将不同概率与 Pat Morin 的 Open Data Structures 书的第 99 页提供的方程式进行一些比较后,我想我现在明白了。一旦我弄清楚了,我会在 cmets 中发布我的解决方案,以帮助其他有同样问题的人。

【问题讨论】:

    标签: java skip-lists


    【解决方案1】:

    您可以在此处查找问题的答案:https://en.wikipedia.org/wiki/Skip_list#Description
    我将尝试解释它们:
    设p为一个元素被提升到下一个级别的概率,那么

    1. 高度将为 log1/pn
      原因:
      在最后一行 0 我们有 n 个元素。由于每个元素都有 p 出现在下一个较高行的概率,因此我们在第 1 行中有 n * p 个元素。同样的争论我们将得到 n * p2 个元素在第 2 行。如您所见,我们在第 行有 n * px 个元素x.
      最高行将有 1 个项目,因此我们得到等式 1 = n * px 并求解 x 我们得到 x = log1/pnx = log2n 表示公平硬币)。
    2. 每个元素平均会出现在 1/(1-p) 个列表中。
      原因:
      只出现在一个列表中的机会是(1 - p)(晋升机会是p)。
      进入第二个但不是第三个列表的机会是 p * (1 - p) (提升一次 [p] 而不是在第二次抛硬币时 [1-p])。
      第二个但不是第三个 p2 * (1 - p) 等等
      一般来说:
      px-1 * (1-p) 表示在 x 列表中。
      对于列表中出现的元素的期望值,我们有:
      exp = 1 * (1-p) + 2 * p * (1-p) + 3 * p2 * (1-p) ...
      = ∑i=0 (i+1) * pi * (1-p)
      = (1-p) * ∑i=0 (1+i) * pi
      = (1-p) * 1/(1-p)2
      = 1/(1-p)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多