Qiskitで量子ビットを測定する(qc.measure、qc.measure_all)
この記事では、Qiskitで量子回路に測定操作を追加する方法を説明する。
量子回路の初期化方法については以下の記事を参照。
測定とは量子ビットの値を読み取りその結果を古典ビットに書き出す操作を指す。
QuantumCircuit
クラスには、測定操作を追加するメソッドとしてmeasure
とmeasure_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()