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
Search by state discrimination
When one query can test a partial guess rather than a whole candidate, the answer is recovered by discriminating quantum states instead of by rotating amplitude. One query turns knowledge of positions into knowledge of of them, and the measurement that does it is the one that minimises the error — though a stage costs more than that one query, because the guess it produces has to be checked and repaired.
Open the full recordFills the slot: Find the item a check accepts
The oracle must answer about partial commitments: a query is a pair with and , returning exactly when . The paper puts "no restriction on Hamming weight" on the hidden string, so no promise about it is needed — the power is entirely in the query. Its state-discrimination lemma is proved only in the near-complete regime, "for any ", which is why the algorithm climbs in stages that stay inside it rather than attempting the whole string at once. The authors are explicit about what the method is not: "rather than using amplitude amplification or a quantum walk, our algorithm is ultimately based on the solution to a state discrimination problem." The same paper carries a second algorithm, for combinatorial group testing, whose true quantum query complexity it states is open — "a previous version of this paper claimed an upper bound of queries, via a reduction to search with wildcards. However, the reduction was incorrect".
An oracle that accepts a subset of the positions together with a guess for those positions, and answers whether the hidden string agrees with on every position in — as the unitary . No promise on the hidden string is required.
Marking oracle over a domain → A marked item, with its query billgrow the known prefix by discriminating states
The object measured at each stage is a family of states indexed by the hidden string: , with . Recovering from one copy is a state discrimination problem, and it is solved by the pretty good measurement: for a set set and take , the inverse taken on the support of ; this is a POVM because , and it outputs on input with probability exactly for the Gram matrix. Here the Gram matrix depends only on the Hamming distance, , so it is diagonalised by the Fourier transform over and its eigenvalues are , an identity of Delsarte. assumption: the measurement is optimal, not merely convenient — the states are geometrically uniform, being generated from by the abelian group with , and for such families the pretty good measurement minimises the average error. What the measurement buys is stated as a distance rather than as a success probability: for it outputs with expected Hamming distance . approximation: the measurement alone does not return . What it returns is a guess wrong in places on average, and it is the verification query and the coherent binary search over substring queries after it that make the stage exact — which is why the query count carries a the lower bound does not. The paper states the gain per query — "with one query, we can increase the knowledge about the input from bits to bits" — and a stage spends that one query plus the repair above it, so stages of an expected queries each reach .
approximationassumption
The hidden -bit string in full — every stage ends on an oracle answer confirming it, so what is uncertain here is the bill and not the answer — together with the expected number of queries spent on the worst-case input.
None found yet.
given an oracle Q_x(S, y) answering whether the hidden n-bit string x agrees
with the guess y on every position in S (Sec. 1.2)
# there is no promise on x -- 'no restriction on Hamming weight'. The strength
# is in the query, which tests a partial guess rather than one position
choose stage sizes n_0 < n_1 < ... < n_l = n with n_{s-1} = ceil(n_s - sqrt(n_s))
# l = O(sqrt(n)) stages, which makes n_0 = O(sqrt(n))
stage 0: query n_0 = O(sqrt(n)) positions directly
for each stage s = 1 ... l:
apply the unitary that carries knowledge of n_{s-1} positions to a guess
for n_s of them, built from the pretty good measurement (Sec. 2, 3)
verify the guess with one subset query
while the query answers no:
binary search with ceil(log n_s) substring queries to locate the wrong
bits, performed coherently and without measurements, and fix them
verify again
# the expected number of wrong bits after the measurement is O(1), by the
# state-discrimination lemma, so a stage costs an expected O(log n)
return x
# the lemma the stage unitary rests on is proved only for k = n - O(sqrt(n)),
# which is why the algorithm climbs in stages that stay inside that regime
# rather than attempting the whole string at once
# do not read this as amplitude amplification or as a walk. The authors say
# outright that it is neither, and that it rests on a state discrimination
# problem insteadTheorem 1: queries on average to recover the whole string, against a quantum lower bound of the same theorem proves — a gap of the paper leaves open, calling its algorithm "nearly optimal" rather than optimal. "On average" is defined and is not an average over inputs: "we say that an algorithm 'uses queries on average' if the expected number of queries it makes on the worst-case input is . We stress that no distribution on the inputs is assumed." The classical floor is by an information-theoretic argument, and the paper notes that in the standard query model — one position per query — even a quantum algorithm needs . The bill is assembled per stage: queries in stage zero, then further stages costing an expected each. For the paper's second problem, combinatorial group testing, Theorem 2 gives queries against a classical , with a quantum lower bound of only .
None found yet.
None found yet.
Search with wildcards · Qiskit
From the repository — run, not written up from a paper · unsupported
About
Identify a hidden n-bit string x using an oracle that, for a chosen subset S of the n positions and a string y of length |S|, returns one when the substring of x specified by S equals y and zero otherwise.
Methods
None found yet.
Data
None found yet.
Code
Qiskit
Results
Literature record · problem statement and speedup class checked against the Quantum Algorithm Zoo entry · primary reference checked against its arXiv abs page
- Search with wildcards
Identify a hidden n-bit string x using an oracle that, for a chosen subset S of the n positions and a string y of length |S|, returns one when the substring of x specified by S equals y and zero otherwise.
References
- Quantum algorithms for search with wildcards and combinatorial group testing
Andris Ambainis, Ashley Montanaro · 2012
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 — opens into 3 · a way across — click it to open it here
- 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