Original paper introducing the Hubbard model of competing itinerant hopping and on-site Coulomb repulsion.
doi.org/10.1098/rspa.1963.0204 ↗Fermi-Hubbard dimer operator (Jordan-Wigner encoded)
The two-site Fermi-Hubbard dimer Hamiltonian, mapped to qubits via the Jordan-Wigner transformation: nearest-neighbor hopping competing with on-site Coulomb repulsion.
Atlas stars stay in the public catalog. Saving this entry to your workspace starts an unstarred private copy.
The Hubbard model is the minimal Hamiltonian containing both itinerant kinetic energy and strong local correlation, making it the standard target for quantum simulation of strongly correlated electron physics — including, in its 2D form, proposed connections to high-temperature superconductivity.
Circuit & simulation
What this takes and returns
TakesNothingWhat joins here
No input port, deliberately. You measure a state with this entry; you do not apply it and pass a register on.
Nothing in the Atlas meets this end.
ReturnsNothingWhat joins here
No output port, deliberately. An observable is measured with, never applied, so there is no register to hand on.
Nothing in the Atlas meets this end.
Not a stage. You measure a state with this; you do not apply it and pass a register on. It has a width and deliberately no ports. See all 60 →
Where the map uses this
This record is an instance of an object the map names, so these are the processes that consume or produce one. None of them is about this record in particular.
Hamiltonian you can query 4 of 33 processes
- Graph-Laplacian finite differences hands one back
- Recast a non-Hermitian generator as Hamiltonian evolution hands one back
- Block-encode a matrix takes one
- Simulate Hamiltonian evolution takes one
How it works
The single-band Fermi-Hubbard model on a lattice with hopping and on-site interaction is
Two-site dimer. With 2 sites and 2 spins there are 4 fermionic modes , mapped to 4 qubits. Using the Jordan-Wigner transform with mode ordering ,
so a hopping term becomes acting on adjacent-index modes (with an extra -string factor if the modes are not adjacent in the chosen ordering), and each density term is diagonal.
Particle-number conservation. Both the hopping and interaction terms conserve total fermion number : hopping moves a fermion between sites without creating or destroying one, and the interaction term is purely diagonal in occupation. Consequently , which block-diagonalizes the Hamiltonian by total filling and is the symmetry sector structure any correct encoding must reproduce.
Physical content. For the model reduces to free fermions hopping on the lattice (band physics); for double occupancy is forbidden and, at half filling, the low-energy physics maps onto the antiferromagnetic Heisenberg model via a Schrieffer-Wolff-type superexchange argument () — directly connecting this operator to the Heisenberg XXZ operator elsewhere in this catalog. The model is believed (though not proven in 2D) to host a -wave superconducting regime near intermediate coupling, which is the primary reason it remains a central target for near-term quantum simulation.
Implementation
import numpy as np
from qiskit.quantum_info import SparsePauliOp
def hubbard_dimer(t: float, U: float) -> SparsePauliOp:
# Mode order: 0=1up, 1=1down, 2=2up, 3=2down
n = 4
terms, coeffs = [], []
# Hopping 1up-2up (modes 0,2) and 1down-2down (modes 1,3), with Z-string for JW
for (a, b) in [(0, 2), (1, 3)]:
for pauli, coeff in (("X", -t / 2), ("Y", -t / 2)):
s = ["I"] * n
s[a], s[b] = pauli, pauli
for k in range(a + 1, b):
s[k] = "Z"
terms.append("".join(reversed(s)))
coeffs.append(coeff)
# On-site interaction U * n_i_up * n_i_down = U/4 * (I-Z_up)(I-Z_down),
# expanded directly as Pauli strings.
for (up, down) in [(0, 1), (2, 3)]:
s0 = ["I"] * n
terms.append("".join(reversed(s0))); coeffs.append(U / 4)
s1 = ["I"] * n; s1[up] = "Z"
terms.append("".join(reversed(s1))); coeffs.append(-U / 4)
s2 = ["I"] * n; s2[down] = "Z"
terms.append("".join(reversed(s2))); coeffs.append(-U / 4)
s3 = ["I"] * n; s3[up], s3[down] = "Z", "Z"
terms.append("".join(reversed(s3))); coeffs.append(U / 4)
return SparsePauliOp(terms, coeffs).simplify()
H = hubbard_dimer(t=1.0, U=4.0)
N_op = SparsePauliOp(["".join(reversed(["Z" if k == i else "I" for k in range(4)])) for i in range(4)],
[-0.5] * 4) + SparsePauliOp("IIII", [2.0])
commutator = H.to_matrix() @ N_op.to_matrix() - N_op.to_matrix() @ H.to_matrix()
print("max |[H, N]| =", np.abs(commutator).max()) # ~0, confirming particle-number conservation
RESULT = {"max_commutator_norm": float(np.abs(commutator).max()), "conserves_particle_number": bool(np.abs(commutator).max() < 1e-9)}
Quantum vs classical
Classical baseline
Use a classical state-vector or matrix simulation at the same width, precision, and measurement objective.
Quantum claim
The quantum record demonstrates a state or operator behavior; it does not make classical simulation or communication costs disappear.
How to compare
Compare fidelity, samples, gate depth, noise, memory, and the cost of preparing and reading the state.
Declared gaps
Nobody has reviewed this record for gaps yet.
Literature & references
Analyzes Jordan-Wigner-encoded Hubbard Hamiltonians and their resource requirements for near-term quantum simulation.
arxiv.org/abs/1912.06007 ↗