量子コンピューター超入門ハンズオン 補足資料 線形代数

 量子コンピューター超入門ハンズオン 補足資料 線形代数

385da418a213556b734059bd85a205b3?s=128

Ayumu-walker

April 24, 2020
Tweet

Transcript

  1. 量子コンピューター超入門ハンズオン 補足資料:線形代数

  2. 2 簡単なベクトル/行列計算の復習 • 始める前に、ちょっとした計算ルールを頭に入れておきましょう! • 量子コンピューターの世界では、数学の世界と以下のような対応関係があります。 11 ⋯ 1 ⋮

    ⋱ ⋮ 1 ⋯ 1 ⋮ ベクトル 行列 量子状態 (計算に使うデータ) 量子状態(データ)に 対する操作(ゲート) 1 … 量子コンピューターの世界 (量子力学) 数学の世界 計算上の表現 縦ベクトル 横ベクトル
  3. 3 簡単なベクトル/行列計算の復習 1 ⋮ + 1 ⋮ = 1 +

    1 ⋮ + 1 … + 1 … = 1 + 1 … + 11 ⋯ 1 ⋮ ⋱ ⋮ 1 ⋯ + 11 ⋯ 1 ⋮ ⋱ ⋮ 1 ⋯ = 11 + 11 ⋯ 1 + 1 ⋮ ⋱ ⋮ 1 + 1 ⋯ + 縦ベクトル: 横ベクトル: 行列: • ベクトル/行列は、同じ成分の箇所通しを足し引きすることが可能です。 • 構造の同じもの同士でしか、演算はできません。 • 引き算についても同様です。
  4. 4 簡単なベクトル/行列計算の復習 • ベクトルと行列の定数倍 • 全ての成分に定数倍を掛けるだけ • 行列とベクトルの掛け算 • 黄色の行と青色の列の成分を、1つずつ掛けて、全て足し合わせて、ベクトルの1つの成分(緑色)とな

    る • 行列同士の掛け算 • 行列とベクトルの掛け算と同じ計算をして、行列の1つの成分(緑色)となる 11 ⋯ 1 ⋮ ⋱ ⋮ 1 ⋯ 1 ⋮ = 11 1 + … +1 ⋮ ⋮ 1 1 + … + 11 ⋯ 1 ⋮ ⋱ ⋮ 1 ⋯ 11 ⋯ 1 ⋮ ⋱ ⋮ 1 ⋯ = 11 11 + … + 1 1 ⋯ 11 1 + ⋯ + 1 ⋮ ⋱ ⋮ 1 11 + … + 1 ⋯ 1 1 + ⋯ + 1 ⋮ = 1 ⋮ 11 ⋯ 1 ⋮ ⋱ ⋮ 1 ⋯ = 11 ⋯ 1 ⋮ ⋱ ⋮ 1 ⋯
  5. 5 簡単なベクトル/行列計算の復習 • 以下のベクトルと行列を使って計算の仕方を学びます。 • ベクトル/行列の足し算/引き算 • ベクトル/行列の定数倍 v= 1

    3 w= 2 5 A= −2 4 3 1 B= −1 1 3 6 v+w= 1 2 + 2 5 = 1 + 2 2 + 5 = 3 7 v-w= 1 2 − 2 5 = 1 − 2 2 − 5 = −1 −3 A+B= −2 4 3 1 + −1 1 3 6 = −2 − 1 4 + 1 3 + 3 1 + 6 = −3 5 6 7 A-B= −2 4 3 1 − −1 1 3 6 = −2 − (−1) 4 − 1 3 − 3 1 − 6 = −1 3 0 −5 2v=2* 1 3 = 2 ∗ 1 2 ∗ 3 = 2 6 3A=3 ∗ −2 4 3 1 = 3 ∗ −2 3 ∗ 4 3 ∗ 3 3 ∗ 1 = −6 12 9 3
  6. 6 簡単なベクトル/行列演算の例 ~続き~ • 行列とベクトルを掛ける例(量子状態にゲートを通した後の状態を計算していることに等しい) • 行列同士の掛け算 Av= −2 4

    3 1 1 3 = −2 ∗ 1 + 4 ∗ 3 3 ∗ 1 + 1 ∗ 3 = −2 ∗ 1 + 4 ∗ 3 3 ∗ 1 + 1 ∗ 3 = −2 + 12 3 + 3 = 10 6 AB= −2 4 3 1 −1 1 3 6 = −2 ∗ −1 + 4 ∗ 3 −2 ∗ 1 + 4 ∗ 6 3 ∗ −1 + 1 ∗ 3 3 ∗ 1 + 1 ∗ 6 = 2 + 12 −2 + 24 −3 + 3 3 + 6 = 14 22 0 9 BA= −1 1 3 6 −2 4 3 1 = −1 ∗ −2 + 1 ∗ 3 −1 ∗ 4 + 1 ∗ 1 3 ∗ −2 + 6 ∗ 4 3 ∗ 4 + 6 ∗ 1 = 2 + 3 −4 + 1 −6 + 24 12 + 6 = 5 −3 18 18 *行列の掛け算は順番を変えても同じになるとは限らない! → どのゲートをどの順番で通すかを慎重に考えることが必要になる!
  7. 7 量子計算に使う量子状態のベクトル表現 • 古典ビットと同様に、1つの量子ビットも、2つの値を持ちえる • これは、古典ビットにおける0と1に相当 • 通例として、|0>と|1>のように表現する • この表現方法は、ブラケット表記と呼ばれ、上記はケットベクトルと呼ぶ

    • 便宜的に、|0>と|1>は次のようなベクトルとして表現すると、演算が簡単になる • 後続のハンズオンでは、以下を使って計算を行う • 2量子ビットの場合は4つ(00、01、10、11)を使って表現できる |0>= 1 0 |1>= 0 1 |00>= 1 0 0 0 |01>= 0 1 0 0 |10>= 0 0 1 0 |11>= 0 0 0 1
  8. 8 量子計算に使う量子状態のベクトル表現の例 |+>= 1 2 |0> + 1 2 |1>=

    1 2 1 0 + 1 2 0 1 = 1 2 1 2 |->= 1 2 |0> − 1 2 |1>= 1 2 1 0 − 1 2 0 1 = 1 2 − 1 2
  9. 9 量子計算に使う量子状態のベクトル表現の例 |>= 1 2 |00> + 1 2 |01>

    + 1 2 |10>+ 1 2 |11> = 1 2 1 0 0 0 + 1 2 0 1 0 0 + 1 2 0 0 1 0 + 1 2 0 0 0 1 = Τ 1 2 Τ 1 2 Τ 1 2 Τ 1 2
  10. 10 代表的な量子ゲート一覧 10 行列表現 Qiskitでの コード Qiskitでの 回路表示 Xゲート x

    Yゲート 0 − 0 y Zゲート − z Hゲート − h CNOTゲート cx Sゲート 1 0 0 s Tゲート 1 0 0 2 t |0>と|1>の状態を入れ替える |1>の状態の確率振幅の 符号を逆にする |0>もしくは|1>の状態から 重ね合わせ状態を作りだす 上の状態が|1>なら下の状態 にXゲートと同じ操作をする。 それ以外は何もしない
  11. 11 • |0>の状態にXゲート(|0>と|1>を入れ替える)に通した場合 • |0>の状態をHゲート(重ね合わせ状態を作る)に通した場合 ゲートの計算例 X ۧ |0 =

    0 1 1 0 1 0 = 0 ∗ 1 + 1 ∗ 0 1 ∗ 1 + 0 ∗ 0 = 0 1 = ۧ |1 H ۧ |0 = 1 2 1 1 1 −1 1 0 = 1 2 1 ∗ 1 + 1 ∗ 0 1 ∗ 1 − 1 ∗ 0 = 1 2 1 1 = 1 2 1 0 + 1 2 0 1 = 1 2 ۧ |0 + 1 2 ۧ |1 = ۧ |+