Help us understand the problem. What is going on with this article?

Google ColaboratoryとBlueqatで始める量子コンピュータプログラミング03(重ね合わせ)

はじめに

前回は1量子ビットの計算の概要と2量子ビットを見ました。今回は量子コンピュータの特徴の一つである重ね合わせを行ってみます。

前回まで

前回までのおさらいはこちらです。

「Google ColaboratoryとBlueqatで始める量子コンピュータプログラミング02(2量子ビット)」
https://qiita.com/YuichiroMinato/items/d012ba176d6da8cbecfb

「Google ColaboratoryとBlueqatで始める量子コンピュータプログラミング01(1量子ビット)」
https://qiita.com/YuichiroMinato/items/6908e00c98843cc64bf0

早速やってみます

youtubeでは動画を、google colabのリンクでは実際にプログラミングがされた状態が準備できます。

今回のyoutube動画リンク
https://www.youtube.com/watch?v=385HHGcOgwc

今回のgoogle colabリンク
https://colab.research.google.com/github/Blueqat/Blueqat-tutorials/blob/master/tutorial-ja/003_basic_superposition.ipynb

インストール
まずはインストールです。google colabでは毎回インストールが必要です。

!pip install blueqat

!マークをつけてインストールをします。完了したら次に進みます。

重ね合わせ回路

早速作ってみましょう。簡単です、ツールを読み込んで1行書くだけ。

from blueqat import Circuit

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

こちらはアダマールゲートと呼ばれるゲートを適用しています。こちらは0と1の重ね合わせを作るための回路です。こちらを実行すると、、、

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

0と1が約半々で出てきました。これは答えは定まっておらず、50%ずつで実行するたびにちょっとずつ変わります。これが重ね合わせ回路です。

状態ベクトルを確認してみる

上記は状態ベクトルと呼ばれる数値を確認することで中がどうなっているか確認することができます。状態ベクトルは、

Circuit().h[0].run()

上記のように測定をしないことで取得できます。これを実行すると、

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

こう出ました。この場合は配列となっており、左の数が0が出る確率の平方根。右の数が1が出る確率の平方根となっています。上記は0.707*0.707=0.5ということで、二乗して確認ができます。

マイナス状態???

この回路を実行するとどうなるでしょうか?

Circuit().h[0].z[0].run()

これは、

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

となりました。確率振幅と呼ばれる数字にマイナスがついています。これをサンプリングすると、

Circuit().h[0].z[0].m[:].run(shots=100)
Counter({'0': 52, '1': 48})

答え自体はプラス状態と見分けがつきません。上記の状態は計算結果としては変わりませんが、計算過程で利用をしたりしますので、今後確認してみたいと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away