1. 程式人生 > >中餐館過程演算法翻譯及程式碼實現

中餐館過程演算法翻譯及程式碼實現

在概率論中,中國餐館過程是一個時間離散的(discrete-time)隨機過程(stochastic process),類似於中國餐館中坐在餐桌旁的顧客。想象一個這樣的情景,一家中國餐廳擁有無限數量的圓形桌子,每個桌子都有無限的容量。此時,顧客1坐在第一張桌子旁。下一個顧客要麼坐在與顧客1相同的桌子旁,要麼坐在下一張桌子旁。這樣的情況會一直持續下去,每個顧客要麼選擇坐在已有其他顧客的桌子旁,要麼選擇一張未被佔用的桌子,其中,選擇已有顧客桌子的概率與該桌子已經存在的顧客數量成比例(即,與含有少量顧客的桌子相比,他們更願意坐在含有更多顧客的桌子旁)。在時間nnnn個顧客已經被劃分為mnm區 \leq n

個桌子。此過程的結果具有可交換性,這意味著顧客所就坐的順序不會影響最終分配的可能性。該性質極大地簡化了群體遺傳學,語言學分析和影象識別中的許多問題。

1 定義

在任何正整數時間n,該隨機過程的值是由集合{1,2,3...n}\{1,2,3,...,n\}生成的分割槽BnB_n,其概率分佈通過如下方式確定。在時間n=1n = 1時,以概率1獲得普通劃分{{1}}\{\{1\}\}。在時間n+1n + 1,元素n+1n + 1可以是:
  1. 新增到分割槽Bn的一個塊中,其中每個塊以概率b(n+1)\frac{|b|}{(n + 1)}

被選擇,其中b| b |是塊的大小(即元素的數量)。
  2. 作為新的塊新增到分割槽BnB_n,概率為1(n+1)\frac{1}{(n + 1)}
  如此生成的隨機分割槽具有一些特殊性質。它是可交換的,即重新改變{1...n}\{1,...,n\}的順序不會改變BnBn中分割槽的分佈,而且在通過從{1...n}\{1,...,n\}中刪除元素nn而獲得的n1n - 1分割槽定律的意義上它是一致的。時刻nn的隨機分割槽與時刻n1n-1的隨機分割槽的規律相同。
  分配給任何特定分割槽的概率(忽略顧客坐在某張桌子周圍的順序)是(從n
=1n=1
開始增長進行理解)
Pr(Bn=B)=bB(b1)!n!Pr(B_n=B)=\frac{\prod_{b\in B}(|b|-1)!}{n!}
其中bb是分割槽BB的一個塊,b| b |是該塊的大小(即元素的數量)。

2 一般化

這種結構可以推廣到具有兩個引數的模型,α\alphaθ\theta,分別稱為折扣和強度(或濃度)引數。 在時間n+1n + 1,下一個到達的顧客發現B|B| 中的桌子都被佔用了,並決定按以下概率坐到一個空桌子旁(這裡的θ\theta為狄利克雷過程中的α\alpha
θ+Bαn+θ,\frac{\theta+|B|\alpha}{n+\theta},
或者按以下概率做到人數為b|b|的桌子b旁
bαn+θ.\frac{|b|-\alpha}{n+\theta}.
  為了使結構能夠有效的用於概率計算,有必要假設α<0\alpha<0θ=Lα\theta= - L\alphaL{1,2...}L\in \{1,2,...\};或者假設0α<10\leq\alpha<1θ>α\theta>-\alpha
  在該模型下,根據Pochhammer k符號,分配給任何特定nn所對應分割槽B的概率是
Pr(Bn=B)=(θ+α)B1,α(θ+1)n1,1bB(1α)b1,1Pr(B_n=B)=\frac{(\theta+\alpha)_{|B|-1,\alpha}}{(\theta+1)_{n-1,1}} \prod_{b\in B}(1-\alpha)_{|b|-1,1}
在上面公式中,按照慣例,(a)0,c=1(a)_{0,c}=1,並且對於b>0b>0,有
(a)b,c=i=0b1(a+ic)={abif c=0cbΓ(a/c+b)Γ(a/c)otherwise(a)_{b,c}=\prod_{i=0}^{b-1}(a+ic)=\begin{cases} a^b& \text{if c=0}\\ \frac{c^b\Gamma(a/c+b)}{\Gamma(a/c)}& \text{otherwise} \end{cases}
  因此,對於θ>0\theta> 0的情況,分割槽概率可以用Gamma函式表示為
Pr(Bn=B)=Γ(θ)Γ(θ+n)αBΓ(θ/α+B)Γ(θ/α)bBΓ(bα)Γ(1α).Pr(B_n=B)=\frac{\Gamma(\theta)}{\Gamma(\theta+n)} \frac{\alpha^{|B|}\Gamma(\theta/\alpha+|B|)}{\Gamma(\theta/\alpha)} \prod_{b\in B}\frac{\Gamma(|b|-\alpha)}{\Gamma(1-\alpha)}.
  在只包含一個引數的情況,即α=0\alpha=0,上式可簡化為
Pr(Bn=B)=Γ(θ)θBΓ(θ+n)bBΓ(b).Pr(B_n=B)=\frac{\Gamma(\theta)\theta^{|B|}}{\Gamma(\theta+n)} \prod_{b\in B}\Gamma(|b|).
或者在θ=0\theta=0時,
Pr(Bn=B)=αB1Γ(B)Γ(n)bBΓ(bα)Γ(1α).Pr(B_n=B)=\frac{\alpha^{|B|-1}\Gamma(|B|)}{\Gamma(n)} \prod_{b\in B}\frac{\Gamma(|b|-\alpha)}{\Gamma(1-\alpha)}.
  如前所述,分配給任何特定分割槽的概率僅取決於塊大小,因此如前所述,隨機分割槽具有可交換性。一致性也仍然存在。
  如果α=0\alpha=0,則由此產生的整數n的隨機分割槽的概率分佈是具有引數θ的Ewens分佈,被用於群體遺傳學和生物多樣性的統一中性理論。

2.1 推導

接下來介紹一種推導此分割槽概率的方法。 令CiC_i為新增數字ii的隨機塊,對於i=1,2,3....i = 1,2,3,....,有
Pr(Ci=cC1,...,Ci1)={θ+Bαθ+i1if cnew block,bαθ+i1if cb;Pr(C_i=c|C_1,...,C_{i-1})=\begin{cases} \frac{\theta+|B|\alpha}{\theta+i-1}& \text{if c} \in \text{new block,} \\ \frac{|b|-\alpha}{\theta+i-1}& \text{if c} \in \text{b;} \end{cases}