获得达到目标概率的算法

时间:2011-06-16 18:20:22

标签: algorithm math probability combinatorics

好的,我会在这里尽可能详细。

想象一下,用户可以选择一组“选项”。每当他选择时,他就会得到4种不同的选择。在这4个“插槽”中可以出现更多选项。每个人都有一定的明确和已知的出现概率。并非所有选项都可能出现,并且某些选项需要先前已选择其他选项 - 在复杂的相互依赖性树中。 (我已经定义了这个)

当用户选择4中的一个时,他会看到另外4个选项。选项池再次定义,可能取决于用户之前选择的内容。

在所有可能出现的“选项”中,有一些特殊的选项,称为KEY选项。

程序启动时,会向用户显示前4个选项。对于这4个中的每一个,程序需要计算用户在(可变)N选项的周期中“实现”所有KEY选项的总概率。

e.g。如果共有4个选项,那么实现其中任何一个选项的可能性就是1,因为它们都出现在开头。

如果有人可以告诉我应该从哪个逻辑开始,我将非常感激。 我正在考虑计算所有可能的选择序列,并计算导致在N'步骤中选择KEY选项的那些序列,但问题是所有这些选项出现的概率不均匀,并且选项池也变为用户选择并积累他的选择。

我很难将明确定义的概率和选项的依赖性实现到可以给出合理的总概率的算法中。因此,用户每次都知道4中的哪一个使他处于最佳位置以最终获得KEY选项。

有什么想法吗?

编辑: 这是一个例子:

说池中有7个选项。 option1,...,option7 option7需要option6; option6需要option4和option5; option1到5不需要任何东西,可以立即出现,各自的概率为option1.p,...,option5.p; KEY选项是,例如,option7; 用户在1-5中随机选择(但加权)4个选项,程序需要说: “如果你选择(第一个),你有##%的机会在最多N次尝试中获得选项7。”类似于其他3个选项。

自然地,对于某些低N来说,不可能获得选项7,而对于某些大N则可以肯定。可以选择N但是固定。

编辑:所以,这里的要点不是用户随机选择的。点是 - 程序建议选择哪个选项,以最大化最终的概率,在N步之后,将为用户提供所有关键选项。

对于上面的例子;假设我们选择N = 4.所以程序需要告诉我们出现的前4个选项中的哪一个(选项1-5中的任何4个),当选择哪一个时,产生获得option7的最佳机会。因为对于option7你需要option6,为此你需要option4和option5,很明显你必须在第一组选择中选择option4或option5。当然,其中一个肯定会出现。 假设我们得到第一个选项{option3,option5,option2,option4}。该计划然后说: 如果你选择了option3,你将永远不会在4个步骤中获得option7。 p = 0; 如果你选择了option5,你可能会得到option7,p = ....; ... option2,p = 0; ... option4,p = ...;

无论我们选择什么,对于接下来的4个选项,重新计算p。显然,如果我们选择option3或option2,那么每个进一步的选择都有0次将我们带到option7的可能性。但是对于option4和option5,p> 0;

现在更清楚了吗?我不知道如何获得这些概率p。

2 个答案:

答案 0 :(得分:2)

这听起来像一个适度的马尔可夫链式问题。为每个州创建一个节点;一个国家没有历史,只是依赖于它的可能路径(每个都有一定的概率加权)。您在每个节点上设置概率,即用户处于该状态的机会,因此,对于第一步,将有一个1他的起始节点,0在其他地方。然后,根据哪些节点相邻并且有可能到达它们,您可以通过更新每个顶点上的概率来迭代到下一步。因此,您可以轻松计算用户可以登陆的状态,例如15个步骤以及相关概率。如果你对渐近行为感兴趣(如果他可以永远玩的话会发生什么),你可以制作一大堆线性联立方程式,如果你的树或图形有一个整齐的形式,你可以直接解决它们或使用一些技巧。您经常会遇到循环解决方案,用户可能陷入循环,等等。

答案 1 :(得分:1)

如果您认为用户随机选择了选项,并且在节点上始终显示相同的选项分布,则可以将其建模为图形上的随机游走。最近在mathematica博客上发表了一篇关于calculating terminating probabilities特定随机游走的好文章。