Python(Qiskit)について(20)

概要

  • Qiskit について, 学習サイト の サンプルプログラムを動かしてみた.
  • 動作環境は, 学習サイト上 で行った
  • 実行プログラム, 解説は, 下記の参照サイトをご覧ください

感想

  1. ベルンシュタイン・ヴァジラニ アルゴリズムの演算方法で, 量子オラクルについて確認してみた.
  2. 5 ~ 6量子ビットで確認したが出力結果が改行されなかったので, wbrタグを手動埋め込みし改行させて確認している.
  3. 下記の (参考)シミュレーターでの実験 の通り, ベルンシュタイン・ヴァジラニ アルゴリズム の プログラム内に, 秘密の文字列を反転する操作が実装されており, 個人的には, 手計算前に, 秘密の文字列 を 反転させる操作 と 符合すると予想する.
  4. 演習問題では, 10量子ビット(“1110110101”)での記述もあったが, 実行後に, エラー(Too large to display)となったため, 詳細は確認できなかったが, 5 ~ 6量子ビットで確認出来たので, 十分だと思う.

ベルンシュタイン・ヴァジラニ アルゴリズム(演習問題改題ほか)

  1. 量子オラクル(5量子ビット “10011”)
  2. [手計算]

    [結果]
    手計算との一致を確認できた.

     


  3. 量子オラクル(6量子ビット “010110”)
  4. [手計算]

    [結果]
    手計算との一致を確認できた.

     


  5. (参考)量子オラクル(10量子ビット “1110110101”)
  6. [結果]
    エラー出力された.

     


  7. (参考)シミュレーターでの実験
  8. 公式サイトでは, 秘密の文字列 “011” で, シミュレーターによる実験を見ることが出来る.
    ⇒ プログラム中に, 以下の実装箇所があるが, これをコメントアウト(秘密の文字列の反転を行わない)して, 結果を確認してみる.

    [結果]
    シミュレーター の 結果が, 秘密の文字列 “110” で, 出力されることを確認できた.

     


参照サイト

Python(Qiskit)について(19)

概要

  • Qiskit について, 学習サイト の サンプルプログラムを動かしてみた.
  • 動作環境は, 学習サイト上 で行った
  • 実行プログラム, 解説は, 下記の参照サイトをご覧ください

感想

  1. ベルンシュタイン・ヴァジラニ アルゴリズムの演算方法で, 量子オラクルについて確認してみた.
  2. 既に, 学習環境が用意されており, 数値を書き換えるなどして試行錯誤もできるので, 個人的には, 非常に面白く感じた.

ベルンシュタイン・ヴァジラニ アルゴリズム

  1. 量子オラクル(1量子ビット “1”)
  2. [手計算]

    [結果]
    手計算との一致を確認できた.

     


  3. 量子オラクル(2量子ビット “01”)
  4. [手計算]

    [結果]
    手計算との一致を確認できた.

     


  5. 量子オラクル(3量子ビット “110”)
  6. [手計算]

    [結果]
    手計算との一致を確認できた.

     


  7. 量子オラクル(4量子ビット “1011”)
  8. [手計算]

    [結果]
    手計算との一致を確認できた.

     


参照サイト

Python(Qiskit)について(18)

概要

  • Qiskit について, 学習サイト の サンプルプログラムを動かしてみた.
  • 動作環境は, 学習サイト上 で行った
  • 実行プログラム, 解説は, 下記の参照サイトをご覧ください

感想

  1. 前回の続きを確認してみた, より複雑なパターンになるが, 非常に面白く感じた.

Hello Qiskitゲーム

  1. パズル6
  2. [Choose gate] で, [NOT]クリック.

     

    [Choose bit] で, [the bit on the right]クリック.

     

    [Make it happen!] で, [Apply Operation]クリック.

     

    [Choose gate] で, [CNOT]クリック.

     

    [Choose bit] で, [the bit on the right]クリック.

     

    [Make it happen!] で, [Apply Operation]クリック.

     

    [結果]
    真ん中の円が, になった.
    [Success!] が 表示されるので, 操作手順が正しかったことを確認できる.

     

    [参考(初期状態を, Zゲートに変更した場合)]

    [Choose gate] で, [NOT]クリック.

     

    [Choose bit] で, [the bit on the left]クリック.

     

    [Make it happen!] で, [Apply Operation]クリック.

     

    [結果]
    真ん中の円が, になった.
    [Success!] が 表示されるので, 操作手順が正しかったことを確認できる.

     


  3. パズル7
  4. [Choose gate] で, [CNOT]クリック.

     

    [Choose bit] で, [the bit on the left]クリック.

     

    [Make it happen!] で, [Apply Operation]クリック.

     

    [Choose gate] で, [CNOT]クリック.

     

    [Choose bit] で, [the bit on the right]クリック.

     

    [Make it happen!] で, [Apply Operation]クリック.

     

    [Choose gate] で, [NOT]クリック.

     

    [Choose bit] で, [the bit on the right]クリック.

     

    [Make it happen!] で, [Apply Operation]クリック.

     

    [結果]
    真ん中の円が, になった.
    [Success!] が 表示されるので, 操作手順が正しかったことを確認できる.

     


参照サイト

Python(Qiskit)について(17)

概要

  • Qiskit について, 学習サイト の サンプルプログラムを動かしてみた.
  • 動作環境は, 学習サイト上 で行った
  • 実行プログラム, 解説は, 下記の参照サイトをご覧ください

感想

  1. 個人的には, 視覚的に, 量子ビット, 量子ゲート を 確認出来るため, 非常に面白く感じた.
  2. さらに, 学習サイト上で, プログラムを編集して, 実行できるので, 非常に便利に感じた.

Hello Qiskitゲーム

  1. パズル1
  2. [Choose gate] で, [NOT]クリック.

     

     

     

     

     

    [Choose bit] で, [the only bit]クリック.

     

     

     

     

     

    [Make it happen!] で, [Apply Operation]クリック.

     

     

     

     

     

    [一回目結果(NOTゲート)]

     

     

     

     

     

     

    手順を略して,
    [二回目結果(NOTゲート)]

     

     

     

     

     

     

    [三回目結果(NOTゲート)]
    [Success!] が 表示されるので, 操作手順が正しかったか確認できる.

     

     

     

     

     


  3. パズル2
  4. [Choose gate] で, [NOT]クリック.

     

     

     

     

     

    [Choose bit] で, [the bit on the right]クリック.

     

     

     

     

     

    [Make it happen!] で, [Apply Operation]クリック.

     

     

     

     

     

    [結果(NOTゲート)]

     

     

     

     

     

     

    [参考(ANDゲート)]
    ちなみに, AND を 指定すると, もう一方のビットは, オン(黒 ⇒ 白)にならないことも確認できる.

    と プログラムを修正している

     

     

     

     

     

     


  5. パズル3
  6. [Choose gate] で, [CNOT]クリック.

     

     

     

     

     

    [Choose bit] で, [the bit on the right]クリック.

     

     

     

     

     

    [Make it happen!] で, [Apply Operation]クリック.

     

     

     

     

     

    [結果(CNOTゲート)]
    右側のビットがオンになったことを確認出来る

     

     

     

     

     

     

    [参考(左側のビットをオンにするには?)]

    [Choose gate] で, [CNOT]クリック.

     

     

     

     

     

    [Choose bit] で, [the bit on the left]クリック.

     

     

     

     

     

    [Make it happen!] で, [Apply Operation]クリック.

     

     

     

     

     

    [結果(CNOTゲート)]
    左側のビットがオンになったことを確認出来る

     

     

     

     

     

     


  7. パズル4
  8. [Choose gate] で, [CNOT]クリック.

     

     

     

     

     

    [Choose bit] で, [the bit on the right]クリック.

     

     

     

     

     

    [Make it happen!] で, [Apply Operation]クリック.

     

     

     

     

     

    [Choose gate] で, [CNOT]クリック.

     

     

     

     

     

    [Choose bit] で, [the bit on the left]クリック.

     

     

     

     

     

    [Make it happen!] で, [Apply Operation]クリック.

     

     

     

     

     

    [結果(CNOTゲート)]
    左側のビットがオフ, 右側のビットがオンになったことを確認出来る

     

     

     

     

     

     

    [参考(左側のビットをオン, 右側のビットをオフにするには?)]

    [Choose gate] で, [CNOT]クリック.

     

     

     

     

     

    [Choose bit] で, [the bit on the left]クリック.

     

     

     

     

     

    [Make it happen!] で, [Apply Operation]クリック.

     

     

     

     

     

    [Choose gate] で, [CNOT]クリック.

     

     

     

     

     

    [Choose bit] で, [the bit on the right]クリック.

     

     

     

     

     

    [Make it happen!] で, [Apply Operation]クリック.

     

     

     

     

     

    [結果(CNOTゲート)]
    左側のビットがオン, 右側のビットがオフになったことを確認出来る

     

     

     

     

     

     


  9. パズル5
  10. [Choose gate] で, [CNOT]クリック.

     

     

     

     

     

    [Choose bit] で, [the bit on the right]クリック.

     

     

     

     

     

    [Make it happen!] で, [Apply Operation]クリック.

     

     

     

     

     

    [結果(CNOTゲート)]
    右側のビットがランダムになることを確認出来る

     

     

     

     

     

     

    [参考(左側のビットをランダムにするには?)]

    [Choose gate] で, [CNOT]クリック.

     

     

     

     

     

    [Choose bit] で, [the bit on the left]クリック.

     

     

     

     

     

    [Make it happen!] で, [Apply Operation]クリック.

     

     

     

     

     

    [結果(CNOTゲート)]
    左側のビットがランダムになることを確認出来る

     

     

     

     

     


参照サイト

Python(Qiskit)について(16)

概要

  • Qiskit について, 学習サイト の サンプルプログラムを動かしてみた.
  • 動作環境は, Google Colaboratory で行った
  • 実行プログラム, 解説は, 下記の参照サイトをご覧ください

感想

  1. 本家のサイトの学習教材が非常に詳しいので, 今後も, 時間を見つけて, 確認していこうと思う.

ドイチ-ジョサ(Deutsch-Jozsa)のアルゴリズム(演習問題)

  • 本家のサイトにある, dj_oracle関数をベースに, 演習問題用のオラクルを実装してみた.
  • 具体的には, n が, 1 ~ 4 で 分布型, 5 で 定値型 となるようにしている.
  • 出力結果(量子回路)については, n = 1 ~ 5 で 同じ内容が出力されたと理解する.
  • グラフ(添付画像)については, n = 1 ~ 4 で ‘1111’ が, 100%, n = 5 で ‘0000’ が 100% だった.


  1. 出力結果(量子回路, n = 1)


  2. 出力結果(量子回路, n = 2)


  3. 出力結果(量子回路, n = 3)


  4. 出力結果(量子回路, n = 4)


  5. 出力結果(量子回路, n = 5)


補足

  • 上記だけだと分かりづらい印象があったため, dj_problem_oracle関数内の量子回路(オラクル)も確認した.

  1. 出力結果(オラクル/量子回路, n = 1)

  2. 出力結果(オラクル/量子回路, n = 2)

  3. 出力結果(オラクル/量子回路, n = 3)

  4. 出力結果(オラクル/量子回路, n = 4)

  5. 出力結果(オラクル/量子回路, n = 5)

参照サイト

Python(Qiskit)について(15)

概要

  • Qiskit について, 学習サイト の サンプルプログラムを動かしてみた.
  • 動作環境は, Google Colaboratory で行った
  • 実行プログラム, 解説は, 下記の参照サイトをご覧ください

感想

  1. 本家のサイトの学習教材が非常に詳しいので, 今後も, 時間を見つけて, 確認していこうと思う.

ドイチ-ジョサ(Deutsch-Jozsa)のアルゴリズム

  1. ドイチ-ジョサ(1-bit/定値型関数)


  2. ドイチ-ジョサ(1-bit/分布型関数)


  3. ドイチ-ジョサ(2-bit/定値型関数)


  4. ドイチ-ジョサ(2-bit/分布型関数)


  5. ドイチ-ジョサ(3-bit/定値型関数)


  6. ドイチ-ジョサ(3-bit/分布型関数)


  7. ドイチ-ジョサ(4-bit/定値型関数)


  8. ドイチ-ジョサ(4-bit/分布型関数)


  9. ドイチ-ジョサ(5-bit/定値型関数)


  10. ドイチ-ジョサ(5-bit/分布型関数)


参照サイト

Python(Qiskit)について(14)

概要

  • Qiskit について, 学習サイト の サンプルプログラムを動かしてみた.
  • 動作環境は, Google Colaboratory で行った
  • 実行プログラム, 解説は, 下記の参照サイトをご覧ください

感想

  1. 本家のサイトの学習教材が非常に詳しいので, 今後も, 時間を見つけて, 確認していこうと思う.

位相キックバック(練習問題含む)

  1. 練習問題 1(Controlled-U)

  2. 練習問題 1(T)

  3. 練習問題 2(Controlled-U)

  4. 練習問題 2(Controlled-Dagger)

  5. 練習問題 3

参照サイト

Python(Qiskit)について(13)

概要

  • Qiskit について, 学習サイト の サンプルプログラムを動かしてみた.
  • 動作環境は, Google Colaboratory で行った
  • 実行プログラム, 解説は, 下記の参照サイトをご覧ください

感想

  1. 本家のサイトの学習教材が非常に詳しいので, 今後も, 時間を見つけて, 確認していこうと思う.

単一量子ビットゲート(練習問題含む)

  1. 演算(X, H, Z)

  2. 演算(X, Y, Z)

  3. 演算(T, X, S, H, Y)

複数量子ビットゲート(練習問題含む)

  1. 演算(CNOT)

  2. 演算(H, CNOT)

  3. ベル状態

  4. ベル状態(続き)

  5. ベル状態(続き)

参照サイト

Python(Qiskit)について(12)

概要

  • Qiskit について, 学習サイト の サンプルプログラムを動かしてみた.
  • 動作環境は, Google Colaboratory で行った
  • 実行プログラム, 解説は, 下記の参照サイトをご覧ください

感想

  1. 本家のサイトの学習教材が非常に詳しいので, 今後も, 時間を見つけて, 確認していこうと思う.

単一量子ビットゲート

  1. 単一量子ビットゲート
  2. ブロッホ球

  3. 単一量子ビットゲート
  4. ブロッホ球

複数量子ビットともつれ状態(練習問題含む)

  1. Statevector(|1>)

  2. Statevector(|+>)

  3. Statevector(|->)

  4. Statevector(|0>|1>)

  5. Statevector(|0>|+>)

  6. Statevector(|+>|1>)

  7. Statevector(|->|+>)

  8. Statevector

  9. 量子ビット(1/√2|00> + i/√2|01>)

参照サイト

Python(Qiskit)について(11)

概要

  • Qiskit について, 学習サイト の サンプルプログラムを動かしてみた.
  • 動作環境は, Google Colaboratory で行った
  • 実行プログラム, 解説は, 下記の参照サイトをご覧ください

感想

  1. 本家のサイトの学習教材が非常に詳しいので, 今後も, 時間を見つけて, 確認していこうと思う.

ブロッホ球(練習問題含む)

  1. 状態|+>

  2. 状態|0>

  3. 状態|1>

  4. 状態(|0> + |1>) / √2

  5. 状態(|0> – i * |1>) / √2

  6. 状態 [i, 1] / √2

参照サイト