【问题标题】:Counting heads - Dynamic Programming计数头 - 动态规划
【发布时间】:2012-10-17 11:26:54
【问题描述】:

问题:

给定整数 n 和 k 以及 p<sub>1</sub>,p<sub>2</sub>,..., p<sub>n</sub>; where p<sub>i</sub> ε [0, 1],您想要确定当 n 有偏硬币被随机独立抛掷时,准确获得 k 正面的概率,其中 pi是第 ith 枚硬币正面朝上的概率。给出这个任务的 O(n2) 算法。假设您可以在 O(1) 时间内将 [0, 1] 中的两个数字相乘和相加。

有人可以帮助我开发递归关系,以便我可以编写代码。 (问题来自“Dasgupta 算法”一书中动态规划一章的回溯练习)

【问题讨论】:

    标签: algorithm dynamic-programming recurrence


    【解决方案1】:

    考虑将 (n-1) 枚硬币一起扔,第 n 枚硬币分开扔的情况,并考虑相互独立。

    结合更简单情况的概率得到 P(1..n, k)(其中 P(1..n, k) 是当 n 个硬币时恰好获得 k 个正面的概率)

    然后应用此规则并填充 NxK 表中的所有单元格

    编辑:

    有两种可能的方法可以用 n 个硬币准确地得到 k 个正面 -

    a) 如果 (n-1) 个硬币有 k 个正面,第 N 个硬币是反面,并且

    b) 如果 (n-1) 个硬币有 k-1 个正面,并且第 N 个硬币是正面

    所以

    P(n, k) = P(n-1, k) * (1 - p[n]) + P(n-1, k-1) * p[n]

    【讨论】:

    • 那么我们可以使用这个递归关系:P(N,K) = max { P(N-1,K), P(N-1,K-1)} + p i 并从 P(n,k) 开始
    • 对不起,我不知道如何在这里写下标。 pi 是带有下标 i 的 p
    • 不,我们不需要选择最大值。您必须计算概率,而不是某种最佳概率。
    • 那么递归关系是什么?
    • 我希望您的解决方案能提供一些线索...好的,添加了关系公式
    猜你喜欢
    • 2013-08-09
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多