为更好地理解这个问题,您可以查看:-
1)https://math.stackexchange.com/questions/3100336/how-to-calculate-the-probability-in-this-case
约翰在与魔术师对战。在这场比赛中,他前面最初有'N'个相同的盒子,其中一个盒子里装有一个魔术药丸-吃完这药后,他就变得不朽了。
他必须确定哪个盒子里装有药丸。他最多只能执行'M'个动作。在每一步中,他都可以执行以下操作之一:
1)
随机选择一个在他前面的盒子,然后猜猜这个盒子里有药。如果猜想是正确的,则游戏结束并获得药丸。否则,经过这个猜想,魔术师以他无法确定添加了哪些盒子的方式在他前面添加了K个空盒子。他猜到的那个盒子也留在了他的前面,他也无法在随后的移动中将该盒子与其他盒子区分开。
2)选择一个数字X,使X为K的正数,但严格小于John前面的当前盒子数。魔术师然后删除X个空盒子。当然,如果当前的盒数≤K,则约翰绝不能执行此举。
如果约翰打得最好,他得到药丸的最大概率是多少? “ N”始终小于“ K”。
示例:-令M = 3,因此允许3个移动。 K = 20,N = 3。
John在他的第一步中选择了一个概率为x = 1/3的框,(已添加20个框(20 + 3 == 23),然后在第二步中,他再次选择了具有概率的框这次,y = 1/23 *(2/3)。这里的2/3表示第一步失败的概率。
第三步,他以z = 1/43 *(22/23)*(2/3)的概率做同样的事情。
所以总概率为= x + y + z = l1
让我们说,在上述情况下,在第二步中,他选择移走20个盒子,什么也不做,那么新的最终概率为= 1/3 + 0(第二步不做任何事情!)+ 2 / 3 *(1/3)= l2。现在,由于l2> l1,所以'l2'是我们问题的答案。
基本上,我们必须确定哪个移动顺序将产生最大概率?还有,
P(获胜)= P(以第一动作结束的游戏)+ P(以第二动作结束的游戏)+ P(以第三动作结束的游戏)=(1/3)+0+(2/3)*( 1/3)= 5/9
给出,N,K,M我们如何找出最大概率? 我们必须应用动态编程吗?
答案 0 :(得分:0)
让 p ( N , K , M )成为约翰打得最佳的概率。我们具有以下重复关系:
动态编程或递归加记忆很适合于此。您可以直接应用上述递归关系。
请注意, K 永远不会更改,因此不需要数组维;和 N 仅通过加或减 K 的整数倍来更改,因此最好使用数组索引 n ,使 N =( N 0 % K )+ nK 。
此外,请注意, M 每回合恰好减少1,因此,如果您使用的是动态编程方法,并且只需要最终概率,则无需保留 M 的所有值的概率;相反,在为给定值 M 构建数组时,只需将数组保留为 M -1。