common.title

Overview
Service overview
Terms of service

Privacy policy

Contact

Sign in
Sign up
common.title

blueqat cloudで始める無料量子コンピュータプログラミング01(1量子ビットの計算)

Yuichiro Minato

#量子ゲート

はじめに

今回は量子コンピュータのプログラミングを始めるにあたって一番簡単であろう、blueqat(ブルーキャット)を使って行ってみたいと思います。

blueqat cloud (ブルーキャットクラウド)

クラウド上で、blueqatSDKというpythonベースの量子コンピュータ向けのソフトウェア開発キットが利用できます。通常blueqatSDKはインストールが必要ですが、クラウドですとインストール不要で、無料登録ですぐ使えます。

利用方法

https://blueqat.com/signup

から登録し、その後ログインすることで利用できます。メニューの、「notebook => blueqat」ですぐ利用できます。無料です。

量子コンピュータプログラミング

量子コンピュータのプログラミングは3ステップで行います。

1、初期化
2、ゲート操作
3、測定

になります。初期化は自動で行われます。ゲート操作が実質的にプログラミングに当たります。そして最後に測定を通じて計算結果を取り出します。量子コンピュータでは毎回解が異なることがありますので、それを確認していきます。

早速実行

まずはblueqatを読み込んで初期化します。

from blueqat import Circuit Circuit()
Circuit(0).

ツールの読み込みは1行。初期化はわずかで終わります。量子ビットは初期化されると全て0になります。今回は0から計算がスタートします。次に、このCircuit()に続いて回路を書いていきます。

回路の記述

回路はメソッドチェーンという方式でつないで書きます。.x[0]のように点でつないでゲートの種類を書き、[]のなかにこのゲートをかけたい量子ビットの番号を書きます。

Circuit().x[0]
Circuit(1).x[0]

これは、0番目の量子ビットにXゲートをかけるという意味です。量子ビットは通し番号で0から順番に数えます。これで0番目にXゲートがかかり、Xゲートをかけることは0を1にする、もしくは1を0にすることに対応します。今回は0から1になります。

そして最後に測定をします。

測定は.m[]を使います。:の記号は全ての量子ビットに測定をするという意味なので、このまま使います。そしてこの回路を実行します。.run(shots=1)で1回だけ計算をします。やってみましょう。

Circuit().x[0].m[:].run(shots=1)
Counter({'1': 1})

これを実行すると、

Counter({'1': 1})

このようになりました。これは1回計算をして1がでました。

(応用)状態ベクトル

量子コンピュータではシミュレータの専用機能として状態ベクトルというのを取得することができます。これをみることでどの答えが何%で出るのかがわかります。ただ、これは量子ビット数が少ない時だけです。やり方は簡単です。測定をせずに、runでもshotsを指定しないで実行します。

Circuit().h[0].run()
array([0.70710678+0.j, 0.70710678+0.j])

これをやってみると、、、上記はまだ習っていませんが、0と1を半々の確率で出す回路です。

array([0.70710678+0.j, 0.70710678+0.j])

こうなりました。これは、配列になっていて、0と1が出る確率の平方根を表しています。0が出る確率が、0.707*0.707=0.5となります。つまりこれをみることで0と1が50%ずつ出ることがわかります。

100回計算してみると??

上記を応用して100回計算してみましょう。

Circuit().x[0].m[:].run(shots=100)
Counter({'1': 100})

今度は1が100回出ました。

Counter({'1': 100})

今後は計算するごとに答えが変わる場合が多いので、複数回計算して確認をしてみます。

今回は以上

今回は以上ですが、より応用にも踏み込んで進めていきたいと思います。

© 2024, blueqat Inc. All rights reserved