The Wolff algorithm,[1] named after Ulli Wolff, is an algorithm for Monte Carlo simulation of the Ising model and Potts model in which the unit to be flipped is not a single spin (as in the heat bath or Metropolis algorithms) but a cluster of them. This cluster is defined as the set of connected spins sharing the same spin states, based on the Fortuin-Kasteleyn representation.
The Wolff algorithm is similar to the Swendsen–Wang algorithm, but different in that the former only flips one randomly chosen cluster with probability 1, while the latter flip every cluster independently with probability 1/2. It is shown numerically that flipping only one cluster decreases the autocorrelation time of the spin statistics.
The advantage of Wolff algorithm over other algorithms for magnetic spin simulations like single spin flip is that it allows non-local moves on the energy. One important consequence of this is that in some situations (e.g. ferromagnetic Ising model or fully frustrated Ising model), the scaling of the Multicanonic simulation is , better than , where z is the exponent associated with the critical slowing down phenomena.
References
- ↑ Wolff, Ulli (1989-01-23). "Collective Monte Carlo Updating for Spin Systems". Physical Review Letters. 62 (4): 361–364. Bibcode:1989PhRvL..62..361W. doi:10.1103/PhysRevLett.62.361. PMID 10040213.
- Wolff, Ulli (1989), "Collective Monte Carlo Updating for Spin Systems", Physical Review Letters, 62 (4): 361–364, Bibcode:1989PhRvL..62..361W, doi:10.1103/PhysRevLett.62.361, PMID 10040213
- Bae, S.; Ko, S.H.; Coddington, P.D. (1995), "Parallel Wolff cluster algorithms", International Journal of Modern Physics C, 6 (2): 197, Bibcode:1995IJMPC...6..197B, CiteSeerX 10.1.1.138.1448, doi:10.1142/S0129183195000150
- Ferrenberg, Alan M.; Landau, D.P.; Wong, Y. Joanna (1992), "Monte Carlo simulations: Hidden errors from good random number generators", Physical Review Letters, 69 (23): 3382–3384, Bibcode:1992PhRvL..69.3382F, doi:10.1103/PhysRevLett.69.3382, PMID 10046804
External links
- Cluster Algorithms at Netlib
- Implementation in Julia: https://github.com/cossio/SquareIsingModel.jl