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
Minimise the energy variance
Minimise how much the energy fluctuates rather than the energy itself. Any eigenstate has zero variance, so the objective's own value tells you whether you have arrived — which the energy never does, since a low number is only low relative to a minimum nobody knows.
Open the full recordFills the slot: Minimise the objective over the parameters
Zhang et al. name the property the objective is chosen for: variance-VQE "can be viewed as an self-verifying eigensolver for arbitrary eigenstate by designing, since an eigenstate for a Hamiltonian should have zero energy variance". Two consequences they state and this slot cares about. It is not selective — the variance is zero at EVERY eigenstate, so on its own it does not say which one was reached, and they find "optimization of a combination of energy and variance may be more efficient to find low-energy excited states than those of minimizing energy or variance alone". And it is expensive in the way any variance is, since it needs the square of the Hamiltonian; their answer is to stop evaluating all of it — "the optimization can be boosted with stochastic gradient descent by Hamiltonian sampling, which uses only a few terms of the Hamiltonian and thus significantly reduces the quantum resource for evaluating variance and its gradients".
A parameterised circuit family; an objective function of its parameters, evaluated only through estimates bought with a finite shot budget; a starting point; and a stopping rule — a tolerance, an iteration cap, or an exhausted budget.
Parameterised circuit family → State you can preparedrive variance to zero at an eigenstate
The paper builds the cost function directly as the energy variance (Eq. 2), with the expectation in the ansatz state . assumption: is written as , a sum of local terms , each a tensor product of a few Pauli matrices, with real coefficients . Under this decomposition reduces to a bilinear form in the quantum covariance matrix (Eq. 3), giving (Eq. 4), each element measurable on the quantum processor. Gradient descent then updates (Eq. 6), using (Eq. 5).
assumption
A preparation routine for the state at the parameters the search stopped at, and the total number of objective evaluations it consumed. The routine is returned whether or not the search found a minimum; that it stopped is not evidence that it converged.
None found yet.
given Hamiltonian H = sum_{i=1}^{N} c_i L_i, each L_i a tensor product of a
few Pauli matrices (a "local term"), real coefficients c_i (Sec. II A)
ansatz |psi(theta)> = U(theta)|R>, the same parameterized-circuit
form used for energy-minimizing VQE (Sec. II A)
initial parameters theta_0, learning rate eta, iteration count T
requires every element of the covariance matrix built below is obtainable
as a measurement on the quantum processor -- "Note that each element of
G(theta) can be obtained on a quantum computer" (Sec. II B)
# the paper draws no further conclusion from that sentence. Reading it
# as "the method never forms a classical description of H^2" is a
# gloss on it, not a claim the paper states anywhere
# --- cost function: the energy VARIANCE, not the energy ---------------------
Delta(theta) = <psi(theta)| H^2 |psi(theta)> - <psi(theta)|H|psi(theta)>^2 (Eq. 2)
# chosen because it "is zero only for eigenstates and positive for
# others" -- so it is zero at EVERY eigenstate, not only the ground
# state: "As all eigenstates always have zero variance, optimizing
# variance-VQE by minimizing energy variance may lead to any
# eigenstate" (Sec. III, Sec. II A)
# so Delta(theta)=0 certifies that SOME eigenstate was reached; it
# does not by itself pick which one -- see the closing note
# --- reduce the cost function to a measurable bilinear form -----------------
G_ij(theta) = <L_i L_j>_theta - <L_i>_theta <L_j>_theta (Eq. 3)
Delta(theta) = c^T G(theta) c [>= 0 since G(theta) is positive semi-definite] (Eq. 4)
# each of the O(N^2) entries of G(theta) is measured on the quantum
# processor (Sec. II B)
# this is the price of the objective: measuring H^2 this way costs
# O(N^2), against O(N) for the energy itself --
# "calculating energy variance costs O(N^2), which is larger than
# a cost of O(N) for calculating energy" (Sec. II B)
# --- gradient descent on the variance ----------------------------------------
# the paper presents this as one of two options, not the method: "Minimization
# energy variance is carried with gradient free or gradient descents" (Sec. II B)
for t = 1 .. T:
dDelta(theta_{t-1})/dtheta = c^T ( dG(theta_{t-1})/dtheta ) c (Eq. 5)
# each dG_ij/dtheta is taken by numerical differentiation or the
# parameter-shift rule -- no closed form is assumed (Sec. II B)
theta_t = theta_{t-1} - eta * dDelta(theta_{t-1})/dtheta (Eq. 6)
# the paper's own H2 demonstration takes the gradient-free branch
# instead (Scipy's default optimizer) over randomly sampled theta_0;
# the update above is the form the paper derives explicitly, not the
# optimizer it runs there (Sec. III A)
return |psi(theta_T)> and Delta(theta_T) as the self-verification value
# a small Delta(theta_T) (the paper's runs land below 1e-8) is evidence
# theta_T sits on SOME eigenstate; under random theta_0 the run lands
# on the ground state far less often than on an excited state --
# "solutions to ground states are far less than excited states" (Sec. III A)
# picking a PARTICULAR eigenstate is a separate construction, not part
# of this objective: either a set of orthogonal ansatzs summed into
# one weighted-variance cost (Eq. 7), or a mixed cost that adds the
# energies back in (Eq. 10) -- "Here we develop another method, using
# a set of orthogonal ansatz wavefunctions" (Sec. III B)
# cutting the O(N^2) measurement cost by Hamiltonian sampling at rate s
# (which "can be reduced by a factor s^2", Eq. 12) is also a separate,
# empirically-motivated addition: at small s "the variance ceases to
# converge at small values... to solve this issue, we can turn to no
# sampling (sampling rate s = 1) at the late stage of optimization" --
# a numerical observation, not a proven convergence result (Sec. IV)Zhang, Yuan and Yin: for with Pauli-product terms, the energy variance needs the elements of , so "calculating energy variance costs , which is larger than a cost of for calculating energy" (Sec. II B). That counts distinct expectation values, not shots, and scales in the term count alone: no per-parameter circuit count is given, each taken only "using numeral differential or the shift rule". Hamiltonian sampling at rate cuts the elements to , but their simulations, not a proof, confine that saving to the early stage: on 4-qubit , match no sampling, then stall above zero, forcing late. Nothing bounds the iteration count; the runs are gradient descent at over 50 to 100 steps (Figs. 3-5), with 9 and 21 UCC parameters for and 6-qubit .
None found yet.
None found yet.
Variance minimisation of the Lipkin-Meshkov-Glick spectrum on IBMQ manila and IBM nairobi
- Variance Minimisation of the Lipkin-Meshkov-Glick Model on a Quantum Computer
Isaac Hobday, Paul Stevenson, James Benstead · 2024
About
The abstract states the target and the claim together: "Here we present work in which we use a variance minimisation method to find the full spectrum of energy eigenvalues of the Lipkin-Meshkov-Glick model; an exactly-solvable nuclear shell model-type system", and "Using these IBM quantum computers we are able to obtain all eigenvalues for the cases of three and seven fermions (nucleons) in the Lipkin-Meshkov-Glick model." Section III makes the objective swap in one sentence — "Here, we adapt the typical VQA to seek the minimum of the variance of the Hamiltonian, " (Eq. 6) — and then states the same non-selectivity this record's own conditions carry, with a caveat the record does not carry: "The variance is a positive semi-definite function which is zero when the wave function is an eigenfunction of the Hamiltonian. Hence, its set of equally deep global minima will correspond to the set of eigenstates of the Hamiltonian, except possibly for accidental zeros of the variance which can be checked for." **The physics motivation is nuclear, not chemical.** The model is fixed at " and " (Sec. IV A), "making the common choice to ignore the term which does not affect ground state correlations" (Sec. I), and the paper is explicit that it wants the whole spectrum, not a single excited state.
Methods
The objective is the only change to the loop, and Sec. III prices it qualitatively: "This method allows the use of the same quantum circuit ansatzes as when using the VQE to find the ground state of directly, but requires additional circuit measurements to be performed for the terms in . This increases the time taken to perform calculations but does not introduce any additional circuit depth or variational parameters to the calculations compared with an energy-minimizing ground state VQE." Both and reach the device as explicit Pauli sums printed in the paper: for , (Eq. 9) and (Eq. 13); for , Eq. 16 is a constant plus six Pauli strings and Eq. 18 a constant plus nine. **The paper states no circuit count anywhere, and the arithmetic on those equations is milder than it looks**: Sec. IV D's rule is "one circuit for each term in the Hamiltonians", and Eq. 16's set is a proper subset of Eq. 18's , so the variance needs nine distinct measurement circuits where the energy needs six, three more rather than nine more; for the sets of Eqs. 9 and 13 are identical, , and the variance costs no circuit the energy has not already bought. That subset reading is arithmetic on the printed equations, and Sec. IV D's rule is stated for the hardware runs, carried to on Sec. V C's "again using 20,000 shots per circuit". The ansatz is a single on one qubit for (Fig. 2) and "a sufficiently general circuit for this case, with three parameters" on two qubits for (Fig. 5). "In our implementation, we make use of the IBM qiskit environment to perform our VQE on real quantum hardware, as noted later where individual results are presented, using qiskit's classical COBYLA solver for the ansatz parameter optimisation" (Sec. III). Two mitigation layers sit under the hardware runs. Readout bias is corrected per iteration: "These additional circuits prepare a state that represents each possible output of the quantum computer, using Pauli X gates", two extra circuits for a single qubit, rebuilt "per iteration step of the VQE" so that "up-to-date corrections" are applied. For only, Sec. V C adds "a method of CNOT mitigation" — identity-insertion zero-noise extrapolation — which "adds pairs of CNOT gates to the circuit where there is a CNOT present, allowing for a linear extrapolation to the theoretical case where there are no CNOT gates in the circuit". **One hardware figure is not an optimisation at all**: Fig. 3 is "a parameter sweep, since this is feasible for a single parameter and will help visualise the results" (Sec. IV D), with the caption reporting 50 iteration steps; the iterative minimisations are Figs. 4 and 7.
Data
No dataset, and none is needed — every input is written out in the paper. The two inputs are the parity submatrices of the LMG Hamiltonian at , : the pair of Eqs. 7 and 8 for and the matrix of Eq. 15 for , each with its square (Eqs. 11, 12 and 17) and its Pauli decomposition (Eqs. 9, 10, 13, 14, 16 and 18) printed alongside, "where we have kept more significant figures than given in the matrix representation" (Sec. IV A). The Pauli coefficients are not derived by hand: "For the given numerical Hamiltonians with particular values for the interaction strengths and , the coefficients were found using a custom code [38]" (Sec. II). Ground truth is analytic rather than measured — the model is chosen "due to its exactly solvable nature" (Sec. I), the exact eigenvalues sit in the "Exact Value" column of Tables I and II, and Table III compares the recovered wavefunctions against the analytic solution's wavefunctions through the overlap (Eq. 19). No measurement record, circuit list or fitted parameter set is released.
Code
**The paper releases no repository of its own and carries no code- or data-availability statement.** It names two software artefacts it used, and a third only as an equivalent. The first is the framework: "the IBM qiskit environment" with "qiskit's classical COBYLA solver" (Sec. III), with no version pinned anywhere in the paper. The second covers the encoding step rather than the objective — "the coefficients were found using a custom code [38], whose functionality is also found in common quantum computing libraries (e.g. the pauli decompose method of PennyLane [39])" (Sec. II) — PennyLane being the third, named as an alternative rather than as something run. **Reference 38 is the H2ZIXY preprint, not a repository**: it reads "R. M. N. Pesce and P. D. Stevenson, H2ZIXY: Pauli spin matrix decomposition of real symmetric matrices (2021), arXiv:2111.00627", and that preprint's only statement about released code is "In the final version of the paper, the code will be linked to a repository associated with the journal". The code exists at https://github.com/pdstevenson/h2zixy, owned by one of the two authors and crediting both in its README — "written by Rocco Monteiro Nunes Pesce as a summer undergraduate project in 2021, and by Paul Stevenson" — but neither paper names that URL, so the link between reference 38 and this repository is an identification made here rather than one either source states. The repository holds two files, `README.md` and `h2zixy.py`, Python, 148 lines as read on 2026-08-27, last pushed 2022-10-30, no tags and no releases, **no LICENSE file and no licence header in the source**, with the GitHub API returning a null licence. Its single public entry point is `h2zixy(hamiltonian)`, documented as "Decompose square real symmetric matrix into Pauli spin matrices"; it pads the input to the next power of two, discards coefficients below a hard-coded `eps = 1.e-5`, generates "all combinations of I,X,Y,Z, excluding those with an odd number of Y matrices", and returns "a string consisting of terms each of which has a numerical coefficient multiplying a Kronecker (tensor) product of Pauli spin matrices" — a string, not an operator object, so the bridge from it into the Qiskit run is not itself published. **Nothing in either place implements the variance objective**: the loop of Sec. III exists in this work only as prose, equations and figures.
Results
Both hardware runs use 20,000 shots per circuit. For on a single qubit, Table I gives exact value, measured variance and recovered energy for all four states of the two parity sectors: ground , variance , ; second excited , , ; first excited , , ; third excited , , — **one of the four reported variances is negative**, at , for a quantity the paper has just called "a positive semi-definite function", which the paper does not comment on. For on two qubits, Table II gives ground , , ; first , , ; second , , ; third , , , and the text names the degradation and its cause: "these results are further from their respective exact solutions than the results. This is likely due to the increase in circuit depth required to perform the calculations for the case, as well as the additional qubit, resulting in greater gate error and noise within the circuit." Table III's overlaps against the analytic eigenvectors run , , and down the diagonal, and "the ground state introduces slightly more overlap with the first excited state, which could be due to only achieving a partial convergence in the time available for the run on real quantum hardware". **The hardware attribution for is internally inconsistent and a reader should not resolve it silently**: Sec. V C says "Measurements for the LMG excitation spectra were performed using the IBM nairobi quantum computer, again using 20,000 shots per circuit" and names nairobi again for Fig. 7, while Table II's own caption reads " LMG model results calculated using the IBMQ manila quantum computer using 20000 shots"; the acknowledgment covers both — "In this paper we used IBMQ manilla and IBMQ nairobi, which are IBM Quantum Processors" — without saying which ran which. The device spelling is unstable across the paper too: "IMBQ manila" in Sec. IV D, "IBMQ manila" in the Table I and Table II captions, "IBMQ manilla" in the acknowledgment. The simulator arm is unnamed: Fig. 1 comes from minimisations "starting from random initial parameters, using noiseless simulations" (Sec. IV C) and Fig. 6 from noiseless simulations "also started from randomised initial parameters" (Sec. V B), and no backend, shot count or simulator package is given for either.
- Variance Minimisation of the Lipkin-Meshkov-Glick Model on a Quantum Computer
`VVQE`, the Qiskit Aqua variance eigensolver written for a Midwest Summer Jam many-body-localization project
About
**An artefact with no paper.** The repository README states the project and its framing: "Exploring MBL via VVQE & BBA — A Qiskit Summer Jam 2020 hackathon project", with the physics given as "in the quantum world there are phases of matter known as many-body localized (MBL) phases that do not equilibrate, like a never-cooling cup of coffee. In this hackathon, we wanted to study MBL using quantum computers." That is a different reason to want the variance objective than the chemistry excited-state argument the method is recorded from: this project aims at the middle of the spectrum rather than at the bottom of it, which its own code says outright — `combined_optimizer`'s docstring is "Combines the VQE and VVQE optimization processes to find an eigenstate with energy close to 0 with respect to a certain Hamiltonian H", and the committed drivers warm-start from a VQE run on rather than on . The jam is identifiable from the repository itself: its presentation link points into HackerEarth's `qiskit-community-summer-jam-mid-west` challenge, the same challenge Qiskit's event repository lists under "Midwest Summer Jam" for "Michigan State University, University of Chicago, University of Michigan, and other Illinois & Michigan area schools" (`qiskit-community/qiskit-summer-jam-20`, `README.md`). **Whether this is the winning entry is an inference, not a record.** That README says "The winning team is QuarantineQbits with the project 'Exploring Localization and Excited States with VQE'", where this repository is titled "Exploring MBL via VVQE & BBA" and spells its team "Team: Quarantine Qubits" — a different project title, a different spelling, and a different HackerEarth submission id from the one the presentation URL carries; nothing in either file links the two. The listed members are Abid Khan, Ryan Levy, James Allen, Eli Chertkov and Di Luo.
Methods
`src/vqe/vvqe.py` defines `class VVQE(VQAlgorithm, MinimumEigensolver)`, declared in its own header to be "a derivative work of the code at https://qiskit.org/documentation/_modules/qiskit/aqua/algorithms/minimum_eigen_solvers/vqe.html#VQE" with "Changes by Eli Chertkov, Ryan Levy 2020". The change is the cost function and its plumbing: the constructor computes `operator2 = square(operator)`, then overwrites the operator with `ListOp([self.operator, operator2])` under the comment "we can get two operators to be contracted at once using ListOp", and passes `cost_fn=self._variance_evaluation` up to `VQAlgorithm`. `_variance_evaluation` unpacks one sampler pass as `E,Var = np.real(sampled_expect_op.eval())[0]` and returns `mean_results = [means2[i] - means[i]**2.0 for i in range(len(means))]`. **So the objective is read off two operator expectation values on the same bound circuit, not Zhang, Yuan and Yin's quantum covariance matrix**, and is built classically before any circuit runs: `square()` in `src/vqe/hamiltonian.py` does `op2 = operator.compose(operator)`, then `op2.reduce().reduce()`, then `sum_duplicates` and `remove_zeros`, whose zero threshold defaults to `tol=1e-15`, so what is measured is a freshly collapsed Pauli sum. The ansatz is `sz_conserved_ansatz` in `src/vqe/variational_form.py`, which lays unparameterised gates to fix the total sector and then "applies an ExcitationPreserving circuit to parameterize the system without changing the total number of spin ups/downs". **Both committed drivers run two optimisations per disorder realisation, not one.** `results/vvqe/generate_data_statevector.py` first runs a stock Qiskit `VQE(H_squared, ansatz, SLSQP(maxiter=100))` from a random `initial_point`, then hands `vqe_results['optimal_point']` to `VVQE(H, ansatz, SLSQP(maxiter=500))`; minimising is a different objective from minimising the variance, and it is used here only as a warm start. `src/vqe/run_multiple_tests.py` reaches the same recipe by calling `combined_optimization.combined_optimizer` as its main loop, whose docstring states the intent: "Combines the VQE and VVQE optimization processes to find an eigenstate with energy close to 0 with respect to a certain Hamiltonian . First uses VQE on to find an energy close to 0, then uses VVQE to refine the variance and get as close to a real eigenstate of the Hamiltonian as possible." **Neither driver, exactly as committed, can have produced the whole released grid.** `generate_data_statevector.py` fixes `num_qubits = 4`, `reps = 2`, `entanglement = "sca"` and reads as `int(sys.argv[1])`, so it reaches only the eight integer-, four-qubit, `rep2` pickles of the 55 committed; `run_multiple_tests.py` is the one that parses `Wrange = [float(Wpart) for Wpart in Wstring.split(',')]`, defaults to `num_qubits = 6` and `reps = 1` — the two commonest committed settings — and merges its per-trial files with `collect_pickles(base_name, out_name)` into the single per-setting pickles that are committed, but it sets `entanglement = 'full'` where every committed filename reads `sca`, and it writes four keys (`elapsed_time`, `reps`, `entanglement`, `Opt`) that the committed files' documented schema in `results/vvqe/readme.md` does not list. The released data therefore came from edited states of these drivers, and which file produced which pickle cannot be settled without unpickling them.
Data
No external dataset; every input is generated in the repository and committed beside the results. `src/vqe/hamiltonian.py` builds a one-dimensional open-boundary Heisenberg chain, `heisenberg1D`, documented as , and adds `magnetic_fields`, , scaled by a disorder strength . The disorder is drawn once and frozen: `results/generate_disorder.py` sets `np.random.seed(42)` and writes 1000 realisations of `2.0*np.random.rand(num_qubits) - 1.0`, uniform on , to `q4_1000potentials.pkl` and its text twin, with the same pair committed for 4, 6, 8 and 10 qubits; `results/README.md` states the design choice — "We fix the same disorder patterns (named `potentials` in the code) for all strengths `W`." Ground truth is committed exact diagonalisation rather than a literature value: `results/exact_diagonalization/` holds `ed_entropy_data_4_qubits.pkl`, `ed_entropy_data_6_qubits.pkl`, `ed_entropy_data_8_qubits.pkl` and one gzipped spectrum file for 4 qubits, and both readmes admit the set is truncated by GitHub's file limits — "large spectrum data not uploaded due to file size" and "(some files are too large for github, email for more)"; the folder's own readme also documents an `ed_entropyData_df.pkl.gz` DataFrame that is not in the tree. Both `results/vvqe/` drivers and the test re-check the classical construction in-line with `assert(np.allclose(np.sort(np.abs(evals)**2.0), evals2))`, i.e. that the eigenvalues of the classically formed really are the squares of those of ; `src/vqe/run_multiple_tests.py` does not, its only assertion being `assert len(potential) == num_qubits`.
Code
https://github.com/abid1214/mbl-vvqe-bba, default branch `master`, Python and Jupyter, 108 files, last push 2021-03-17 as commit `dbed18c`, "Update README.md to include links", with no tags and no releases; read 2026-08-27. **The licence position needs stating precisely rather than summarising.** The repository has no LICENSE file and the GitHub API returns a null licence for it, yet `src/vqe/vvqe.py` opens with the notice it inherited from Qiskit — "(C) Copyright IBM 2018, 2020. Changes by Eli Chertkov, Ryan Levy 2020. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license in the LICENSE.txt file in the root directory of this source tree or at http://www.apache.org/licenses/LICENSE-2.0" — and no `LICENSE.txt` exists in that root. The files a reader should open, with line counts read on 2026-08-27: `src/vqe/vvqe.py`, 582 lines (`class VVQE`, `_variance_evaluation`, `construct_circuit`, `get_optimal_cost`, `VVQEResult`); `src/vqe/hamiltonian.py`, 145 lines (`heisenberg1D`, `magnetic_fields`, `sum_duplicates`, `remove_zeros`, `square`); `src/vqe/variational_form.py`, 67 lines (`sz_conserved_ansatz`); `src/vqe/combined_optimization.py`, 129 lines (`combined_optimizer`, `random_initial_point`, `expectation`, `attach_parameters`, `get_vector_from_circuit`); the three drivers `results/vvqe/generate_data_statevector.py`, 101 lines, `results/vvqe/generate_data_qasm.py`, 124 lines, and `src/vqe/run_multiple_tests.py`, 133 lines (`collect_pickles`, `random_disordered_hamiltonian`); and the test `src/vqe/tests/test_vvqe.py`, 59 lines. The last commit to touch the algorithm file is `88d4199`, "use new H^2 in VVQE", 2020-06-27, the day after `4a554ca`, "add working VVQE", 2020-06-26 — the code is the hackathon week's, and the 2021 commit only edited the README. **It is very unlikely to install against a current Qiskit, though nothing was executed for this entry.** The README pins "This was built using Qiskit version 0.19.6"; every algorithm, operator and optimizer import is from `qiskit.aqua` (`qiskit.aqua.operators`, `qiskit.aqua.components.optimizers`, `qiskit.aqua.algorithms.vq_algorithm`), whose distribution's last PyPI release is 0.9.5, uploaded 2021-09-08 (read 2026-08-27); and the non-`aqua` Qiskit imports that remain are themselves removed API — `from qiskit.providers import BaseBackend` and `from qiskit.quantum_info.operators.pauli import Pauli` used as `Pauli(label=...)`.
Results
**There is no paper, so the numbers are the committed artefacts and the tests, and neither is a performance claim.** `results/vvqe/` holds 55 pickled runs named `W[#]_q[#]_VVQE_SLSQP_sca_rep[#].pkl`, covering in , 4, 6, 8 and 10 qubits and `reps` 1 and 2 — 55 of a possible 112, an incomplete grid rather than a full sweep — each file a list of per-realisation dictionaries whose keys `results/vvqe/readme.md` gives as `W`, `opt_params`, `statevector`, `E`, `Var`, `fidelity`. `results/overlap/` holds eight more, the entanglement-entropy side the MBL question actually turns on: `qc_dict_q{4,6,8,10}_VVQE_SLSQP_sca_rep2.pkl`, 3.2 to 37.8 MB, "a dictionary of lists of QuantumCircuit objects" keyed by , and `sw_ent_dict_list_q{4,6,8,10}_VVQE_SLSQP_sca_rep2.pkl`, "a list of dictionary of lists of second renyi entropies" indexed by the cut position (`results/overlap/datatype.txt`). None of them were unpickled here; they are Qiskit 0.19.6 objects. The only numeric assertions the repository makes about its own output are in `src/vqe/tests/test_vvqe.py`, on a two-qubit chain at under `np.random.seed(42)` with `SLSQP(maxiter=500)` on Aer's `statevector_simulator`: `assert abs(variance-opt_result1['optimal_value']) < 1e-8` (the returned cost really is the variance of the returned state), then `assert 0.5 > variance > 0` and `assert fidelity<1 and fidelity > 0.9`. **The acceptance bar is a fidelity above and a strictly positive variance below — the test does not require the run to reach an eigenstate**, and its comments record what the target was: "Eigenvalue of closest to zero is " and "Eigenvalue of closest to zero is ". **No hardware anywhere, and no shot noise in the committed numbers either.** Every committed result file carries the `SLSQP` statevector naming; nothing named `qasm8192` was ever committed, so `generate_data_qasm.py` produced none of the released data. That driver also carries two defects a reuser should see first: `useCOBYLA = True` selects `SPSA()` for both optimisers while the output filename is built as `("COBYLA" if useCOBYLA else "SPSA")`, so a run would be labelled COBYLA and be SPSA; and although the optimisation itself runs on `QuantumInstance(Aer.get_backend("qasm_simulator"), shots=8192, backend_options={'method': "statevector"})`, the `energy`, `variance` and `fidelity` written out are recomputed exactly from a separate `statevector_simulator` execution of the optimal circuit, so even its recorded numbers would carry no sampling error.
Variance-minimizing VQE · Qiskit
From the repository — run, not written up from a paper · unsupported
About
Hamiltonian variance supplements or replaces energy to target eigenstates and diagnose convergence.
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.
- Variance-minimizing VQE
Hamiltonian variance supplements or replaces energy to target eigenstates and diagnose convergence.
References
- Variational quantum eigensolvers by variance minimization
Dan-Bo Zhang, Zhan-Hao Yuan, Tao Yin · 2020
Where the routes meet
11 problems nothing else needs — the places a reader arrives. Open a line to see what is recorded inside it, or click its name to go there.
13 lines have something recorded inside that you have not opened.
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
Solve a nonlinear ODE dy/dt = F(y)
- Embed a nonlinear system into a linear one — opens into 6 · a way across — click it to open it here
- Solve a linear ODE du/dt = A(t)u + b(t) — opens into 9 · a way across — click it to open it here
- Choose a time discretization or propagator approximation → Quantum linear solve — open
- Choose a time discretization or propagator approximation — opens into 6 · a way across — click it to open it here
- Quantum linear solve — opens into 5 · a way across — click it to open it here
- Simulate Hamiltonian evolution → Estimate an observable — open
- Simulate Hamiltonian evolution — opens into 3 · a way across — click it to open it here
- Estimate an observable — opens into 4 · a way across — click it to open it here
Estimate an excited-state energy
- Variational quantum deflation — opens into 3 · a way across — click it to open it here
- Subspace-search variational eigensolver — opens into 3 · a way across — click it to open it here
- Quantum subspace expansion
- Quantum equation of motion
- Folded-spectrum variational eigensolver — open · opened: what was inside is drawn in its place
- Choose a parameterised trial state — opens into 13 · a way across — click it to open it here
- Minimise the energy variance
- Measure commuting terms together
- Penalty-constrained variational eigensolver — opens into 3 · a way across — click it to open it here
- Multistate contracted variational eigensolver — opens into 3 · a way across — click it to open it here
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