About this map
Sections
What this is
Quantum algorithms are not written from scratch. They are assembled from a small number of reusable steps, and almost every published method is a different route through the same handful of them.
This is a map of those routes. Circles are the things an algorithm can be holding. Lines are the steps that carry you from one to the next. A method is a path across.
Nothing here is generated. Every line was read out of a paper and checked against it.
How to read it
- Something you can hold — a state, a matrix, a circuit, an answer.
- The same, in the middle of a step you have opened.
- A step. Someone has published a way through it.
- A step whose way through has not been pinned to one method.
- A step nothing published fills yet.
- A step you have opened. What is drawn inside it is how it was done.
- There is a record in the repository for this one.
How to move around
- Two fingers move the map. Pinch to zoom, or hold ctrl and scroll.
- Click a step to open it in place — everything else stays where it is.
- Click a name to read the full record without leaving the map.
- Arrow keys move, plus and minus zoom, zero puts it back.
What a line is claiming
A solid line means a paper puts those two steps together and we have the citation. A long-dashed line means the route is recorded but no single method has been named for that step. A short-dashed line means nothing published fills it — the step is real, the way through is not written yet.
A count after a step's name — ×T/h, ×O(κ) — means the route walks that step that many times rather than once. It is the source's own symbol, and the card says what it stands for and what one turn costs. A step with no count is a step no source we read said is repeated, which is not the same as one taken once.
A line drawn nested under another, on the soft shaded band behind it, is a narrower version of the line above it: the same construction, re-analysed or re-tuned, filling the same step. It is why two lines can draw the identical interior and still be two entries. Lines outside the band are alternatives to their neighbours, not versions of them.
The map does not hide the gaps. An empty step is drawn as an empty step.
What is not here yet
The map covers the algorithm literature. The repository covers circuits and primitives. They overlap less than you would expect, and where a method has no record we say so on its page rather than leaving the space blank.
Where something named here does have a record, its name links straight to it.
Method
TETRIS-ADAPT-VQE ansatz
Keep ADAPT's habit of growing the ansatz from measured gradients, and stop adding one operator per round. Several operators acting on disjoint qubits can go in together, filling the same layer instead of stacking — the same circuit, packed rather than piled.
A narrower version of: ADAPT-VQE adaptive ansatz
Open the full recordFills the slot: Choose a parameterised trial state
Anastasiou et al. describe the change as lifting exactly one rule: this is "a modified version of the ADAPT-VQE algorithm in which the one-operator-at-a-time rule is lifted to allow for the addition of multiple operators with disjoint supports in each iteration". What it buys is stated without a number and with its limits named — the result is "denser but significantly shallower circuits, without increasing the number of CNOT gates or variational parameters", and "its advantage over the original algorithm in terms of circuit depths increases with the system size". It also cuts the measurement overhead ADAPT pays between rounds: "the expensive step of measuring the energy gradient with respect to each candidate unitary at each iteration is performed only a fraction of the time compared to ADAPT-VQE", because fewer rounds are needed once a round may add more than one operator. The motivation is hardware rather than accuracy — adaptive algorithms "are not yet viable due, in large part, to the severe coherence time limitations on current devices".
The Hamiltonian whose ground state is wanted, together with whatever structure is to be respected — particle number, spin, point-group symmetry, a reference determinant — and the connectivity and native gate set of the device the family has to run on.
Hamiltonian whose eigenvalues are wanted → Parameterised circuit familysort by gradient, pack disjoint-support ops
Each iteration starts from ADAPT's per-operator gradient, , valid under assumption: antihermiticity of every pool generator. TETRIS keeps this one gradient measurement per iteration but replaces the single append with subroutine 4': sort all pool operators by gradient norm, descending, then repeatedly append the next-largest-gradient operator whose qubit support is disjoint from every operator already added this iteration, each new parameter set to zero, approximation: continuing by this greedy descending-gradient order rather than jointly choosing the disjoint subset that lowers the energy most, until every qubit is covered or no disjoint-support operator with nonzero gradient remains.
approximationassumption
A circuit family with a fixed structure and free real parameters, together with the number of those parameters — which is the size of the classical search problem handed to the next layer.
- Estimate an observable
Given the ability to prepare and a description of an observable , return a classical scalar within of at confidence . The state is never returned; only the number is.
What TETRIS hands down is a single state — the current ansatz at its optimized parameters — together with the whole operator pool; what comes back is one number per pool operator, and the quantity the selection actually uses is its norm, . ADAPT-VQE consumes only from that returned vector; TETRIS's subroutine 4' consumes the ranking itself, descending past the maximum and keeping each entry whose qubit support is disjoint from those already kept, so estimates well below the largest decide what enters the layer. Reading deeper costs the layer no extra calls: the gradients "need only be measured once per iteration of the algorithm as usual". approximation: every operator packed into one iteration is ranked by a gradient estimated on , the state before any of that iteration's operators were appended — none is re-estimated as the layer fills
approximation
given Hamiltonian H on Q qubits (already qubit-mapped, e.g. Jordan-Wigner, Sec. II);
operator pool P = {P_i}, antihermitian generators -- typically the qubit
or QE pool (Eqs. 11-13), chosen over the fermionic one (Eqs. 7-8) because
their operators touch fewer qubits each; reference state |Psi_ref>,
usually Hartree-Fock; gradient-norm convergence threshold eps
requires P_i^dagger = -P_i for every pool operator P_i
# antihermiticity is what turns the raw energy derivative into the
# commutator expectation value used below (Sec. II B, at Eq. 6)
# --- outer ADAPT loop: grow the ansatz one layer at a time (Sec. II B, steps 1-6) ---
Psi^(0) = |Psi_ref>; ansatz = [ ] (ordered list of (P_i, theta_i) pairs); k = 0
loop
# --- one gradient sweep, the whole pool handed to observable-estimation ---
{g_i^(k)}_{P_i in P} = observable-estimation(H, Psi^(k), P)
# g_i^(k) = <Psi^(k)| [H, P_i] |Psi^(k)> (Eq. 6)
# measured once per iteration, however many operators this iteration
# goes on to pack below: 'this can be done without measuring any
# additional gradients compared to ordinary ADAPT-VQE since the
# gradient of each pool operator need only be measured once per
# iteration of the algorithm as usual'
if sqrt(sum_i (g_i^(k))^2) < eps: # step 3
return ansatz
# TETRIS's own text says only 'the pool gradient norm' -- this
# step is inherited unchanged from ADAPT-VQE (ref [15]), which
# resolves it explicitly as the L2 norm of the gradient
# VECTOR across the whole pool, not any single |g_i^(k)|
# 'ADAPT-VQE has converged, and the algorithm terminates'
# (Sec. II B, step 3) -- TETRIS reuses this criterion as-is
# the paper's own numerics used eps = 1e-7 (Sec. III, opening
# paragraph) -- a run choice, not part of the algorithm itself
# --- subroutine 4': pack disjoint-support operators into one layer ---------
order = pool operators sorted by |g_i^(k)|, descending # step 4'(a)
covered = {} # union of qubit supports used this iteration
layer = [ ]
loop
pick the first P_i in order with support(P_i) disjoint from covered
and g_i^(k) != 0 # step 4'(b)
if no such P_i exists: break # step 4'(d)
append (P_i, theta_i = 0) to layer
covered = covered union support(P_i)
if covered = {all Q qubits}: break # step 4'(c)
# the order above is fixed by gradient magnitude alone -- greedy, NOT a
# joint search for the disjoint subset that would lower the energy most
ansatz = ansatz ++ layer
# every pair in layer sits on qubits none of the others touch, so
# the whole layer can be 'implemented simultaneously in the
# circuit' (Sec. IV, point a) -- one packed layer per iteration,
# in place of ADAPT-VQE's single operator
(ansatz, Psi^(k)) = optimize(ansatz)
# 'perform a VQE subroutine to update all parameters in the
# current ansatz' (Sec. II B, step 5) -- the optimum overwrites
# each theta_i stored in ansatz itself, not just Psi^(k), since
# the return line below reads theta_i off of ansatz directly
# step 5 does not specify how the parameters are initialised;
# Sec. III D tests recycling the previous round's optimum for
# pre-existing operators ('warm start') against cold-start and
# 300 random draws and reports it as the usual, effective choice
# -- an empirical finding, not part of the step-5 definition
k = k + 1
return ansatz, read as prod_layers ( prod_{(P_i,theta_i) in layer} exp(theta_i P_i) )
applied to |Psi_ref> -- a parameterised circuit family, each layer's
gates scheduled simultaneously, handed to the calling VQE loopAnastasiou, Chen, Mayhall, Barnes and Economou price TETRIS-ADAPT-VQE only relative to ADAPT-VQE. Measured at ADAPT-VQE convergence, averaged over an unenumerated set of bond lengths with failed geometries excluded and never counted: the circuit-depth ratio runs to across H4, LiH, H6 and BeH2 on 8 to 14 qubits, reported separately for the qubit and QE pools and growing with system size (Table I), and pool-gradient measurements fall 53% to 70%, pools not resolved and no operator grouping for simultaneous measurement assumed (Table II). CNOT and variational-parameter counts are, in the authors' words, "roughly the same" as ADAPT-VQE's, not smaller. Depths assume all-to-all connectivity, Qiskit optimization level 1, and ADAPT-VQE given the same concurrency. Each iteration still measures for every pool operator; packing adds no gradients. Nothing bounds the iteration count — the authors merely expect the round reduction to be "roughly " for qubits, assuming a Jordan-Wigner, double-excitation-dominated ansatz — and the running text's only iteration count is 13, for H4 at 3.0 Angstrom. Absolute depths and CNOT counts appear only in Figs. 4 and 5.
None found yet.
None found yet.
TETRIS-ADAPT-VQE · Qiskit
From the repository — run, not written up from a paper · unsupported
About
Operators with disjoint support are packed into the same adaptive layer to reduce circuit depth.
Methods
None found yet.
Data
None found yet.
Code
Qiskit
Results
Literature-backed method record; algorithmic scope and evidence boundary reviewed, with no benchmark run claimed.
- TETRIS-ADAPT-VQE
Operators with disjoint support are packed into the same adaptive layer to reduce circuit depth.
References
- TETRIS-ADAPT-VQE: An adaptive algorithm that yields shallower, denser circuit ansätze
Panagiotis G. Anastasiou, Yanzhu Chen, Nicholas J. Mayhall, Edwin Barnes, Sophia E. Economou · 2022
Where the routes meet
Every circle is drawn once. This step has no smaller object recorded inside it, so the strands between its two circles are the recorded ways of taking it — one strand per method.
13 recorded ways of doing Choose a parameterised trial state; 11 are drawn — the other 2 are refinements with the same internals, folded into their parents' cards. Nothing smaller is recorded inside it, so there is no object in the middle to draw.
Everything on this figure that opens is open.
Of the routes that have been taken apart, 15 are built entirely from named slots, 15 hand off part of the work and finish the rest themselves, and 20 are one undivided act. None of the three is a defect; they are different things to reuse.
Every line on this figure, in words
The lines on this figure
- Unitary coupled-cluster singles and doubles
- Hardware-efficient ansatz
- ADAPT-VQE adaptive ansatz
- qubit-ADAPT-VQE ansatz, a narrower version of ADAPT-VQE adaptive ansatz
- Batched ADAPT-VQE ansatz, a narrower version of ADAPT-VQE adaptive ansatz
- k-UpCCGSD ansatz
- Qubit coupled-cluster ansatz
- Particle-hole coupled-cluster circuits
- Orbital-optimized coupled-cluster circuits
- Symmetry-preserving state-preparation circuits
- Generalized singles and doubles ansatz
- Every line on this figure is one a recorded source takes.
Open the cardRead the full write-up
Where you are
Path
- Estimate an excited-state energy
- Choose a parameterised trial state
Ways through: 13
- Unitary coupled-cluster singles and doubles
- Hardware-efficient ansatz
- ADAPT-VQE adaptive ansatz
- qubit-ADAPT-VQE ansatz
- k-UpCCGSD ansatz
- Qubit coupled-cluster ansatz
- Particle-hole coupled-cluster circuits
- Orbital-optimized coupled-cluster circuits
- Symmetry-preserving state-preparation circuits
- TETRIS-ADAPT-VQE ansatz
- Iterative qubit coupled cluster
- Generalized singles and doubles ansatz
- Batched ADAPT-VQE ansatz
Routes that skip it
No recorded route avoids this step.
Narrower kinds
Nothing recorded is a narrower kind of this.
Every step you can open
1 of these have an object recorded in the middle; the rest open into the methods that fill them.
- Solve a nonlinear ODE dy/dt = F(y)
- Replace a spatial domain with a finite grid
- Discretize a PDE into one linear system
- Embed a nonlinear system into a linear one
- Solve a linear ODE du/dt = A(t)u + b(t)
- Recast a non-Hermitian generator as Hamiltonian evolution
- Choose a time discretization or propagator approximation
- Quantum linear solve
- Matrix function
- QSP phase factors
- Polynomial approximation
- Block-encode a matrix
- Prepare an input state
- Amplify a success branch
- Simulate Hamiltonian evolution
- Estimate an observable
- Compile a circuit to a specific device
- Satisfy the hardware connectivity constraint
- Approximate a continuous rotation in a discrete gate set
- Recover a noiseless expectation value by post-processing
- Build logical qubits at a target logical error rate
- Estimate a Hamiltonian's ground-state energy
- Choose a parameterised trial state
- Minimise the objective over the parameters
- Estimate an excited-state energy
- Measure what the machine can actually do
- Recover the period of a periodic function
- Estimate the eigenphase of a unitary
- Find the item a check accepts
- Walk a graph to the vertex you want
- Search a cost Hamiltonian for the assignment it minimises
What is on this map, counted
What is here, counted
147 nodes — 31 slots and 116 methods.
76 of the 147 link to a record in the Atlas, between them naming 89 records. The rest name papers and nothing else: this graph describes work the catalogue has not got yet, and the nodes with no record are the list of what a corpus pass has to go and read.
0 slots have no method recorded, and 32 methods have not been taken apart. Both are shown as what they are rather than left blank.
Every claim here rests on a source. This graph cites 140 papers; they and the 172 the Atlas cites alone are registered in one place, with what each reports and everywhere it is cited from. Papers