@yuichirominato 2019.01.04更新 141views

【量子コンピュータ入門】量子もつれをBlueqatで実装

Blueqat ベル状態 入門 初心者 初級者 重ね合わせ 量子ゲート 量子もつれ

はじめに

最近初心者、初級者の方で、どこから量子コンピュータをはじめていいかわからないという方向けによく聞かれるので、Hello World!として、アダマールゲートトの実装と量子もつれの実装をみてみたいと思います。ぜひ新年の活動として量子ゲートプログラミングをここから始めてみてください。

ツール

ツールは弊社の提供するBlueqatを使います。簡単にPythonベースで量子ゲートマシンのプログラミングができます。MDRでは超電導量子ビットと呼ばれるタイプの量子コンピュータを開発していますので、将来的にはそちらに接続される予定ですし、IBMQなどと連携していますので、実機を使ったりもできるので安心です。

Blueqat
https://github.com/mdrft/Blueqat

インストール

pipが入ってる方は簡単です、

pip3 install blueqat

これで導入できます。

最初の一歩

まずは量子もつれを実現する前にアダマールゲートを作ってみましょう。最初にBlueqatを読み込んで、1行で計算できます。

from blueqat import Circuit

Circuit().h[0].m[:].run(shots=100) 

Circuit()はインスタンスというものを準備します。

.h[0]はアダマールゲートを0番目の量子ビットに適用するという意味です。

.m[:]は測定をします。

.run(shots=100)は100回同じ計算をします。

さて答えは、、、

Counter({'0': 54, '1': 46})

人によって異なりますが、0と1がだいたい半々ででます。これが重ね合わせです。アダマールゲートは0と1の重ね合わせを作るゲートですので、早速量子コンピュータぽいことができました。

-----H-----

こういうとても単純な回路です。量子コンピュータは確率計算を行うマシンなので、何回も計算して出る答えを確率で判断します。

量子もつれ

次に入門量子もつれ回路を作ります。これは2つの量子ビットを使ってもつれさせることで情報を同期できます。

from blueqat import Circuit

Circuit().h[0].cx[0,1].m[:].run(shots=100) 

結果は、、、

Counter({'11': 50, '00': 50})

これは11と00が半々で出ています。本来は00,01,10,11の四種類が出るはずですが、この回路では00と11という両方の量子ビットが揃った解しかでません。これが量子もつれです。ベル状態とも呼びます。

Circuit()はインスタンスというものを準備します。

.h[0]はアダマールゲートを0番目の量子ビットに適用するという意味です。

.cx[0,1]はCX/CNOT回路と呼び、条件付きの反転回路です。0番目の量子ビットが0なら1番目も0、0番目の量子ビットが1なら1番目の量子ビットは反転して1になります。そのため、00と11のどちらかしかでない回路ができます。

.m[:]は測定をします。

.run(shots=100)は100回同じ計算をします。

回路自体は、先ほどの回路にCX(CNOT)回路がついたものです。これで完了です。

------H------*-------
-------------X-------

まとめ

ここまでできれば量子コンピュータは入門完了です。あとは少しずついろいろな問題を解いていくことで奥深い量子コンピュータの世界を徐々に体感できます。

あわせて読みたい

SERVICE

汎用量子コンピュータ向けアプリケーション開発SDK

詳しく見る Githubで入手する(無料)

汎用量子コンピュータ向け高速シミュレータ

詳しく見る

量子コンピュータ向けクラウドサービス(準備中)

詳しく見る

イジングマシン向けアプリケーション開発SDK

詳しく見る Githubで入手する(無料)

COMMUNITY

量子コンピュータのことを学びたい、仕事としたいなどの情報交換の場を設け、コミュニティの形成を進めています。オフラインの勉強会と、オンラインのチャットコミュニティの2種類あります。オフラインのConnpassは1400名、オンラインのSlackは880名を超える参加があります。どちらも無料ですのでお気軽にご参加ください。

CONNPASS SLACK

CONTACT

弊社あての連絡はinfo@mdrft.comより用件を明記の上、メールで連絡を頂けますと幸いです。

ブログトップへ Wikiへ移動

量子コンピュータ一般

量子ゲートアルゴリズム

量子アニーリング一般

量子アニーリングアルゴリズム

BlueqatSDKの使い方