Qiskit / qiskit

Qiskit is an open-source SDK for working with quantum computers at the level of extended quantum circuits, operators, and primitives.
https://www.ibm.com/quantum/qiskit
Apache License 2.0
5.1k stars 2.34k forks source link

Bug fix in `HoareOptimizer` #13083

Closed alexanderivrii closed 3 weeks ago

alexanderivrii commented 3 weeks ago

Summary

Fixes #13079.

Detailed Comments

The problem was due to first simplifying a controlled-gate by removing its controls (in the example: the control qubit of a CX-gate is at |1>, allowing to replace the CX-gate by an X-gate), then incorrectly keeping track of the simplified gate (in order to store the new X-gate for later purposes, the code mutated the original CX-gate in some weird way).

The code was already using substitute_node_with_dag to replace the controlled-gate by the base-gate (I don't really like this, but I don't think we can use substitute_node as the simplified node has fewer qubits than the original node). To fix the problem, we can instead read off the simplified gate from substitute_node_with_dag's output.

While this fixes the immediate problem, the code in HoareOptimizer is very messy and quite possibly contains many other sources of bugs (for instance, I did not like the idea of iterating over the DAG's topological nodes, while removing and simplifying some of the nodes in-place) and not optimized for performance. A complete rewrite while porting to Rust would be ideal :).

qiskit-bot commented 3 weeks ago

One or more of the following people are relevant to this code:

coveralls commented 3 weeks ago

Pull Request Test Coverage Report for Build 10701833297

Details


Files with Coverage Reduction New Missed Lines %
qiskit/synthesis/two_qubit/xx_decompose/decomposer.py 1 95.42%
crates/qasm2/src/lex.rs 2 92.23%
crates/circuit/src/circuit_instruction.rs 5 86.32%
crates/circuit/src/dag_node.rs 6 82.17%
crates/qasm2/src/parse.rs 18 96.69%
<!-- Total: 32 -->
Totals Coverage Status
Change from base Build 10691830429: -0.03%
Covered Lines: 72513
Relevant Lines: 81330

💛 - Coveralls