Appendix A: The Worm Algorithm Appendix B: Tests of the Algorithm We have verified our algorithm and code by both solving the mod el exactly on a 2 × 2 lattice as well as comparing with the available results in the literature for µ = 0 in three dimensions. In this section we describe some of these tests. First, we compare the results of the various observables computed using the directed path algorithm with the exact results on a 2 × 2 lattice. The comparison is shown in Table VI. Since space and time are symmetric we expect ρ$_{s}$ = κ at µ = 0 . Our results reflect this fact. It turns out that χ is given by the average of c after many worm updates. The other observables are measured on each world-line configuration and averaged o ver the ensemble generated by the worm algorithm. 4. We set c = c + 1 . If x = x$_{first}$ we stop and complete one worm update. Otherwise we go to step 2 and repeat the above steps. 3. Let k be the current on the bond connecting x and x + α . If α is positive then with probability 2. We pick at random one of 2 d neighbors x + ˆ α, α = ± 1 , ± 2 , ..., ± d of the site x . 1. We pick a random point x on the lattice. We will also call this site x$_{first}$ . We set a counter c = 0 . I$_{k}$$_{+1}$ ( β )e µδ$_{α,t}$ I$_{k}$ ( β ) I$_{k}$$_{−}$$_{1}$ ( β )e − µδ$_{α,t}$ I$_{k}$ ( β ) we change k to k − 1 and move to the neighboring site x + ˆ α . Otherwise we stay at site x . we change k to k + 1 and move to the neighboring site x + ˆ α . If α is negative then with probability The worm algorithm for the partition function described by eq. 4 can easily be constructed using ideas from [10, 14, 20]. Here we outline the essential steps of the update for completeness. Each worm update is as follows 27