2022年6月号 Interface の「クラウド経由で本物の量子コンピュータを動かす」を試してみた その1

『Interface 2022年6月号』の「クラウド経由で本物の量子コンピュータを動かす」を実行します。

 

ステップ1 量子コンピュータのシミュレータを利用してみる

Google Colaboratoryの起動

Google ColaboratoryはうWebブラウザ上でPythonを実行できる環境で、Googleが無料で提供しています。以下のURLにアクセス後、「ノートブックの新規作成」をクリックし、Pythonの実行環境を起動します。

利用するには、グーグルアカウントで、ログインする必要があります。

https://colab.research.google.com/

 

最初はUntitled.ipynbとなっていますので、「Untitiled.ipynb」にカーソルを合わせて任意の名前にタイトルを変更します。

Google Colab 起動

変更後

Google Colab タイトル更新

 

Qiskitのインストール

QiskitはIBMが提供している量子コンピュータのライブラリです。

以下の方法でQiskitをインストールします。

!pip install qiskit[visualization]

 

上記入力後、まるで囲まれた ▷ をクリックするとインストールが始まります。

Quiskit インストール

インストールが完了したら、左上の「+コード」をクリックし、新規に以下のコードを記入し、▷をクリックするか、Ctrl+Enterで実行が開始されます。

import qiskit.tools.jupyter

%qiskit_version_table
%qiskit_copyright

 

qiskitのバージョン情報をが表示されます。(Interfaceに記載されているバージョンから少しバージョンアップされていることが確認できます)

 

qiskit バージョン確認


簡単な量子プログラミング・・・Xゲートの動作確認

Xゲートを使用して0から1に変化させます。

circuit=QuantumCircuit(1,1)のQuantumCircuit(1,1)は最初の引数は量子ビット数、2つ目の引数は古典ビット数を表しています。

circuit.x(0):引数の0はXゲートを適用する量子ビットのインデックスを表しています。

circuit.measure(0,0):量子ビットを測定方法を表しています。最初の引数は測定する量子ビットのインデックスの値、2番目の引数は測定後の結果を格納する古典ビットのインデックスを表しています。

 

from qiskit import QuantumCircuit

circuit = QuantumCircuit(1,1#量子回路の初期化
circuit.x(0)                  #Xゲートを適用
circuit.measure(0,0)          #測定
circuit.draw("mpl")           #量子回路の可視化
 
 

実行結果
 実行すると上記図が表示されます。
q- と表示されている部分が量子ビットを表しています。
C= と表示されている部分が古典ビット、すぐ横の1は1ビットであることを表しています。
資格の中に「x」と表示されている図がXゲートを表しています。
Xゲートの横の黒い箱が「測定」を表していて、測定した結果をインデックス0の古典ビットに
格納していることを表しています。
Xゲートは、古典回路でのnotゲートです。
 
上記回路(circuit)についてシミュレータを呼び出して実際に実行する記述と実行結果は以下となります。
 
from qiskit import Aer,execute
from qiskit.visualization import plot_histogram


#電子回路を実行するシミュレータ
backend = Aer.get_backend('qasm_simulator')
#量子回路の実行
job = execute(circuit,backend)
#実行結果の取得
result = job.result()
#実行結果から測定回数を取得
counts = result.get_counts(circuit)
#測定回路を可視化
plot_histogram(counts)
 

量子回路の実行
 
 
backend = Aer.get_backend('qasm_simulator') :使用するシミュレータにqasm_simulatorを指定しています。
job = execute(circuit,backend) :シミュレーションの実行。デフォルトでは1024回実行します。(countsは1024になります)
counts=result.get_counts(circuit) : どの量子ビットが何回得られたかの情報をcountsに格納します。
plot_histogram(counts)で結果を可視化します。
 
初期値0にXゲートを適用したら全部1になりました。 という、結果です。
横軸の「1」の値は得られた量子ビットの値で、縦軸の1000(1024)は実行回数です。
 
 
 
 
 
 
 
 
 
 
 
/* -----codeの行番号----- */