常用更新算法¶
Monte Carlo 更新算法的目标有两个:保证目标分布正确,并尽量减少自关联时间。不同算法的差别主要在于 proposal 如何构造,以及一次更新能改变多大尺度的构型。
Metropolis¶
Metropolis 是最基础的局域更新。先提出一个候选构型 \(s'\),再按
接受或拒绝。若 proposal 对称,则只需要权重比 \(W(s')/W(s)\)。
优点是通用、简单、容易实现。缺点是临界点附近会出现临界慢化,局域更新需要很久才能改变大尺度结构。
Heat Bath¶
heat bath 更新不只是提出一个候选构型,而是直接从局域条件分布中抽样。例如固定其他自由度后,对单个变量 \(s_i\) 使用
这样局域变量总是被接受。它常用于自旋模型、格点场论和离散变量模型中。相比 Metropolis,heat bath 通常减少拒绝率,但仍然是局域更新。
Cluster 更新¶
cluster 更新的思想是一次翻转一整块强关联自由度,而不是一个点。典型例子包括 Swendsen-Wang 和 Wolff 算法。
以 ferromagnetic Ising 模型为例,相同方向的相邻自旋可以按概率
连成 cluster,然后整体翻转。这样可以在临界点附近快速改变大尺度磁畴,显著减小动态临界指数。
cluster 算法的核心是引入几何表象:把原本的自旋构型转化为自旋与 bond 的联合构型,使大尺度关联能够被一次更新处理。
Loop 更新¶
loop 更新常见于量子 Monte Carlo 和几何表象中。它把构型分解成闭合 loop,然后翻转或重连整条 loop。与 cluster 类似,loop 更新也是非局域更新,但更适合世界线、顶点模型、量子自旋模型等具有约束结构的问题。
loop 更新的优点是能保持局域约束,同时改变长距离结构。难点是需要为具体模型设计合适的图形规则。
Worm 更新¶
worm 算法通过临时引入两个缺陷,把原本只在配分函数空间 \(\mathcal Z\) 中的闭合构型,扩展到
在格林函数空间 \(\mathcal G\) 中,两个 worm head 可以移动、产生或删除 kink,从而高效改变世界线拓扑。回到 \(\mathcal Z\) 空间后得到新的物理构型。
worm 算法特别适合测量格林函数、处理粒子数涨落、更新世界线构型和降低拓扑障碍。
Lifted 思想¶
lifted 或 event-chain 类算法通过扩展状态空间,引入额外方向、动量或事件变量,让 Markov chain 更少做随机回头路。它通常不满足传统 detailed balance,而满足更一般的 global balance。
直觉上,普通随机游走频繁来回抖动;lifted 更新则让构型在某个方向上持续移动,直到触发事件再改变方向。这类方法在连续变量系统、硬球模型和一些自旋模型中能显著降低自关联。
选择算法的标准¶
实际选择更新算法时,可以按下面顺序判断:
- 如果只是验证模型或写基准程序,先用 Metropolis。
- 如果局域条件分布容易抽样,可以尝试 heat bath。
- 如果临界慢化严重,优先考虑 cluster 或 loop。
- 如果构型是世界线或需要测格林函数,考虑 worm。
- 如果拒绝率高或随机游走慢,可以研究 lifted 或 rejection-free 方法。
无论算法多复杂,最终都要回到同一件事:目标分布是否正确,自关联时间是否足够短。