忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【Qiskit】量子回路の基本:回路構築から「測定」の前まで

量子コンピュータのプログラミングでは、量子ゲートを使って回路を構築するだけでは計算結果を得ることができません。量子ビットは計算が終わるまで確率的に揺らぎ続けているため、最終的な結果を取り出すためには、必ず「測定(Measure)」という工程が必要になります。

1. 測定を含む量子回路の構築

Qiskitにおいて結果を確認するための回路を作成します。QuantumCircuit(1, 1) と記述することで、1つの量子ビットと、測定結果を書き込むための「1つの古典ビット」を準備します。この古典ビットを用意して測定を行わない限り、量子計算の結果を数値として読み出すことはできません。

from qiskit import QuantumCircuit

# 1量子ビットの回路と、測定結果を記録する古典ビットを1つ準備
qc = QuantumCircuit(1, 1)

# Hゲートで重ね合わせ状態を作成
qc.h(0)

# 0番目の量子ビットを測定し、その結果を0番目の古典ビットに保存
qc.measure(0, 0)

# 回路を描画
print(qc.draw(output='text'))

2. 実行結果(回路図)

ターミナルで実行すると、以下のように測定ゲート(M)が配置された回路図が表示されます。

% python sample_measure.py
     ┌───┐┌─┐
q: ┤ H ├┤M├
     └───┘└╥┘
c: 1/══════╩═
           0

3. 回路図の読み方と「0」の意味

この回路図には、重要な情報が可視化されています。

  • c: 1/ : 測定結果を保存するための古典的な記録領域です。ここへ情報を書き出すことではじめて、人間が結果を読み取れます。
  • ╩(二重線) : 測定(M)によって、量子情報が古典ビットへと「確定」して送られる様子を表しています。
  • 一番下の「0」 : これは「結果が0だった」という意味ではありません。「0番目の量子ビットの測定結果を、0番目の古典ビットという『宛先(ID)』に保存する」という接続指示を指しています。

このように、Qiskitで qc.measure(0, 0) を実行することで、量子ビットの確率的な情報を「古典ビットという箱」に固定することができます。これによって、後続のシミュレータ実行時に「0」または「1」という確定した値として結果を得ることができるようになるのです。

量子コンピュータの「観測」プロセスを実装!
Hゲートで確率を作ったら、必ずMeasureで測定して結果を確定させる。これが量子プログラミングの基本です。

次のステップ

測定する場所が確保できたので、次回はいよいよシミュレータを使って、この回路を実際に動かし、統計的な結果(0と1の出現回数)を取得してみたいと思います。


PR