期望势能函数及其应用
定义
对于样本 X∈Ω ,定义其势能函数为 ϕ(X) 。
若势能函数 ϕ 满足对于任意样本 Xt∈Ω ,有:
E[ϕ(Xt+1)∣Xt]=ϕ(Xt)−1
则从样本 s 到样本 t 的期望操作次数为 ϕ(s)−ϕ(t) 。
证明好像要用到一个叫做 鞅的时停定理 的东西,很复杂,不过这里给一个不那么完善的简单证明。
特别的,这个势能函数往往需要根据题目猜测。
证明
让我们看看势能函数的条件到底是什么。
E[ϕ(Xt+1)∣Xt]ϕ(Xt)=X∑Pr[Xt+1=X∣Xt]ϕ(X)=1+E[ϕ(Xt+1)∣Xt]=1+X∑Pr[Xt+1=X∣Xt]ϕ(X)
再看看图上随机游走的式子是什么。
定义 xi 为从 i 开始随机游走,到目标 t 的所需步数的期望。
那么就有:
xi=1+j∑Pr[i→j∣i]xj
这和势能函数的本质似乎是一样的。
不妨把势能函数当成图上随机游走看待,那么就有初始到目标的游走次数的期望为初始状态 s 的 xs 去除掉目标 t 的 xt ,因为到 t 停止。这恰恰是上面那个 鞅的时停定理 证明的东西。
于是我们就绕过了 鞅的时停定理 证明完毕了。
CF1025G Company Acquisitions
只能用这个写。
题目链接: CF1025G Company Acquisitions 。
题目内容:
有 n 家公司,有些被收购了,有些是独立的。
每秒会随机两个独立公司 i 和 j ,然后 i 收购 j 。
当公司 i 收购公司 j 时,公司 j 的状态会变为被 i 收购,且所有原来公司 j 收购的公司会拜托被收购状态,变为独立的。
当存在一个公司收购了所有的其他公司时,游戏结束。
求期望操作秒数。
定义 ai 为公司 i 收购的公司数目,那么样本空间为 (a1,⋯,ak) ,其中 k 为当前独立公司数目。
猜测势能函数 ϕ((a1,⋯,ak))=i=1∑kg(ai) 。
为了满足条件,必须满足:
E[ϕ(a1′,⋯,ak′)∣(a1,⋯,ak)]−ϕ(a1,⋯,ak)k(k−1)1i,j,i=j∑−g(ai)−g(aj)+g(ai+1)+ajg(0)=−1=−1
不妨钦定 g(0)=0 ,那么:
−2(k−1)i∑g(ai)+(k−1)i∑g(ai+1)i=1∑kg(ai+1)−2g(ai)=−k(k−1)=−k
不妨设 g(ai+1)−2g(ai)=−1 ,那么满足了势能函数要满足的条件。
然后基于此继续推导:
g(i)g(0)g(1)g(2)⋮g(x)=2g(i−1)−1=0=2g(0)−1=−1=2g(1)−1=−3=1−2x
然后初始状态 (a1,⋯,an) ,结束状态 (n−1) ,用定理就行。
CF1349D Slime and Biscuits
这个用势能函数非常简单,不用则比较困难。
题目链接: CF1349D Slime and Biscuits 。
题目内容:
有 n 个人,第 i 个人有 ai 块饼干。
每秒随机一个饼干并随机一个除了饼干主人之外的人,主人将这块饼干给他。
当所有饼干都集中在一个人身上时游戏结束。
求游戏持续时间期望。
n≤105 ,m=∑ai≤3×105 。
样本空间显然为 (a1,⋯,an)∈Ω ,其中 ai 为当前 i 的饼干数量。
猜测势能函数 ϕ 为 ∑g(ai) ,将条件写下:
E[ϕ(a1′,⋯,ak′)∣(a1,⋯,ak)]−ϕ(a1,⋯,ak)=−1∑E[Δ(g(ai))]=−1E[Δ(g(ai))]=mai(g(ai−1)−g(ai))+mm−ai⋅n−11(g(ai+1)−g(ai))
不妨令 E[Δ(g(ai))]=mai ,那么:
mai(g(ai−1)−g(ai))+mm−ai⋅n−11(g(ai+1)−g(ai))=mai
令 dai=gai+1−gai ,那么就有:
−aidai−1+n−1m−aidai=ain−1m−aidai=ai+aidai−1dai=m−aiai(n−1)(dai−1+1)dx=m−xx(n−1)(dx−1+1)
然后钦定 d0=g0=0 ,递推 d,g 就行。
代码只有 1KB 。