quantumlib / Cirq

A Python framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits.
Apache License 2.0
4.27k stars 1.01k forks source link

Arbitrary state preparation algorithm #4048

Closed mavzolej closed 3 years ago

mavzolej commented 3 years ago

Is your feature request related to a use case or problem? Please describe. I am wondering if it is planned to add any of the arbitrary state preparation algorithms to Cirq, such as https://arxiv.org/abs/quant-ph/0406176v5? (for example, in Qiskit the function qiskit.extensions.Initialize does this)

Describe the solution you'd like Given an array of 2^n complex amplitudes, the function should output an n-qubit program preparing the corresponding state from the computational basis state. I guess, in case if the state is initialized with CX + single-qubit rotations, the number of the former should be 2^n - 1.

balopat commented 3 years ago

We didn't have a plan for it - if you have a use case for it, we are open to discuss it. An RFC would be useful. Also note that we do have the three qubit version of the "synthesis of quantum logic circuits" implemented as cirq.three_qubit_matrix_to_operations and I believe someone is working on the n qubit decomposition.

github-actions[bot] commented 3 years ago

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 30 days

github-actions[bot] commented 3 years ago

Issue closed due to inactivity.

mavzolej commented 3 years ago

Sorry about abandoning the discussion. The main value of arbitrary state preparation algorithms is that they are useful for benchmarking and evaluating variational algorithms, as they give an absolute lower bound on the number of gates required for connecting the reference state and the final minimization state (of course, under the assumption one uses exponentially many parameters, and wants to find the exact solution of the problem).