“Know how to solve every problem that has been solved.” “What I cannot create, I do not understand.” — Richard Feynman

The Fermion Sign Problem: Why 2D Hubbard Is Unsolved

Strongly Correlated

What you need to know first 23 concepts, 8 layers

The requisite-knowledge inventory for this page, bottom-up: the primitives at the base, combined upward until you reach what this page assumes. Skim the layers you already own; start wherever the ground gets unfamiliar.

  1. base
  2. L1
  3. L2
  4. L3
  5. L4
  6. L5
  7. L6
  8. L7
  9. you are here

7 of these are concepts without a dedicated page yet — the grey chips. Following the linked ones first makes the rest land.

The Mott and DMFT pages kept ending at the same wall: the two-dimensional Hubbard model — the minimal model of the cuprate superconductors — is unsolved, and the reason has a name. It is not that the model is subtle to write down or that no method touches it. It is that the one method which is otherwise exact and unbiased for quantum many-body systems, quantum Monte Carlo, is defeated by a single number that shrinks exponentially: the average sign. This page builds a real determinant QMC on clusters small enough to enumerate by brute force — no Monte Carlo noise, every number exact — watches the sign hold at one where the physics protects it, and watches it collapse the moment frustration switches the protection off. That collapse, extrapolated to the systems people actually care about, is why the doped Hubbard model has resisted forty years of computing.

Where the sign comes from

Monte Carlo integrates by sampling: write a quantity as over configurations , draw configurations with probability proportional to , and average. It works because is a probability — non-negative. For fermions it is not. Antisymmetry — the minus sign an electronic wavefunction picks up when two particles swap — leaks into the weights, and some come out negative. A negative probability is meaningless, so you do the only thing you can: sample the absolute values and carry the sign as an observable,

Everything now rides on that denominator. The average sign is a ratio of two partition functions — the physical one and the fictitious "bosonic" one built from the absolute weights — so it is an exponential of their free-energy difference:

is a free-energy density difference, strictly positive whenever the sign is not identically one, so the average sign falls off exponentially in — inverse temperature times system size. And the statistical error on any measured quantity scales as for samples. To hold the error bar fixed while halves, you must quadruple the sampling. Push to low temperature or large size and the cost grows exponentially. That is the sign problem: not a failure of cleverness but a variance that explodes faster than any polynomial amount of computing can absorb.

A determinant QMC you can enumerate by hand

Determinant QMC turns the interacting problem into free fermions moving in a fluctuating field. Trotter-decompose into imaginary-time slices; on each slice, decouple the Hubbard with a Hubbard–Stratonovich transformation that trades the two-body interaction for a discrete auxiliary spin field coupled to the electrons. At fixed field the electrons are non-interacting, and tracing them out gives a weight that is a product of two determinants, one per spin:

A production code samples the fields . On a small cluster we can do better and enumerate all of them, making the average sign an exact number rather than a noisy estimate — the cleanest possible way to see the problem, with the Monte Carlo taken out of it.

# Determinant QMC weight for a Hubbard cluster, by EXACT field enumeration.
# Trotter-split e^{-beta H}, decouple U with a discrete Hubbard-Stratonovich spin
# field s_{i,l} = +/-1, trace out the (now free) fermions -> a product of two
# determinants per field configuration. We sum over ALL 2^(L*L_tau) fields, so
# there is no Monte Carlo noise: every <sgn> below is exact.

def dqmc_enumerate(L, t, U, mu, beta, Ltau):
    dtau = beta / Ltau
    eK  = expm(-dtau * K_matrix(L, t, mu))          # free hopping propagator
    lam = np.arccosh(np.exp(dtau * U / 2))          # HS coupling: cosh(lam)=e^{dtau U/2}
    I, Wsum, absWsum = np.eye(L), 0.0, 0.0
    for bits in product((1, -1), repeat=L * Ltau):  # every auxiliary-field config
        s = np.array(bits, float).reshape(Ltau, L)
        W = 1.0
        for sigma in (1.0, -1.0):                    # up sees +lam*s, down sees -lam*s
            B = I.copy()
            for l in range(Ltau):
                B = eK @ (np.exp(sigma * lam * s[l])[:, None] * B)
            W *= np.linalg.det(I + B)                # <- can be NEGATIVE: the sign
        Wsum += W;  absWsum += abs(W)
    return Wsum / absWsum                            # <sgn> = Z / Z_|W|

Two checks gate the physics before any sign is trusted. First, on a bipartite lattice at half filling the weight is provably non-negative — particle–hole symmetry ties the two determinants together so their product never goes below zero — and the code returns to machine precision. Second, the determinant partition function, with its Hubbard–Stratonovich prefactor restored, converges to the exact from diagonalization as the Trotter step shrinks, with the expected error:

Determinant QMC by exact field enumeration (Hubbard, U=4, t=1):

  validation
    half filling, bipartite:  <sgn> = 1.00000000   (L=2 and L=4, exact)
    Z_DQMC -> Tr e^{-beta H} as dtau -> 0:
        dtau=1.00   ratio 1.972
        dtau=0.50   ratio 1.264
        dtau=0.33   ratio 1.116
        dtau=0.25   ratio 1.065      (Trotter error ~ dtau^2 -> 0)

  frustration turns the sign problem ON  (half filling, mu=0)
    L=2 ring (bipartite):   <sgn> = 1.000000  at every beta      -> protected
    L=3 ring (triangle):    beta*N =  6.0    <sgn> = 0.986
                            beta*N =  7.5    <sgn> = 0.948
                            beta*N =  9.0    <sgn> = 0.887
                            beta*N = 10.5    <sgn> = 0.814        -> collapsing

Frustration switches the protection off

Semilog plot of average sign versus beta N. The blue curve for the bipartite L=2 ring stays pinned at 1 across the whole range. The red curve for the frustrated L=3 triangle starts at 1 and falls steadily to about 0.81, curving downward on the log axis.

Here is the sign problem being born. Both systems are at half filling, so nothing is doped; the only difference is geometry. The bipartite two-site ring keeps at every temperature — the particle–hole argument holds, every weight is non-negative, QMC would run forever without trouble. The frustrated triangle — three sites, an odd ring, the smallest lattice on which antiferromagnetic bonds cannot all be satisfied at once — is not bipartite, the protection evaporates, and the average sign slides from one down through as grows. Extend that curve to the low temperatures where ground-state physics lives and it heads for zero. The exact same frustration that makes the triangular antiferromagnet on the quantum magnetism page a candidate spin liquid is what makes it unreachable by sign-free QMC. Frustration and the sign problem are two names for one fact.

The two ways in, and why 2D Hubbard sits in the crossfire

The protection that keeps has two ways to fail. Frustration — a non-bipartite lattice — is the one small enough to enumerate, and it is what the figure shows. Doping is the other: pull a bipartite lattice away from half filling and the particle–hole symmetry that paired the two determinants is gone. On clusters this small the doped case stays sign-free — finite size protects it, and a real doped-Hubbard sign problem only switches on at the larger sizes and lower temperatures that exact enumeration cannot reach — but it is the more consequential failure, because the cuprate superconductors are doped Mott insulators. The two-dimensional Hubbard model at finite doping and low temperature sits exactly where every knob is turned to worst case: large , small , no bipartite protection. That is the unsolved problem. DMFT, the previous page, dodges it by mapping the lattice to a single impurity — but the price was throwing away the momentum dependence, and restoring it with cluster methods walks straight back into the sign problem in the cluster solver.

No universal cure — and the ways people cope

The sign problem is not merely unsolved; it is provably hard. Troyer and Wiese showed in 2005 that a general, polynomial-time cure would let you solve NP-complete problems in polynomial time — so, short of a revolution in complexity theory, no universal fix exists. What does exist is a catalogue of ways around specific instances:

Try First

Each prompt asks a checkable question about the working code or math above — predict an output, derive a sign, state an invariant, find a bug. Commit to an answer before clicking "reveal." That commitment is the whole point: if your answer matched, you understand the piece you were looking at; if it didn't, that's the part worth re-reading.

predict
A calculation runs comfortably at average sign . You now double the system size at fixed temperature, and the free-energy-difference law holds. What does the sign become, and what happens to the compute cost to keep the same error bar?
why does this work
The average sign depends on how you set up the Monte Carlo — the auxiliary field, the basis, the worldline mapping — even though the physical answer does not. Why is a merely representational nuisance nonetheless a genuine barrier?
what if
At half filling on a bipartite lattice the sign is exactly one and QMC is unbeatable; the moment you dope, it fails. Why does nature put the interesting physics — high-temperature superconductivity — precisely on the wrong side of that line?

Reproduce it

scripts/gen_sign_problem.py builds the determinant weight from the Hubbard–Stratonovich decoupling, enumerates every auxiliary-field configuration, and reports the exact average sign. Two validations gate it: on bipartite half-filled clusters, and against full diagonalization as . Only then does the frustrated-triangle collapse — from to as grows — carry weight. The enumeration caps the reach at a handful of sites and time slices; everything past that is the exponential wall this page is about.