6K Views
August 21, 22
スライド概要
量子計算の基礎の資料です.量子計算を始めてみたついでに作った資料になります.
量⼦計算の基礎 藤⽥ ⼀寿 Ver. 20240112
量⼦計算の基礎の基礎
ビットと量⼦ビット • 古典計算機ではビットを使い情報を表現する. • 量⼦計算機では量⼦ビットを使い情報を表現する. 古典計算機 ビットは0か1の値 ビットの値は0か1のどちらかに決 まっている. 量⼦計算機 量⼦ビットは0か1の状態 量⼦ビットの状態は確率的に決まる.
量⼦計算 • 量⼦計算は,量⼦ビットの状態が現れる確率を観測し,その観測結果 を計算結果とする. • 量⼦ビットの状態は量⼦⼒学に基づき決定される. • ⽬的の計算を⾏うための量⼦⼒学的な回路を考えるのが量⼦計算であ る. 𝑈!" (𝑥) 量⼦ビット 𝑈(𝜃) 量⼦⼒学的な回路 量⼦ビットの状態を観測
量⼦計算の理解するための 量⼦⼒学
物質波 • ド・ブロイの物質波 • 物質は波らしい? • 電⼦の2重スリット実験 • 電⼦を2重スリット越しのスクリーンに当てる. • スクリーンには⼲渉縞が現れる. • 電⼦に波動性があることが分かる. 電⼦銃 スクリーン 原康夫 現代物理学
波動関数と確率 • 物質は波らしいから,シュレディンガー⽅程式とか⾔う波の⽅程式で 書けるようだ. • 時間に依存しないシュレディンガー⽅程式は • 𝐻𝜓 𝑥 = 𝐸𝜓(𝑥) • 何故かわからないが波動関数 𝜓 𝑥 の2乗が物質の存在確率を表す. • コペンハーゲン解釈 • 波動関数の2乗が存在確率を表すので,全領域で積分すると1になる. • ∫ 𝜓 ∗ 𝑥 𝜓 𝑥 𝑑𝑥 = 1 𝜓 ∗ 𝑥 は複素共役 • シュレディンガー⽅程式を違う視点で⾒ると • 𝐻𝜓 𝑥 = 𝐸𝜓(𝑥) • 演算⼦×波動関数 = 固有値×波動関数と思える. 物質波やシュレディンガ ー⽅程式,波動関数の解 釈が分からない.どう思 えばよいのか?
期待値 • 物質がどこにあるのかは確率で決まるらしい. • しかし,物質がどのあたりにあるのか気になる. • 期待値を求めればそれが分かる. • 𝑥 = ∫ 𝑥𝑝 𝑥 𝑑𝑥 = ∫ 𝑥 𝜓 𝑥 ! 𝑑𝑥 = ∫ 𝑥𝜓∗ 𝑥 𝜓 𝑥 𝑑𝑥
量⼦⼒学 • よく分からないので,とにかく量⼦の状態は確率的に決まると思うこ とにする.
ブラケット
ブラケット • ∫ 𝜓∗ 𝑥 𝜓 𝑥 𝑑𝑥 = 𝜓 𝑥 𝜓 𝑥 =1 • と書くことにする. • 𝜓 をブラベクトル, 𝜓 をケットベクトルという. • 期待値は次のようにブラケットを⽤いて書ける. • 𝑥 = ∫ 𝜓∗ 𝑥 𝑥𝜓 𝑥 𝑑𝑥 = 𝜓 𝑥 𝑥 𝜓 𝑥 ブラケットはDirac先⽣の贈り物 シュレディンガー⽅程式がブラケットにより抽象 化される.なぞのカッコに抽象化され,初学者の 私は困惑する.
本当にブラケットがどうにも分からないのでいいかげんに納得する 𝜓 ∗ 𝑥 𝜓 𝑥 は連続の関数(確率密度関数) なので,確率ではない.区間𝑥! (区間の幅 𝛿𝑥)に量⼦が存在する確率を求めるには, 𝜓 ∗ 𝑥! 𝜓 𝑥! 𝛿𝑥のように確率密度関数に区間 の幅をかけなければならない. • ∫ 𝜓 ∗ 𝑥 𝜓 𝑥 𝑑𝑥 = 𝜓 𝑥 𝜓 𝑥 = 1 • 積分は難しいので,⾜し算で考える. • ∑" 𝜓 ∗ 𝑥" 𝜓 𝑥" 𝛿𝑥 = 𝛿𝑥 𝜓 ∗ 𝑥# … 𝜓 ∗ 𝑥" … 𝜓 ∗ 𝑥$ 𝜓 𝑥# ⋮ 𝜓 𝑥" ⋮ 𝜓 𝑥$ 𝑎# ⋮ ∗ ∗ 𝑎" = 𝑎#∗ 𝑎# + ⋯ + 𝑎"∗ 𝑎" + ⋯ + 𝑎$ 𝑎#∗ … 𝑎"∗ … 𝑎$ 𝑎$ = 1 ⋮ 𝑎$ ∗ • 𝑎 = 𝑎#∗ … 𝑎"∗ … 𝑎$ , a = 𝑎# … 𝑎" … 𝑎$ % = 𝑎! = 𝛿𝑥𝜓(𝑥! ) = 𝑎! $ が場所𝑥! で観 測される(状態𝑖 である)確 率になる. 𝑎!∗ 𝑎! • ブラは縦ベクトル,ケットはブラの転置⾏列で複素共役になる.これでなんとな く,ブラとケットがベクトルであることに納得がいったと思いたい.
エルミート共役 • ケットベクトルが2次元だとすると,演算⼦Aは2×2の⾏列である. 𝑎 𝑏 𝑥 •𝐴𝜓 = 𝑐 𝑑 𝑦 • 𝐴のエルミート共役は • • • • • • # 𝑎 𝑏 𝑎∗ 𝑐 ∗ # 𝐴 = = = ∗ 𝑐 𝑑 𝑏 𝑑∗ 𝐴 = 𝐴#となる⾏列をエルミート⾏列と呼ぶ. 𝑎 𝑏 𝑎∗ 𝑐 ∗ エルミート⾏列の場合 = ∗ だから ∗ 𝑐 𝑑 𝑏 𝑑 𝑎 = 𝑎∗ ,𝑏 = 𝑐 ∗ ,𝑐 = 𝑏∗ ,𝑑 = 𝑑∗ が成り⽴つので エルミート⾏列𝐴は 𝑎 𝑏 𝐴= ∗ ,ただし𝑎,𝑏は実数. 𝑏 𝑑 ∗ $ 𝐴 𝐴% はエーダガーと⾔う.
ユニタリ⾏列 • ユニタリ⾏列𝑈は次の条件を満たすものを⾔う. • 𝑈# = 𝑈%& • 𝑈#𝑈 = 𝐼,𝑈𝑈# = 𝐼
量⼦計算
量⼦計算の概要
ビットと量⼦ビット • 古典計算機ではビットを使い情報を表現する. • 量⼦計算機では量⼦ビットを使い情報を表現する. 古典計算機 ビットは0か1の値 ビットの値は0か1のどちらかに決 まっている. 量⼦計算機 量⼦ビットは0か1の状態 量⼦ビットの状態は確率的に決まる.
量⼦計算 • 量⼦計算は,量⼦ビットの状態が現れる確率を観測し,その観測結果 を計算結果とする. • 観測結果に計算結果が現れるようにユニタリ⾏列𝑈つくる. • ユニタリ⾏列 𝑈 と等価な量⼦回路をつくる. 𝑈!" (𝑥) 量⼦ビット 量⼦回路 𝑈(𝜃) 量⼦ビットの状態を観測 量⼦ビットが量⼦回路で状態が変わり,その状態を観測する. 観測結果に計算結果が乗っかる.
古典計算機と量⼦計算機 • 古典計算機は,論理演算を⾏っている. • 論理演算を組み合わせることで,様々な計算を実現している. A B Y <latexit sha1_base64="l3lVn+LAtRu6tnDQ4Qhs9eYdxKQ=">AAAB9HicbVBNSwMxEJ31s9avqkcvwSJ4Krsi6EWo9eKxgv2QdinZbLYNzSZrki2Upb/DiwdFvPpjvPlvTNs9aOuDgcd7M8zMCxLOtHHdb2dldW19Y7OwVdze2d3bLx0cNrVMFaENIrlU7QBrypmgDcMMp+1EURwHnLaC4e3Ub42o0kyKBzNOqB/jvmARI9hYyb9BXRJKg2roGj32SmW34s6AlomXkzLkqPdKX91QkjSmwhCOte54bmL8DCvDCKeTYjfVNMFkiPu0Y6nAMdV+Njt6gk6tEqJIKlvCoJn6eyLDsdbjOLCdMTYDvehNxf+8TmqiKz9jIkkNFWS+KEo5MhJNE0AhU5QYPrYEE8XsrYgMsMLE2JyKNgRv8eVl0jyveG7Fu78oV2t5HAU4hhM4Aw8uoQp3UIcGEHiCZ3iFN2fkvDjvzse8dcXJZ47gD5zPH3/0kJs=</latexit> AND回路(ゲート) A 0 0 1 1 B 0 1 0 1 Y 0 0 0 1 • 量⼦計算機は,量⼦演算を⾏っている. • 量⼦演算は量⼦ビットの状態を変化させる演算 • 量⼦演算を組み合わせることで様々な計算を実現できる. • 量⼦演算でNAND回路が作れるため古典計算機で出来ることは,量⼦計算 を使うことで実現出来る. • しても意味がない. 𝑈!" (𝑥) 𝑈(𝜃)
電⼦の2重スリット実験を使った量⼦計算の直感的理解 • 電⼦の2重スリット実験 • 電⼦を2重スリット越しのスクリーンに当てる. • スクリーンに⼲渉縞が現れる. 注:これはあくまでも量⼦計算の雰囲気 を伝えるための例え話.実際の量⼦計算 とは異なる!! • ⼲渉縞を量⼦計算の計算結果と⾒なすと,⽬的の⼲渉縞が現れるよう なスリットやスクリーンを考えることが量⼦回路を考えることに相当 するだろう. 2重スリット実験 縞模様(濃淡)が, ある場所で電⼦が検 出される確率密度関 数(確率分布)にな っている. 電⼦銃 スリット スクリーン 確率分布に計算結果を 乗せるのが量⼦計算. 確率分布に計算結果が乗 るように,スリットやス クリーンを考える作業が 必要. 量⼦回路 に対応
量⼦ビット
量⼦ビット 量⼦ビットの状態はケットベクトルで表される. 量⼦計算機 0状態 1状態 量⼦ビットは0か1の状態 量⼦ビットの状態は確率的に決まる. 1 0 0 1 = 1 0 = 量⼦ビット𝑞が 𝛼 ! の確率で0状態になり, 𝛽 ! で1状態になるとき 𝑞 =𝛼 0 +𝛽 1
量⼦ビット • 古典計算ではビット(2進数)を使う. • 量⼦計算では量⼦ビットを使う. • 量⼦ビットは2つの状態のいずれかになる. • ⼀つを0,もう⼀つを1で表す. • 量⼦ビットの状態をケットベクトルと呼ばれる複素数ベクトルで表す . 1 0 • 0 = ,1 = 0 1 0 と 1 は正規直交基底である.
重ね合わせ状態 0 と 1 は正規直交基底である. • 古典ではビットは0か1の値しか取れない. • 量⼦では量⼦ビットは0と1の状態を重ね合わせた状態になれる. • 𝑞 =𝛼 0 +𝛽 1 • 式では0と1の状態の重ね合わせを和で表現する. シュレディンガーの猫 1 0 放射線 量⼦ビットの状態は0かも しれないし1かもしれない 猫は⽣きているか死んで いる状態の重ね合わせ 放射線を検知 して毒が出る
ケットベクトル • ケットベクトルを転置して複素共役をとったものをブラベクトルとい う. • 𝑞 = 𝑞 # = [𝛼 ∗ 𝛽∗ ] • ケットベクトルとブラベクトルの積は 𝛼 ∗ ∗ • 𝑞 𝑞⟩ = 𝛼 𝛽 𝛽 = 𝛼 ! + 𝛽 !
状態が出てくる確率との関係 • 量⼦ビットの状態を𝑞とすると, 𝛼 • 𝑞 =𝛼 0 +𝛽 1 = 𝛽 • と書ける.ただし, 𝛼と 𝛽は複素数で • 𝛼 ! + 𝛽 ! =1 • を満たす.
確率との関係 • 波動関数との対応を思い出してみる. • ∫ 𝑞∗ 𝑥 𝑞 𝑥 𝑑𝑥 → 𝑞 𝑞⟩ • 𝑞 𝑞⟩ = 𝛼 ! + 𝛽 ! = 1は観測確率である. • 上の式は量⼦ビットの状態の出現確率の総和なので1に規格化されてい る. • 状態0が出てくる確率はいくらか? ! 𝛼 • 𝑝(|0⟩) = | 0 𝑞 ! = 1 0 𝛽 = 𝛼 !
Bloch sphere • 量⼦ビットの状態を次の式で表した. • 𝑞 =𝛼 0 +𝛽 1 • この式では,𝛼と𝛽は複素数であった.𝛼と𝛽を実数に制限しそれらの相対的 な位相の後を追加して書き直すと次のようになる. • 𝑞 = 𝛼 0 + 𝑒 "# 𝛽 1 • また,正規化されている必要があるので "# $ • 𝛼 $ + 𝑒 𝛽 • 𝛼 $ + 𝛽 $ = 1だから, 𝛼と𝛽を次のように置いて良い. • 𝛼 $ + 𝛽 $ = cos $ 𝜃/2 + sin$ 𝜃/2 = 1 = 𝛼 $ + cos $ 𝜙 + sin$ 𝜙 𝛽 オイラーの公式 𝑒 !" = cos 𝜙 + 𝑖 sin 𝜙 $ = 𝛼 $ + 𝛽 $ =1 cos 𝜃 • よって, 𝑞 = cos 𝜃/2 0 + 𝑒 sin 𝜃/2 1 = "# と書ける. 𝑒 sin 𝜃 • ただし,0 ≤ 𝜃 ≤ 2𝜋, 0 ≤ 𝜙 ≤ 2𝜋 "#
Bloch sphere • 𝑞 = cos 𝜃/2 0 + 𝑒 *+ sin 𝜃/2 1 と書けることを⽰した • 次に,⟨𝑞 𝑞 = 1かどうか確かめる. cos! 𝜃 /2 + , ! sin ! • ⟨𝑞 𝑞 = cos 𝜙 + 𝑖 sin 𝜙 cos 𝜙 − 𝑖 sin 𝜙 cos! 𝜙 + sin! 𝜙 sin! 𝜃/2 = cos! 𝜃/2 + sin! 𝜃/2 = 1 = cos! 𝜃 /2 +
おまけ:波の式 • 1次元の波は𝑦 𝑥 = 𝐴 cos 𝑘𝑥 + 𝜃と書ける. • オイラーの公式から複素数の振動は • 𝐴𝑒 "(0123) = 𝐴 cos 𝑘𝑥 + 𝜃 + 𝑖𝐴 sin(𝑘𝑥 + 𝜃) • = 𝐴 cos 𝑘𝑥 + 𝜃 + 𝑖𝐴 cos(𝑘𝑥 + 𝜃 • つまり複素数の振動は位相が 5 − $) ずれた2つの波の重なりである. ! • これに𝑒 *+ をかけると, • 𝐴𝑒 "(0123) 𝑒 "# = 𝐴𝑒 "(01232#) • なる. • つまり, 𝑒 *+ かけると位相が𝜙ずれる.
Bloch sphere 𝑧 • 量⼦ビットの状態を次の式で表した. cos 𝜃/2 *+ • 𝑞 = cos 𝜃 /2 0 + 𝑒 sin 𝜃/2 1 = *+ 𝑒 sin 𝜃/2 • この式から 𝑞 の振幅は3次元直交座標で表現できる. 𝜃 𝑦 𝜙 • 𝑥 = cos 𝜙 sin 𝜃 , 𝑦 = sin 𝜙 sin 𝜃 , 𝑧 = cos 𝜃 • 𝜙,𝜃で表される振幅は,⻑さ1の球上にある. • この球をBloch sphere(ブロッホ球)という. 𝑥
Bloch sphere おまけ • 𝑞 =𝛼 0 +𝛽 1 • 𝛼, 𝛽は複素数で規格化されているから次のように書く. • 𝑞 = 𝛼𝑒 "## 0 + 𝛽𝑒 "#$ 1 • この4変数はすべて実数である.さらに, • 𝑞 = 𝑒 "## 𝛼 0 + 𝛽𝑒 "(#$%##) 1 • と書ける.さらに, 𝜃' = 𝛿, (𝜃! −𝜃' ) = 𝜙とすると • 𝑞 = 𝑒 "( 𝛼 0 + 𝛽𝑒 ") 1 • となる. 𝛼 = cos 𝜃/2 , 𝛽 = sin 𝜃/2とおけば規格化条件を満たすので • 𝑞 = 𝑒 "( cos 𝜃/2 0 + 𝑒 ") sin 𝜃/2 1 • と書ける. 𝑒 "( は全体にかけてあるため,観測上区別できる変数は𝜃と𝜙のみである.よっ て • 𝑞 = cos 𝜃/2 0 + 𝑒 ") sin 𝜃 /2 1 • と書いて良い.
シミュレーション • 量⼦ビットを観測する. • 初期状態を0にする. • 操作をしていないので,観測では0の状態になる確率が1になる. 回路図
量⼦ゲート
量⼦ゲート • 量⼦ビットの状態は量⼦ゲートにより変化する. • 量⼦ビットに作⽤させる量⼦ゲートを組み合わせて,やりたい計算を 実現する. 0 量⼦ゲート 量⼦ビットの 初期状態 量⼦ゲート を適⽤する 1 0 量⼦ビットの状 態が量⼦ゲート により変わる
単⼀量⼦ビットゲード
Xゲート • • • • 0 1 𝑋= = 0 1 + 1 0 1 0 このゲートを|0⟩に作⽤させると次のようになる. 0×1 + 1×0 0 1 1 0 𝑋0 = = = 1×1 + 0×0 1 0 0 1 つまり,Xゲートはx軸を中⼼にπ回転させる. 回路図 Xゲート |0⟩ 𝑋|0⟩
Xゲートの位相計算の詳細 cos 𝜃/2 sin 𝜃/2 𝑒 *+ sin 𝜃/2 0 1 *+ •𝑋𝑞 = = =𝑒 = *+ %*+ 1 0 𝑒 sin 𝜃/2 cos 𝜃/2 𝑒 cos 𝜃/2 cos ! − 𝜃/2 𝑒 *+ %*+ 𝑒 sin ! − 𝜃/2 = -%, cos ! 𝑒 *+ -%, %*+ 𝑒 sin ! • 𝜃 →𝜋−𝜃 • 𝜙 → −𝜙 y z 𝜃 𝜙 𝜙 x 𝜃 y
Yゲート • • • • 0 −𝑖 𝑌= = −𝑖 0 1 + 𝑖 1 0 𝑖 0 このゲートを|0⟩に作⽤させると次のようになる. 0×1 − 𝑖×0 0 −𝑖 1 0 𝑌0 = = = 𝑖×1 + 0×0 𝑖 0 0 𝑖 つまり,Yゲートはy軸を中⼼にπ回転させる. Yゲート |0⟩ 𝑌|0⟩
Yゲートの位相計算の詳細 cos 𝜃/2 sin 𝜃 /2 0 −𝑖 *+ •𝑌𝑞 = = 𝑖𝑒 = *+ %*+ 𝑖 0 𝑒 sin 𝜃/2 −𝑒 cos 𝜃/2 𝑖𝑒 *+ cos(𝜋/2 − 𝜃/2) = %*+ −𝑒 sin(𝜋/2 − 𝜃/2) -%, cos( ! ) 𝑖𝑒 *+ -%, *(-%+) 𝑒 sin( ! ) = 𝑒 !" = cos 𝜙 + 𝑖 sin 𝜙 y • 𝜃 →𝜋−𝜃 • 𝜙 →𝜋−𝜙 -%, cos( ! ) 𝑖𝑒 *+ -%, *%*+ 𝑒 𝑒 sin( ! ) 𝜙 z 𝜃 𝜙 x 𝜃 y
アダマールゲート • • • • • 1 1 𝐻= 1 −1 このゲートを|0⟩, 1 に作⽤させると次のようになる. & 1 & 1×1 + 1×0 & 1 & 1 1 𝐻0 = ! = ! = ! = ! 0 + 1 = |+⟩ 1 −1 0 1×1 − 1×0 1 & 1 & 1×− +1×1 & & 1 0 1 𝐻1 = ! = ! = ! = ! 0 − 1 = − 1×0 − 1×1 1 −1 1 −1 アダマールゲートは重ね合わせ状態を作るために⽤いられる重要なゲ ートである. & ! Hゲート |0⟩ 𝐻|0⟩
Zゲート 1 0 •𝑍= = 0 0 − 1 1 0 −1 • このゲートを + = & ! 0 + 1 に作⽤させると次のようになる. & 1×1 + 0×1 & 1 0 1 1 •𝑍+ = = ! = ! 0 −1 1 0×1 − 1×1 −1 • つまりZゲートはZ軸を中⼼にπ回転させる. & ! Zゲート |+⟩ 𝑋|+⟩
Zゲートの位相計算の詳細 cos 𝜃/2 cos 𝜃/2 cos 𝜃/2 1 0 •𝑍𝑞 = = = *(-%+) *+ *+ 0 −1 𝑒 sin 𝜃/2 −𝑒 sin 𝜃/2 𝑒 sin 𝜃/2 •𝜃→𝜃 • 𝜙 →𝜋−𝜙 z 𝜙 𝜙 y
Pゲート 1 0 •𝑃= 0 𝑒 *+ • PゲートはZ軸を中⼼に𝜙回転させる. • このゲートを|+⟩に作⽤させると次のようになる. & 1 & & 1×1 + 0×1 0 1 1 •𝑋+ = ! = ! = ! *+ *+ *+ 1 𝑒 0 𝑒 0×1 + 𝑒 ×1 Pゲート |+⟩ 𝑃 𝜋/4 +
I,S,Tゲート • Iゲート 1 0 0 1 • 何もしないゲート.単位⾏列になっている. • 𝐼= • Sゲート • 𝑆= 1 0 %& $ , 𝑆! , 𝑇! = 1 0 %& "$ 0 𝑒 0 𝑒 • 𝜙 = 𝜋/2のPゲート 1 0 1 0 1 0 1 0 %& %& • 𝑆𝑆 𝑞 = 𝑞 = 𝑞 = 𝑞 =𝑍𝑞 #$ 0 −1 0 𝑒 0 𝑒$ 0 𝑒$ • Tゲート • 𝑇= 1 0 %& ' = 0 𝑒 • 𝜙 = 𝜋/4のPゲート • 𝑇𝑇𝑇𝑇 𝑞 = 𝑍 𝑞 1 0 0 𝑒 "' %&
⼀般的な 𝑈7 ゲート • 𝑈5 𝜃, 𝜙, 𝜆 = cos , ! , *6 −𝑒 sin ! , *67*+ 𝑒 cos ! , *+ 𝑒 sin ! • 全てのゲートは 𝑈5 𝜃, 𝜙, 𝜆 で表すことができる. • 𝑈5 𝜋/2, 𝜙, 𝜆 = 𝑈! = & ! 1 𝑒 *+ 1 0 • 𝑈5 0,0, 𝜆 = 𝑈& = 0 𝑒 *6 −𝑒 *6 𝑒 *67*+
複数量⼦ビットとゲード
2量⼦ビット • 量⼦ビットを2つに増やすと,それぞれの量⼦ビットが0か1の状態 をとれるので,2! = 4状態表すことができる. 量⼦ビット𝑞! 0状態 1状態 1 0 0 1 = 1 0 = 量⼦ビット𝑞' 0状態 1状態 1 0 0 1 = 1 0 = 量⼦ビット𝑞! 𝑞' 00状態 01状態 10状態 11状態 00 01 10 11
2量⼦ビットと⾏列 • 2量⼦ビット 𝑞!𝑞& の状態はケットベクトルで次のように表される. • 𝑞$𝑞6 = 𝑞$ ⊗ 𝑞6 • ⊗はテンソル積を表す. 1 1 • 例えば,𝑞! = 0 = , 𝑞& = 0 = のとき 0 0 1 1 00状態 00 1× 0 = 0 01状態 01 • 0 ⊗ 0= 1 0 10状態 10 0× 0 11状態 11 0 対応関係 • となる. • 上記のようにベクトルと量⼦ビットの状態が関係しており, 1, 0, 0, 0 なら量⼦ビットが00状態であることを意味する. 8
複数ビットの式 • 2つの量⼦ビットの状態を説明するには4つの複素振幅が必要である. • よって量⼦ビットの状態は次のように書ける. 𝑞99 𝑞9& • 𝑞 = 𝑞99 00 + 𝑞9& 01 + 𝑞&9 10 + 𝑞&& 11 = 𝑞 &9 𝑞&& • 00が出る確率は • 𝑝 00 = 00 𝑞 ! = 𝑞99 ! • さらに規格化条件が成り⽴つ. • 𝑞99 ! + 𝑞9& ! + 𝑞&9 ! + 𝑞&& ! =1
2つの分離された量⼦ビットsの状態 • 2つの分離された量⼦ビットがある場合,2 量⼦ビットの状態は次のよ うに書ける. 𝑎9 𝑏9 • 𝑎 = 𝑎 , 𝑏 = 𝑏& & 𝑏9𝑎9 𝑎9 𝑏9× 𝑎 𝑏9𝑎& & • 𝑏𝑎 = 𝑏 ⨂ 𝑎 = 𝑎9 = 𝑏&𝑎9 𝑏&× 𝑎 テンソル積 & 𝑏&𝑎& • このように,複数ビットの状態は,各ビットの状態のテンソル積で計 算できる.
複数の量⼦ビットとゲート
複数の量⼦ビットにアダマールゲートを作⽤させる • 3つの量⼦ビット(状態は 0 )にそれぞれアダマールゲートを作⽤させ る. & 1 & 1 1 1 • 𝑞9 = 𝐻 0 = ! = ! = |+⟩ 1 −1 0 1 • 𝑞9 = + , 𝑞& = + , 𝑞! = + • 𝑞!𝑞&𝑞9 = ++ + 𝑞$ 𝑞& 𝑞' = 𝑞$ ⊗ 𝑞& ⊗ 𝑞' 1 1 1 1 1 1 2 1 = ⊗ 𝑞$ = ⊗ 𝑞$ 2 1 2 1 1 1 2 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 = = 2 1 1 8 1 1 2 1 1 1 1 1 2 1
複数ビットとゲート • 2つの量⼦ビットにそれぞれ,アダマールゲートとXゲートを作⽤させ る. • 𝑋 𝑞& ⊗ 𝐻 𝑞9 = 𝑋 ⊗ 𝐻 𝑞&𝑞9 0 1 • 𝑋⊗𝐻 = ⊗ 1 0 & ! 0 0 0 0 1 1 1 −1 & ! 1 1 = 1 −1 1 1 1 −1 0 = 0 0 𝐻 0 0 𝐻 0 & ! 0 1 1 1 −1 1 1 1 −1 0 =
CNOTゲート
CNOT(controled-NOT)ゲート • 量⼦ビットが 0 と 1 の重ね合わせでない場合,右の真理値表で表すこ とができる. 1 0 0 0 0 0 • CNOT = 0 0 1 0 1 0 𝑎99 𝑎9& • 𝑎 = 𝑎 , CNOT &9 𝑎&& 0 1 0 0 𝑎99 𝑎&& 𝑎 = 𝑎 &9 𝑎9& 回路図 1 0 ⽂献やライブラリによっては,CNOT = 0 0 0 1 0 0 0 0 0 1 Input(t, c) Output (t, c) 00 00 01 11 10 10 11 01 0 0 のときもある.その都度注意する必要がある. 1 0
CNOTゲート:1つの量⼦ビットが 0 と 1 の重ね合わせの場合 • 1つの量⼦ビット𝑞7 を|+⟩状態にする. • |+⟩ は重ね合わせ状態である. • |0⟩ にアダマールゲートを作⽤させると重ね合わせ状態( |+⟩ )を作れる. • もう1つの量⼦ビットを 0 状態にする. • つまり,量⼦ビットは |0+⟩状態である. 1 𝑞 は0と決まっているが,𝑞 は|+⟩状態なの 6 1 6 1 1 • 0+ = 0 ⨂ + = ⊗ = で,0と1が等確率で出る. $ $ 0 0 1 0 • これにCNOTゲートを作⽤させると次のようになる. & • CNOT 0 + = 6 $ 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 = 0 0 6 $ 1 0 0 1 '
CNOTゲート:1つの量⼦ビットが 0 と 1 の重ね合わせの場合 1 & 0 • CNOT 0 + = ! なので, 0 1 • 00 と 11 状態が同じ確率で出現することが分かる. • ⾯⽩いのは,⽚⽅の量⼦ビットを観測すると,必ずもう⽚⽅の量⼦ビ ットも観測した量⼦ビットと同じ状態になるところである. • CNOTゲートにより𝑞6も0か1の状態が等確率に⽣じるようになってしまっ たが, 𝑞6,𝑞7のどちらかを観測すると,もう⽚⽅の量⼦ビットの状態が確 定する. • この状態をもつれ状態という.
CNOTゲート:2つの量⼦ビットが 0 と 1 の重ね合わせの場合 • 2つの量⼦ビットにアダマールゲートを作⽤させ,更にCNOTゲートを 作⽤させる. • 𝑞&𝑞9 = 𝐻 0 ⊗ 𝐻 0 = 𝐻⊗! 00 = + + 1 0 0 0 1 & 0 0 0 1 1 & • CNOT 𝑞&𝑞9 = ! =! 0 0 1 0 1 0 1 0 0 1 • 全ての状態が等確率で⽣じる. 1 & 1 = ! (|00⟩ + |01⟩ + |10⟩ + |11⟩) 1 1
CNOTによる振幅のスワップ • 2つの量⼦ビット𝑞9,𝑞&があり,𝑞9にアダマールゲートを作⽤させ,𝑞& にXゲートとアダマールゲートを作⽤させる. • 𝑞9 = 𝐻 0 = |+⟩ & 1 1 1 0 1 1 1 0 • 𝑞& = 𝐻𝑋 0 = = ! = − 1 −1 1 0 0 1 −1 1 1 & & 1 & 1 & 1 • −+ = ! ⊗ ! =! = ! 00 + 01 − 10 − 11 −1 1 −1 −1 & !
CNOTによる振幅のスワップ • − + にCNOTゲートを作⽤させる. 1 0 0 0 1 & 0 0 0 1 & 1 • CNOT − + = ! =! 0 0 1 0 −1 0 1 0 0 −1 11 ) = | − −⟩ 1 & −1 = ! ( 00 − 01 − 10 + −1 1 • 𝑞&には影響はないが,𝑞9の振幅がスワップされる.
CNOTをアダマールゲートでラップする • 両⽅の量⼦ビットにアダマールゲートを,次にCNOTゲートを,さらに 両⽅の量⼦ビットにアダマールゲートを作⽤させる. 1 1 1 1 & 1 −1 1 −1 • 𝐻 ⊗ 𝐻 𝐶𝑁𝑂𝑇 𝐻 ⊗ 𝐻 = ; 1 1 −1 −1 1 −1 −1 1 4 0 0 0 1 0 0 0 & 0 4 0 0 0 1 0 0 = ; 0 0 0 4 0 0 0 1 0 0 4 0 0 0 1 0 • これは逆の向きのCNOTゲートである。 1 1 1 1 1 −1 −1 1 = 1 1 −1 −1 1 −1 1 −1 = • つまりCNOTゲートの⼊出⼒にアダマールゲートを作⽤させると向 きが逆になる。
CZゲート
CZゲート(Controled-Z)ゲート • CZ(Controled-Z)ゲート 1 0 0 0 0 1 0 0 • 𝐶𝑍 = 0 0 1 0 0 0 0 −1
CZゲート(Controled-Z)ゲート • CZゲートは次の回路と等価である. • 𝐶𝑍 = 𝐻 ⊗ 𝐼 𝐶𝑁𝑂𝑇 𝐻 ⊗ 𝐼 = 1 0 1 0 1 0 0 & 0 1 0 1 0 0 0 ! 1 0 −1 0 0 0 1 0 1 0 −1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 −1 0 1 0 −1 0 1 0 −1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 −1 0 1 0 1 0 1 0 1 0 0 0 1 0 & −1 =! 0 1 1 0 −1 0 2 0 0 2 0 0 0 0 0 1 0 −1 0 0 2 0 = = 0 0 = 0 −2
SWAPゲート
SWAPゲート 1 0 • 𝐶𝑁𝑂𝑇 𝑖𝑛𝑣𝑒𝑟𝑠𝑒 − 𝐶𝑁𝑂𝑇 = 0 0 • 例えば,𝑞7 が 0 状態, 𝑞6 が 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 状態とすると 0 1 0 0 0 0 0 1 0 1 0 0 = 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 • 𝐶𝑁𝑂𝑇 𝑖𝑛𝑣𝑒𝑟𝑠𝑒 − 𝐶𝑁𝑂𝑇 10 = = = 01 0 0 0 1 1 0 0 1 0 0 0 0 • よって𝐶𝑁𝑂𝑇 𝑖𝑛𝑣𝑒𝑟𝑠𝑒 − 𝐶𝑁𝑂𝑇 は状態を⼊れ替えるSWAPゲートになってい る. =
Toffoli(CCNOT)ゲート
Toffoli(CCNOT)ゲート • 次のようなゲートをToffoli(CCNOT)ゲートと呼ぶ. 1 0 ⋱ 0 8×8の⾏列,ほぼ対⾓⾏列だが,最後の2⾏が⼊れ替わっている. • 𝐶𝐶𝑁𝑂𝑇 = 0 1 0 0 1 0 1 0
Toffoliゲート • 3つの量⼦ビットにToffoliゲートを適⽤する. • 𝐶𝐶𝑁𝑂𝑇 𝑞6𝑞$𝑞8 • 𝑞&𝑞! を⼊⼒とし,𝑞5の初期状態を1に固定しゲートを作⽤させた後の出 ⼒とみなすと, 𝐶𝐶𝑁𝑂𝑇 𝑞&𝑞!𝑞5 はNANDとして動作する. • 𝐶𝐶𝑁𝑂𝑇 001 = 001 • 𝐶𝐶𝑁𝑂𝑇 001 = |011⟩ • 𝐶𝐶𝑁𝑂𝑇 011 = |101⟩ • 𝐶𝐶𝑁𝑂𝑇 111 = |110⟩ NANDの真理値表 𝑞& 𝑞$ 𝑞( 0 0 1 0 1 1 1 0 1 1 1 0 3ビットの全パターン 000 001 010 CCNOT回路 011 で最後の2つ 100 の状態(⻩⾊ 101 と⽔⾊)が⼊ 110 れ替わる. 111 • NANDが実現できれば古典計算機は理論上実現できるので,この例か ら,量⼦ゲートで使い古典計算機を実現できること分かる.
まとめ
まとめ • 量⼦計算では,量⼦ビットを使う. • 量⼦ビットは,0か1かの状態を確率的にとる. • 量⼦回路により量⼦ビットの状態を変えることが出来る. • 量⼦ビットに計算結果をのせるように 量⼦回路を組み合わせる. • 量⼦回路の使い⽅は,量⼦アルゴリズムを学び⾝につける.