Code
qcr:2604.32136.1

Qubit-Efficient Quantum State Preparation

Gate-level implementation of a qubit-efficient quantum state preparation (QSP) protocol for loading arbitrary amplitude vectors into a quantum register. Building on the Möttönen et al. (2004) method with multi-controlled Ry/Rz rotations, this implementation achieves O(N) circuit depth while using only O(log N) qubits — no ancilla required. Implementations are provided for both Qiskit and Amazon Braket, alongside performance benchmarks comparing circuit depth, gate count, and fidelity against each platform's native state-initialization routines. Practical relevance: arbitrary state preparation is a foundational subroutine for quantum machine learning (amplitude encoding), quantum chemistry, and quantum data loading.
State Preparation
Qubit
Circuit-based
Uploaded 1 month ago
147
Views
GitHub3
Citing this entry? Use this QCR ID
Uploaded by
QL
QCR Librarian

Overview

guikaiwen/qubit_efficient_QSP
30
README.md

qubit_efficient_QSP

This repo provides implementations and performance testings for quantum state preparation circuits using a qubit-efficient protocol (no ancilla qubit required) suitable for circuit simulators.

That is, given an arbitrary list of amplitudes, we create a quantum circuit that creates the corresponding -qubit state:

The quantum circuit consists of a sequence of multi-control Ry and multi-control Rz gates, using the method described by Mottonen et al. 2004 (https://arxiv.org/pdf/quant-ph/0407010.pdf).

  1. You can directly call the QSP function .construct_circuit() on a QubitEfficientQSP object to prepare an arbitrary complex quantum state, as demonstrated in QSP_method_call_demo.ipynb.

  2. We also provide a detailed implementation walkthrough in QSP_detailed_implementation.ipynb. We recommend first-time readers start with the walk-through in QSP_method_call_demo.ipynb.

  3. We compare our implementation performance for dense quantum states against the existing Qiskit's .initialize function and the Braket's unitary operation in performance_benchmark/dense_state_comparisons.ipynb.

Comparison Plot
  1. We provide some performance testings and complexity analysis of sparse state preparation for Braket in performance_benchmark/braket_sparse_state_cost_benchmark.ipynb and for Qiskit in performance_benchmarkqiskit_sparse_state_gate_count.ipynb.

Prerequisites

The Amazon Braket Python SDK can be installed with pip on your local machine as follows:

pip install amazon-braket-sdk

The IBM Qiskit Python SDK can be installed with pip on your local machine as follows:

pip install qiskit

See requirements.txt for other required Python packages and corresponding versions.


The current QSP operation demonstrated in this repo has the following circuit complexity numbers:

A. depth using generalized multi-controlled rotation gates

B. No additional ancilla qubits required (total of qubits)

(Note that is the total number of amplitude values encoded, and can also represent the number of data qubits.)

See https://github.com/guikaiwen/QSP_Paper_Artifact and https://arxiv.org/pdf/2303.02131.pdf for an alternative method that has the following circuit complexity numbers:

A. depth using arbitrary single qubit gate + CNOT gate

B. ancilla qubits required


Please contact kgui@uchicago.edu if you have any questions.

Join the Discussion

Comments (0)

No comments yet. Be the first to share your thoughts!

Indexed by QCR Librarian

This entry was created automatically from publicly available records. QCR links to public sources and only stores repository content where the license permits redistribution.

Versions

v1 Latest
Apr 22, 2026
qcr:2604.32136.1

Cite all versions? Use the base QCR ID to always reference the latest version of this entry.

Tools used

Qiskit

Keywords

quantum state preparation
möttönen
amplitude encoding
benchmarking

You may also like5