考慮隨機事件序列$\$,隨機變數$t$為其停時。我們希望求$\mathbb[t]$,但一般情況下是比較困難的。
可以考慮構造勢函式$\phi(a)$,滿足
$ \mathbb[\, \phi(a_)-\phi(a_t) \mid a_t, a_, \dots, a_1, a_0 \,] = -1. $
$ \phi(a_t) $為常數。
令$x_t = \phi(a_t)+t$,則
$$ \mathbb[\, x_-x_t \mid x_t, x_, \dots, x_1, x_0 \,] = 0, $$
即$\$是鞅。若$t$也是$\$的停時,則根據停時定理,我們有
$$ \mathbb[x_t] = \mathbb[x_0], $$
即$$ \mathbb[t] = \phi(a_0)-\phi(a_t). $$
這即是我們本文主要討論的方法。
codeforces 1349d. slime and biscuits
有$n$個人在玩傳球遊戲,一開始第$i$個人有$a_i$個球。每一次傳球,等概率隨機選中乙個球,設其當前擁有者為$i$,$i$將這個球等概率隨機傳給另乙個人$j(j \neq i)$。當某乙個人擁有所有球時,停止遊戲。問遊戲停止時的期望傳球次數。
解:記球的總數為
$$ m = \sum_^n a_i. $$
我們用$a_t = (a_, a_, \dots, a_)$來描述$t$次傳球後的遊戲狀態。初始狀態為$a_0 = (a_, a_, \dots, a_)$。
考慮構造勢函式
$$ \phi(a_t) = \sum_^n f(a_). $$
注意到傳球遊戲是乙個markov過程,即$a_$只取決於$a_t$,則
$$ \mathbb[\,\phi(a_)\mid a_t, \dots, a_0 \,] = \mathbb[\,\phi(a_)\mid a_t \,]. $$
上式中的期望可考慮列舉所有傳球可能,即以$\frac } \cdot \frac 1 $的概率,$i$會將球傳給$j(j \neq i)$,從而
$$ \begin \mathbb[\,\phi(a_)\mid a_t \,] & = \sum_ \sum_ \frac } \left[ f(a_-1)+f(a_+1)+\sum_} f(a_) \right] \\
& = \sum_i \left[ \frac } m f(a_-1) + \frac } f(a_+1) + \frac )(n-2)} f(a_) \right]. \end $$
令$\mathbb[\,\phi(a_)-\phi(a_t)\mid a_t \,] = -1$可得
$$ \sum_i f(a_) = \sum_i \left[ \frac } m f(a_-1) + \frac } f(a_+1) + \frac )(n-2)} f(a_) + \frac } m \right]. $$
於是,我們可取
$$ f(a) = \frac a m f(a-1) + \frac f(a+1) + \frac f(a) + \frac a m. $$
一些邊界問題的處理如下:令$a = 0$帶入上式可得$f(0) = f(1)$,故可取$f(0) = f(1) = 1$,遞推式為
$$ f(a+1) = \left[ \frac - (n-2) \right] f(a) - \frac \left( f(a-1)+1 \right). $$
另一方面,我們注意到$\phi(a_t) = f(m)+(n-1)f(0)$為常數,故可應用停時定理,得
$$ \mathbb[t] = \sum_ f(a_) - \left(f(m)+(n-1)f(0)\right). $$
codeforces 850f. rainbow balls
有$n$種不同顏色的球,其中第$i$種顏色的球有$a_i$個。每次從所有球中等概率隨機選出乙個球a,再從所有球中等概率隨機選出另乙個球b,將球b染成球a的顏色;直到所有球的顏色都相同為止。問染色次數的期望。
解:記球的總數為
$$ m = \sum_^n a_i. $$
我們用$a_t = (a_, a_, \dots, a_)$來描述$t$次染色後的狀態。
考慮構造勢函式
$$ \phi(a_t) = \sum_^n f(a_). $$
考慮所有染色可能,即
以$\frac } \cdot \frac } $的概率,將球$j(j \neq i)$染成球$i$的顏色;
以$\sum_i \frac (a_-1)} $的概率,不發生任何變化。
從而$$ \begin \mathbb\left[\,\phi(a_)\mid a_t\,\right] & = \sum_ \sum_ \frac a_} \left[ f(a_+1) + f(a_-1) + \sum_} f(a_) \right] + \sum_i \frac (a_-1)} \sum_k f(a_) \\ & = \sum_i \left[ \frac (m-a_)} \left( f(a_+1) + f(a_-1) \right) + \left(1-\frac (m-a_)} \right) f(a_) \right]. \end $$
令$\mathbb[\,\phi(a_)-\phi(a_t)\mid a_t \,] = -1$可得
$$ \sum_ f(a_) = \sum_i \left[ \frac (m-a_)} \left( f(a_+1) + f(a_-1) \right) + \left(1-\frac (m-a_)} \right) f(a_) + \frac } \right], $$
即$$ \sum_i \left[ \frac (m-a_)} \left( f(a_+1) + f(a_-1) - 2f(a_) \right) + \frac } \right] = 0. $$
於是,我們可取
$$ \frac \left( f(a+1) + f(a-1) - 2f(a) \right) + \frac = 0, $$
即$$ f(a+1)+f(a-1)-2f(a) = -\frac. $$
令$g(a) = f(a)-f(a-1)$,上式化為
$$ g(a+1) - g(a) = -\frac. $$
於是$$ g(x) = g(0)-\sum_^ \frac. $$
$$ f(x) = f(0)+\sum_^x g(a) = f(0) + \sum_^x \left[ g(0)-\sum_^ \frac \right] = f(0)+xg(0)-(m-1)x+(m-1)(m-x)\sum_^ \frac . $$
為方便起見,我們取$f(0) = 0, g(0) = m-1$,則
$$ f(x) = (m-1)(m-x)\sum_^\frac . $$
特別地,$f(m) = 0$。
另一方面,$\phi(a_t) = f(m) + (n-1)f(0) = 0$ 為常數,故可應用停時定理得
$$ \mathbb[t] = \phi(a_0)-\phi(a_t) = \sum_ f(a_). $$
codeforces 1025g. company acquisitions
有$n$個人,一開始每個人都未被領導。每次修改領導情況:等概率隨機選擇乙個未被領導的人$x$,再等概率隨機選擇另乙個未被領導的人$y$,令$x$被$y$領導,並且所有原來被$x$領導的人的狀態變為未被領導。直到只剩下乙個人未被領導(即其他所有人都被這個人領導)為止。問修改領導情況的期望次數。
解:我們把被同乙個人領導的所有人加上領導者一起稱為乙個【小組】。我們用$a = \, a_, \dots, a_ \}$來描述$t$次修改領導後的狀態,其中$m_t$表示$t$次修改領導後小組的個數,於是我們有
$$ \sum_^ a_ = n. $$
考慮構造勢函式
$$ \phi(a_t) = \sum_^ f(a_). $$
考慮每次修改領導的所有可能,即以$\frac 1 $的概率,第$i$個小組的領導進入第$j(j \neq i)$組,並且第$i$個小組的組員(非領導人員)被拆散成$(a_-1)$個只有1個人的小組。從而
$$ \begin \mathbb\left[\,\phi(a_)\mid a_t\,\right] & = \sum_ \sum_ \frac 1 \left[ (a_-1) f(1) + f(a_+1) + \sum_} f(a_) \right] \\ & = \sum_i \left[ \frac 1 f(a_+1) + \left(1 - \frac 2 \right) f(a_) \right] + \frac f(1). \end $$
令$\mathbb[\,\phi(a_)-\phi(a_t)\mid a_t \,] = -1$可得
$$ \sum_i f(a_) = \sum_i \left[ \frac 1 f(a_+1) + \left(1 - \frac 2 \right) f(a_) + \frac f(1) + \frac 1 \right]. $$
我們可取
$$ f(a) = \frac 1 m f(a+1) + \left(1 - \frac 2 m \right) f(a) + \frac f(1) + \frac 1 m $$
對任意$m$恆成立。整理後可得
$$ f(a+1)-2f(a) + \frac f(1) + 1 = 0. $$
令$f(1) = 0$,且滿足遞推式$f(a+1) = 2f(a)-1$即滿足上式,解為
$$ f(a) = 1-2^. $$
另一方面,$\phi(a_t) = f(n) = 1-2^$ 為常數,故可應用停時定理得
$$ \mathbb[t] = \phi(a_0) - \phi(a_t) = \sum_ \left( 1-2^-1} \right) - \left( 1-2^ \right). $$
codeforces 1479e. school clubs (problem by myself)
函式 名的使用和第一類物件,閉包,迭代器
1,函式名的運用 def func print 呵呵 print func a 10 print id a 1402039600 def func print 哈哈 a func 把函式名賦值給變數a a a現在是乙個函式名,當加 表示執行函式 函式名可以存放到容器中 deffunc1 print ...
一類連線問題中棧和Catalan數的應用
最後說下以前的一篇日誌 pz伯伯的番茄排序 也是catalan數列解決的,那個題目也相當於將2n個番茄編號,前n 1 n 個代表前n個最小的,用01 n表示 後n n 1 2n 個代表後n個次小的,用1 n 1 2n表示。那麼含有6個0,6個1的序列,就對應一種方案.比如000000111111就對...
函式的第一類物件,f格式化,迭代器以及遞迴
第一類物件 特殊點 1.可以當作值被賦值給變數 def func print 1 a func a 2.可以當作元素存放在容器中 def func print 1 lst func,func,func for i in lst i 3.函式名可以當作函式的引數 def func f f def fo...