本来以为这还挺基本的,但是最近被人问了好几次,觉得还是多说(水)几句。

(其实就是在家太无聊了睡不着,又不想填DQMC和SSE的大坑)

这个人开始编剧本了:

蒙卡里为了得到稳态分布 \(\pi\) ,我们需要怎么做呢?这就说来话长了:

在山的那边海的那边,有着斯坦国,玄武国,和小鸡岛。斯坦国的王子,在学蒙卡,就找了该国的签证官教他。签证官说:

斯坦国有100万居民,玄武国有200万,小鸡岛有100个居民。为了世界和平,为了人口分布稳定,作为签证官我要怎么做呢?

王子说:

这还不简单?**让从我们国家出去的人数,和进来的人一样多,**我们的100万就能保持住了。

签证官:

对, 只需要**,** 斯坦国的人口 * 斯坦->玄武 的申请率 *玄武国对斯坦的签证通过率 + 斯坦国的人口 * 斯坦->小鸡 的申请率 *小鸡岛对斯坦的签证通过率, 和 玄武国的人口 * 玄武->斯坦 的申请率 *斯坦国对玄武的签证通过率+小鸡岛的人口 * 小鸡->斯坦 的申请率 *斯坦国对小鸡的签证通过率 相等。 写成公式就是**:** \(\sum_j \pi(i) Q(i, j) \alpha(i, j)=\sum_j \pi(j) Q(j, i) \alpha(j, i)\) ,其中 \(\pi(i)\) 表示 \(i\) 国人口(占比), \(Q(i,j)\) 表示 \(i\) 国到 \(j\) 国的申请的概率, \(\alpha (i,j)\) 表示 \(i\) 国到 \(j\) 国的签证通过率。

王子:

要求还挺多的,世界和平稳定这么难啊?这就是我们总说的,细致平衡条件吗?

签证官:

这不是。如果非要给个名字的话,这个叫平衡条件好了。你说的对,这要求太多了,是不太容易达到,如果真的这么做,你老爹要给我多开三倍的工资才行。实际上大家并没有这么做。

王子:

哦我知道了,我只需要让我们去玄武国的人和玄武国来的人,一样多。让去小鸡岛的人和小鸡岛来的人一样多,就能保证总的出去的和总的进来的人数相一致。也就是满足\(\pi(i) Q(i, j) \alpha(i, j)= \pi(j) Q(j, i) \alpha(j, i)\) 就可以了。

签证官:

这个就是我们所说的**细致平衡条件(detailed balance condition)**了。

王子:

这样看,小鸡岛人口那么少,如果我们多拒签他们一个人,他们岂不是要多拒签我们…我算算…100万除以100,他们要多拒签我们10000个人!那这个世界人才流动状况也太差了吧!

签证官:

你这么算不一定对哟,你这么直接算人口比 \(\frac{\pi(j)}{\pi(i)}\) ,是假定了大家互相申请去往对面的概率相等,也就是假定了 \(Q(i, j) =Q(j, i)\) ,但这可说不好呀。如果我没记错,如果做了这样的假定,就叫做Metropolis 算法,不做这样的假定,可能出现 \(Q(i, j) \neq Q(j, i)\) 的情况的话,就是我们常说的Metropolis-Hasting 算法了。

王子:

是的,是我没注意这样的细节。小鸡岛这地方太小了,肯定是他们更愿意来我们斯坦国,我们斯坦国的愿意去他们岛上的少一些。 你还没回答我之前的问题呢。

签证官:

所以实际上,因为小鸡岛的人口比我们少,如果两边互相申请的意愿一样的话,也就是考虑Metropolis 算法的话,只要是小鸡岛来的人,我们都给了签证的。也就是说,大家的签证通过率是: \(\alpha(i, j)=\min \left\{\frac{\pi(j) }{\pi(i) }, 1\right\}\) 。就像你小时候写程序算Ising模型的,local的更新,每尝试翻转一个自旋,如果能量降低就一定接受,能量变高才按概率接受。 \(\alpha(i, j)=\min \left\{e^{-\beta \Delta E}, 1\right\}\)

王子:

我懂了。那么用Metropolis-Hasting 算法的话,接受率就是 \(\alpha(i, j)=\min \left\{\frac{\pi(j) Q(j, i)}{\pi(i) Q(i, j)}, 1\right\}\) 对吧?

签证官:

**你可真是个小机灵鬼,我现在放心你继承玄武国的凝聚态物理大业了。 **

王子:

可是我觉得还是有哪里不对,我看叔叔你天天不去上班,在这里给我讲课,你不需要去上班拒签的?这样世界人口分布就乱了呀!!!不能为了给我讲课就影响你的工作呀!

签证官:

没事,我为了给自己放假,搞了个小妙招。比如,我通告了全国,在小鸡岛上有着玄武国首席刺客:**伍六七!!!**杀人不眨眼,买东西不给钱。这样斯坦国的居民就都不愿意去小鸡岛了,小鸡岛的居民也更多的会往我们斯坦国逃了。也就是说,现在 \(\frac{ Q(j, i)}{ Q(i, j)}=\frac{\pi(i)}{\pi(j)}\) 了, \(\alpha(i, j)=\min \left\{\frac{\pi(j) Q(j, i)}{\pi(i) Q(i, j)}, 1\right\}=\min \left\{1, 1\right\}=1\) ,我们两边的签证官都不需要拒签,就只管放人过就好。

王子:

这个操作听起来有点耳熟……我知道了,像Wolff 算法我们就是这么做的,在按照概率长好cluster之后,就始终接受了!!!

签证官:

孺子可教也。

王子:

我还有最后一个问题:这个故事里,玄武国的出现是干嘛的?

签证官:

因为,刺客伍六七,是玄武国的首席刺客啊!!!!!

后记:

虽然早就对于细致平衡条件的公式推导烂熟于心,但这样的Picture我自己在最初学的时候,也没有这么明确。

虽然我暂时不跑路,但是愿天下都是用Wolff的,愿天下没有拒签,我认识的好朋友们,以及不认识的大家,人人有学上,人人有书读。

おやすみ~