问题:
给定整数n和k,以及
p1,p2,..., pn; where pi ε [0, 1]
,你想确定当k
偏置硬币随机独立抛出时获得正好n
个头的概率,其中p i 是i th 硬币出现的概率。为此任务提供O(n 2 )算法。假设您可以在O(1)时间内在[0,1]中相乘和相加两个数字。
有人可以帮助我开发递归关系,以便我可以对其进行编码。 (问题来自于动态编程章节的背面练习“Algorithms by Dasgupta”)
答案 0 :(得分:12)
考虑将(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]