忍者ブログ
統計、機械学習、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

無題

今回は、2つの量子ビットを連動させる「CXゲート(制御NOTゲート)」を導入します。Hゲートと組み合わせることで、量子ビット間に相関を持たせる「量子もつれ(Entanglement)」の基本回路を作成します。

1. サンプルコードの作成

2量子ビットの回路を作成し、0番目の量子ビットにHゲートを、その0番目を制御ビットとして1番目にCXゲートを適用します。これを sample2.py として保存しました。

from qiskit import QuantumCircuit

# 2量子ビットの量子回路を作成
qc = QuantumCircuit(2)

# 0番目にHゲートを適用
qc.h(0)

# 0番目を制御ビット、1番目をターゲットビットとしてCXゲートを適用
qc.cx(0, 1)

# 回路をテキスト形式で描画
print(qc.draw(output='text'))

2. 実行結果

ターミナルでスクリプトを実行すると、以下のように回路が表示されます。

% python sample2.py
     ┌───┐     
q_0: ┤ H    ├──■──
     └───┘┌─┴─┐
q_1: ─────┤  X   ├
               └───┘

3. 回路のポイント

実行結果を見ると、0番目の H ゲートから伸びた線が、1番目の X ゲートへと繋がっているのがわかります。これが「量子もつれ」を生み出すベル状態の基本形です。回路図の表示レイアウトは環境によって多少ズレが生じることがありますが、重要なのは「どのゲートがどの量子ビットに接続されているか」という論理構造です。

回路構築完了:量子もつれの基礎が完成!
複数の量子ビットを連携させることで、量子コンピュータ特有の計算処理への足掛かりができました。

次のステップ

回路の構造を確認できるようになったので、次は「測定(Measure)」を追加して、観測によってこの量子もつれ状態がどう確定するのかを実験してみます。



【Qiskit】はじめての量子回路構築:Hゲートを可視化する

量子コンピュータの基礎である「量子回路」を実際に組んでみます。今回は最も基本的な操作である「アダマールゲート(H)」を適用し、量子ビットを重ね合わせ状態にする回路を作成し、その構造を可視化してみます。

1. サンプルコードの作成

Qiskitの QuantumCircuit を使い、1量子ビットの回路を定義してHゲートを配置します。以下の内容を sample1.py として保存しました。

from qiskit import QuantumCircuit

# 1量子ビットの量子回路を作成
qc = QuantumCircuit(1)

# アダマールゲート(H)を適用して重ね合わせ状態にする
qc.h(0)

# 回路をテキスト形式で描画して表示
print(qc.draw(output='text'))

2. 実行結果

ターミナルでスクリプトを実行すると、以下のように量子回路が視覚的に表示されます。

% python sample1.py
     ┌───┐
 q: ┤ H ├
     └───┘

3. この結果が意味するもの

表示された図は、量子ビット q に対して H(アダマールゲート)が適用されていることを表しています。初期状態が |0⟩ であれば、このゲートを通過することで、量子力学特有の「0と1の重ね合わせ状態」へと変換されます。

量子回路の可視化成功!
テキストベースの描画により、回路の構造を一目で確認できるようになりました。

次のステップ

回路の構造を確認できるようになったので、次は「測定(Measure)」を追加して、確率的に 0 や 1 が出力される様子をシミュレーションで確認していきたいと思います。


【Qiskit】macOS Sequoiaに最新環境を構築

量子コンピュータのプログラミングフレームワークである「Qiskit」を、現在のMiniconda環境に直接インストールしました。今回は、複雑な環境分離を行わず、ベース環境に直接ライブラリを追加する最短の手順を整理します。

0. 現在の検証環境

作業を行うMacおよびPython環境の構成は以下の通りです。この環境へQiskit最新版(2.5.0)を導入します。

OS: macOS Sequoia 15.7.7
Python: 3.13.5

1. Qiskitのインストール

ターミナルから以下のコマンドを実行し、インストールを行いました。依存関係のあるライブラリ(rustworkx, dill, stevedore等)を含めて自動的にセットアップされます。

% pip install qiskit
Collecting qiskit
  Downloading qiskit-2.5.0-cp310-abi3-macosx_11_0_arm64.whl.metadata (14 kB)
...
Successfully installed dill-0.4.1 qiskit-2.5.0 rustworkx-0.18.0 stevedore-5.9.0

2. インストール確認用の検証コード

インストール完了後、Pythonインタープリタを立ち上げ、ライブラリが正しくロードできているかをバージョン出力で確認します。

import qiskit
from qiskit import __version__

print(f"Qiskit version: {__version__}")

3. インストールの実行ログ

実行結果は以下の通りです。無事「2.5.0」が読み込まれました。

>>> print(f"Qiskit version: {__version__}")
Qiskit version: 2.5.0

4. 環境準備の完了

無事に最新版である「2.5.0」を確認できました。普段の作業フローの中でシームレスに量子プログラミングが実行可能です。Qiskit 2.x系では量子回路の構築や最適化機能がさらに強化されています。

環境構築完了:Qiskit 2.5.0 Ready
ここからは、量子ゲートの操作やアルゴリズムの実装など、より具体的な量子コンピューティングの世界へ踏み込んでいきます。

今後の検証計画

環境が整ったため、次回の記事では「量子回路(Quantum Circuit)を作成し、ローカル環境でシミュレーションを実行する」までの一連の流れを実践します。まずは最小の量子回路の実行を目指します。

        
  • 1
  • 2