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
SABRE (SWAP-based bidirectional heuristic search)
Insert SWAPs guided by a lookahead cost function, and obtain a good initial mapping by traversing the circuit forward and then in reverse, so the final mapping of one pass seeds the other. A decay term trades added depth against added gate count.
Open the full recordFills the slot: Satisfy the hardware connectivity constraint
Applies to arbitrary coupling graphs, sparse ones included. It is a heuristic with no optimality guarantee, and the underlying qubit assignment problem is NP-complete (Siraichi et al., Theorem 3.1). The paper claims an exponential speedup over the best known algorithm with comparable or better benchmark results, but states no bound on inserted SWAP count. Quality and convergence degrade on large circuits, which is the problem LightSABRE was built to address.
The circuit's two-qubit interaction graph or DAG; the device coupling graph; optionally per-edge error rates and gate durations.
Abstract circuit → Routed circuitinsert SWAPs to satisfy the coupling graph
SABRE turns an abstract circuit and a device coupling graph into a routed, hardware-compliant circuit by repeatedly executing every front-layer gate in whose mapped qubits are adjacent, and otherwise inserting a SWAP. assumption: only SWAP insertion changes the mapping, and the coupling graph is symmetric, so a CNOT runs in either direction on a connected pair. Each candidate SWAP touching a qubit in is scored by , where is the coupling graph's shortest-path distance, approximation: E is a fixed-size window of near-term successor gates standing in for the rest of the circuit, and grows whenever was just swapped, discouraging overlapping SWAPs. The lowest-scoring SWAP updates ; this repeats until empties, and 's own start point is refined by alternating forward/reverse traversals, each seeding the next with its final mapping.
approximationassumption
An initial logical-to-physical mapping and a routed circuit, costed in added SWAP count and added depth.
None found yet.
given a circuit of g gates, and a coupling graph on N physical qubits
-- arbitrary coupling graphs, sparse ones included
build the dependency DAG of the circuit
# O(g) in the gate count
# the initial mapping, obtained bidirectionally
traverse the circuit forward, then traverse it in reverse,
taking the final mapping of one pass as the seed for the other
# the record states the two traversals and the seeding, and does not
# state where the first pass's mapping comes from, nor how many times
# the two passes run
run the SWAP-based search --
insert SWAPs guided by a lookahead cost function
# the record says only that the insertion is guided by a lookahead
# cost function: not the form of the function, not which SWAPs are
# candidates, and not how the search walks the DAG
# at most O(N^2.5) per two-qubit gate, against O(exp(N)) for the
# exhaustive mapping-based search it replaces: the claimed
# exponential speedup is in search complexity
# one heuristic evaluation is O(N)
# a decay term trades added depth against added gate count -- the
# record states that effect and no value for it
return the initial mapping and the inserted SWAPs
# a heuristic with no optimality guarantee -- the underlying qubit
# assignment problem is NP-complete (Siraichi et al., Theorem 3.1)
# no bound on the inserted SWAP count is stated
# quality and convergence degrade on large circuits, which is the
# problem LightSABRE was built to addressThe paper's own worst-case accounting: the SWAP-based search costs at most per two-qubit gate, where is the number of physical qubits, against for the exhaustive mapping-based search it replaces — the claimed exponential speedup is in search complexity. Dependency-DAG construction is in the gate count and one heuristic evaluation is . A classical compilation cost, with no bound stated on inserted SWAP count. LightSABRE's abstract adds implementation figures: about 200 times faster in Qiskit 1.2.0 than the 0.20.1 implementation, and an average 18.9% fewer SWAPs than the original.
- LightSABRE
A re-engineered SABRE — the Qiskit production implementation, largely rewritten in Rust — whose algorithmic changes improve both runtime and routing quality on large circuits. The release-valve mechanism it carries was already present in the Qiskit 0.20.1 baseline it is measured against.
What would earn it a path of its own: Every recorded difference is implementation engineering, measured as benchmark constants on the same routine. The map draws constructions, not implementation pipelines; a surface for implementations — build, data structures, release policy — is what would give this a path of its own.
None found yet.
SABRE reference implementation (Li, Ding and Xie)
- Tackling the Qubit Mapping Problem for NISQ-Era Quantum Devices
Gushu Li, Yufei Ding, Yuan Xie · 2018
About
The paper that introduces SABRE also builds and runs it. Its problem statement is that "most quantum algorithms cannot be directly executed on the Noisy Intermediate-Scale Quantum (NISQ) devices" because of limited coupling between physical qubits, so a compiler must supply an initial logical-to-physical mapping and the intermediate mapping transitions that let each two-qubit gate execute. The authors' stated target is the algorithm of Zulehner et al., which they call the Best Known Algorithm (BKA), stating that it "has beaten the other two solutions" among the existing approaches applicable to an arbitrary coupling graph (IBM's and Siraichi et al.'s); Zulehner et al.'s is the only one of the three actually run in the evaluation.
Methods
SABRE was run with the extended set size fixed to 20 and the weight to 0.5; the decay parameter increases from 0.001 and the decay function "is reset every 5 search steps or after a CNOT gate is executed". For each benchmark the algorithm was executed 5 times from a different initial mapping, each execution running 3 traversals (forward-backward-forward), and the best result of the 5 attempts is reported. The reported is the runtime of the first traversal and the runtime of all 3. The baseline was not reimplemented: Zulehner et al.'s published source code was downloaded, "only the embedded hardware model is modified to be the same IBM 20-qubit chip model", then recompiled with full optimization and executed on the same server. A separate sweep of produced the depth-versus-gate-count trade-off curves of Fig. 8, which the paper reports "for 9 benchmarks".
Data
26 benchmark circuits, drawn from two earlier papers — "The benchmarks are selected from previous work [12], [33]", Siraichi et al. and Zulehner et al. — in the four groups Table II's footnote names: small quantum arithmetic, quantum simulation (each of its three members an Ising model), quantum Fourier transform, and large quantum arithmetic. Their provenance is named: "quantum programs from IBM's QISKit, some functions from RevLib, and some algorithms compiled from Quipper and ScaffCC". They span 4 to 20 logical qubits and 21 to 34,881 original gates.
Code
The artefact is named SABRE and, on the authors' own statement, "is implemented in pure Python without any parallelization or C/C++ accelerated library".
Results
No circuit was executed on a quantum device: the target is a hardware model, "the coupling graph from IBM's latest Q 20 Tokyo chip", with all couplings symmetric and CNOT allowed in both directions between each connected pair. Every run was on a classical server with "2 Intel Xeon E5-2680 CPUs (48 logical cores) and 378GB memory" under CentOS 7.5, Linux kernel 3.10. On the small benchmarks the additional gate count "could be significantly reduced by 91% or even fully eliminated" against BKA; on the Ising models the paper calls the optimal solution trivial, "since the ising model in quantum mechanics only considers nearby coupling energy", and reports that "SABRE can still find the optimal solution". In the paper's discussion of large-size cases the reverse-traversal initial mapping let SABRE "outperform BKA with the updated initial mapping and reduce the number of additional gates by 10% on average". The scalability gap is reported as memory and wall time on the same machine: on qft_16 "BKA requires more than 40GB memory and 474.81 seconds runtime while SABRE only required about 200MB memory and 0.08 seconds runtime", and on ising_model_16 and qft_20 BKA "requires more than 378GB memory and can not be executed on our server" while SABRE completed both — the paper writes "SABRE can still solve it in 0.1 seconds with about 300MB memory", against Table II's of 0.01 s and 0.102 s for the two. Sweeping gave "about 8% variation in generated circuit depth by varying the number of gates". The runtime comparison carries the authors' own caveat, that BKA "is written in C++ and compiled with GCC O3 optimization, while SABRE is implemented in pure Python", and that "the intrinsic speed difference between C++ and Python can be over 100 times".
- Tackling the Qubit Mapping Problem for NISQ-Era Quantum Devices
None found yet.
References
- Tackling the Qubit Mapping Problem for NISQ-Era Quantum Devices
Gushu Li, Yufei Ding, Yuan Xie · 2018
- Qubit allocation
Siraichi, Santos, Collange, Pereira · 2018
- LightSABRE: A Lightweight and Enhanced SABRE Algorithm
Henry Zou, Matthew Treinish, Kevin Hartman, Alexander Ivrii, Jake Lishman · 2024
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
Compile a circuit to a specific device
- NISQ transpilation (retargetable pass pipeline) — open · opened: what was inside is drawn in its place
- Satisfy the hardware connectivity constraint — opens into 3 · a way across — click it to open it here
- Fault-tolerant compilation (Clifford+T pipeline) — opens into 2 · 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