Qiskitで量子ビットを測定する(qc.measure、qc.measure_all)

この記事では、Qiskitで量子回路に測定操作を追加する方法を説明する。

量子回路の初期化方法については以下の記事を参照。

happy-quantum.hateblo.jp

測定とは量子ビットの値を読み取りその結果を古典ビットに書き出す操作を指す。

QuantumCircuitクラスには、測定操作を追加するメソッドとしてmeasuremeasure_allが用意されている。

以下、それぞれ説明する。

qc.measure

qiskit.circuit.QuantumCircuit.measure — Qiskit 0.43.1 documentation

測定する量子ビットと測定結果を格納する古典ビットをqc.measure(量子ビット, 古典ビット)のように指定する。ここで、量子ビットと古典ビットはそれぞれ整数のリストでインデックスによる指定が可能。

from qiskit import QuantumCircuit

qc = QuantumCircuit(3, 3)

qc.measure([0,1,2], [0,1,2])

qc.draw()

qc.measure_all

qiskit.circuit.QuantumCircuit.measure_all — Qiskit 0.43.1 documentation

回路内の量子ビットをすべて測定するには、measure_allメソッドを使用することもできる。

measure_allでは事前に古典ビットを追加しておく必要がなく、メソッドの呼び出し時に測定結果を書き込む古典ビットが新たに回路に追加される。

from qiskit import QuantumCircuit

qc = QuantumCircuit(3)

qc.measure_all()

qc.draw()

add_bits=Falseとオプション指定することで、すでに回路に存在する古典ビットに書き出すこともできる。その場合は、n番目の量子ビットの測定結果をn番目の古典ビットに書き出す。 以下は先のコードと同等。

from qiskit import QuantumCircuit

qc = QuantumCircuit(3, 3)

qc.measure_all(add_bits=False)

qc.draw()