I am trying to self-learn concepts at the intersection of physics and programming. When reading up on the Ising Model, I find that the typical programming tutorial (such as this one) covers the Metropollis-Hastings algorithm; most online resources show this algorithm being used to flip one spin-state at a time until the stopping criteria is reached. I was thinking that it might make more physical sense to flip multiple states at one time instead of sequentially flipping one at a time (like synchronous vs asynchronous updates). While reading articles on wikipedia, I came across the Wolff algorithm, which does perform multiple updates at once. The wikipedia article is very vague about how the Wolff algorithm works. I would like to better understand the reasons for the synchronous vs asynchronous version of Metropolis-Hastings, and would like to fully understand how the Wolff algorithm works.

  1. Aside from the single-vs-multiple updates per iteration, are there more differences between the Metropolis-Hastings and Wolff algorithms?

  2. Why do the Metropolis-Hastings tutorials typically show one sequential flip to another (instead of multiple flips at once)?

  3. Can you recommend a good source to better understand the Wolff algorithm? I would like to code both methods and compare output.



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.