使用 DAGCircuit 访问 Qubit

Accessing Qubit With DAGCircuit

我目前正在尝试制作自己的 TransformationPass,以便在为特定硬件编译 QuantumCircuit 时使用,但我正在努力让事情与传递给 run(self, dag) 方法的 DAGCircuit 一起工作被覆盖。我目前的主要问题是试图找出图中每个节点实际操作的量子位。我可以访问每个节点的线路,但从那里访问量子位索引会引发 DeprecationWarning。

我可以简单地忽略该警告,但它给我的印象是我应该换一种方式处理这件事。

是否有正式的方法来访问给定 DAG 的量子位(对象或简单的索引)?

DAGCircuit 目前还没有很好的答案。 .index 属性已弃用,因为在电路上的独立位对象的情况下,如果它们在寄存器中,它可能不会产生您期望的结果(它将是寄存器索引,而不是电路上的索引) ).

我通常通过这样的方式来做到这一点:

dag_qubit_map = {bit: index for index, bit in enumerate(dag.qubits)}

然后我可以通过字典查找来获取索引,例如:

bit_index = dag_qubit_map[node.qargs[0]]

QuantumCircuit class 上有一个 .find_bit() 方法可以轻松做到这一点:https://qiskit.org/documentation/stubs/qiskit.circuit.QuantumCircuit.find_bit.html

所以你可以这样做:

bit_index = QuantumCircuit(bit).index

但是 DAGCircuit class 仍然需要等效的 API。