您为概括地描述的方法。我们使用所有排列是同等可能的,即使有偏斜的骰子也是如此(因为骰是独立的)。因此,我们可以继续滚动,直到看到最后滚动这样的排列并输出最后一个滚动。[ 1 .. N ] NN=2[1..N]N
一般分析是棘手的。但是很明显,由于在任何给定步骤中看到排列的可能性很小(并且与前后步骤无关,因此很棘手),预期的滚动数会以快速增长。它是大于为固定,然而,这样的过程终止几乎肯定(即,具有概率)。0 N 1N0N1
对于固定我们可以在总和为的Parikh向量集合上构建马尔可夫链,总结最后掷骰的结果,并确定预期的步数,直到达到第一次。这足够了,因为所有共享Parikh向量的排列都是相同的;链和计算更简单。≤ Ñ Ñ (1 ,... ,1 )N≤NN(1,…,1)
假设我们处于状态与。然后,获得元素的概率(即下一掷是)总是由Σ ñ 我= 1 v 我 ≤ Ñ 我我v=(v1,…,vN)∑ni=1vi≤Nii
Pr[gain i]=pi。
另一方面,从历史中删除元素的可能性由下式给出:i
Prv[drop i]=viN
每当(否则为)时,恰恰是因为用Parikh向量进行的所有排列均具有同等可能性。这些概率是独立的(因为掷骰子是独立的),因此我们可以按以下方式计算过渡概率:0 v∑ni=1vi=N0v
Pr[v→(v1,…,vj+1,…,vN)]={Pr[gain j]0,∑v<N, else,Pr[v→(v1,…,vi−1,…vj+1,…,vN)]={0Prv[drop i]⋅Pr[gain j],∑v<N∨vi=0∨vj=N, else andPr[v→v]={0∑vi≠0Prv[drop i]⋅Pr[gain i],∑v<N, else;
所有其他转换概率为零。单个吸收状态是,即所有排列的Parikh矢量。[ 1 .. N ](1,…,1)[1..N]
对于,所得的马尔可夫链¹为N=2
[ 来源 ]
直至吸收为止的预期步骤数
Esteps=2p0p1⋅2+∑i≥3(pi−10p1+pi−11p0)⋅i=1−p0+p20p0−p20,
为简化使用。如果现在所建议的,一些,然后p 0 = 1p1=1−p0ε&Element;[0,1p0=12±ϵϵ∈[0,12)
Esteps=3+4ϵ21−4ϵ2。
对于和均匀分布(最好的情况),我使用计算机代数²进行了计算;由于状态空间快速爆炸,因此难以评估更大的值。结果(向上舍入)为N≤6
图表显示作为的函数;左边是正则图,右边是对数图。NEstepsN
增长似乎是指数级的,但是值太小而无法给出正确的估计。
至于针对摄动的稳定性,我们可以看一下的情况: Ñ = 3piN=3
图显示与和;自然地,。p 0 p 1 p 2 = 1 − p 0 − p 1Estepsp0p1p2=1−p0−p1
假设较大的相似的图片(即使,内核也会崩溃,计算出的符号结果),除了最极端的选择(在某些处几乎全部或全无质量)之外,其他所有步骤的预期步数似乎都很稳定。N = 4 p iNN=4pi
为了进行比较,模拟偏向的硬币(例如,通过将模具结果尽可能均匀地分配给和),使用它来模拟公平的硬币并最终执行按位拒绝采样0 1ϵ01
2⌈logN⌉⋅3+4ϵ21−4ϵ2
出乎意料地死掉-您可能应该坚持下去。
- 由于链条在被吸收,以灰色提示的边缘永远不会被遍历并且不会影响计算。我包括它们仅是出于完整性和说明目的。(11)
- 在Mathematica 10中的实现(Notebook,Bare Source);抱歉,这就是我对这类问题的了解。