量子計算 前田俊行 米澤研究室 東京大学大学院情報理工学系研究科 古典ビット • 1 ビット = 2 通りの組み合わせ – 0 か 1 かのどちらかの値を一方だけ持つ • n ビット = 2n 通りの組み合わせ – 000 … 0 ~ 111 … 1 のどれかの値を1つだ け持つ 量子ビット • 1 量子ビット – 0 かもしれないし 1 かもしれない状態を表す • 確率に依存して無限の状態が存在し得る – ただし「観測」すると 0 か 1 のどちらかの値に 決まる ? 量子ビット 観測 0 観測後の量子ビット 量子ビットの状態の行列表現 • 量子ビットの状態は行列を用いて次のように表せる c0 1 +c 0 1 0 1 • この量子ビットを観測すると c0, c1 は |c0|2 + |c1|2 = 1 を 満たす複素数で、振幅と呼ぶ また φ を状態ベクトルと呼ぶ 0 が得られる確率が |c0|2 となり 1 が得られる確率が |c1|2 となる Dirac 記法 • 以降、量子ビットを次のように書く φ ここで = c0 0 + c1 1 1 0 = 0 0 1 = 1 である 本当は量子ビットを行列で表現しなくてもよいが ここでは簡単のため行列を用いる 量子ビットの例 その1 • 次の状態にある量子ビット φ = 1 2 0 + を観測すると 1 / 2 の確率で 0 を観測し 1 / 2 の確率で 1 を観測する 1 2 1 量子ビットの例 その2 • 次の状態にある量子ビット φ = 1 2 0 + を観測すると 1 / 2 の確率で 0 を観測し 1 / 2 の確率で 1 を観測する i 1 2 i は虚数単位 古典ビットと量子ビットの対応 • 次の2つが古典ビットをあらわす 0 1 • 量子ビットに対して観測を行うとその状態 は上の2つのどちらかに変化する n 量子ビットの表現 • 量子ビット n 個の直積の重ね合わせで表す – 2n 個の状態の重ね合わせ c0 0 0 + c2n-1 1 1 … 0 + … 1 ここで ∑|ck|2 = 1 n 量子ビットの略記法 • 次のように略記する c0 0000 00 + c2n-1 1111 11 + つまり 0000 00 = 0 0 … 0 n 量子ビットのさらなる略記法 • さらに次のように略記するときもある 2n-1 ∑ k=0 ck k ここで k は量子ビットを n 桁の2進数と見 たときの値、つまり x1 k = x0 のとき k = x0x1…xn-1 … xn-1 n 量子ビットの観測 • 次の状態にある n 個の量子ビット 2n-1 ∑ k=0 ck k • を観測すると |ck|2の確率で n ビットの値 k が得られ 状態は k に遷移する 2 量子ビットの例 その1 • 次の状態にある 2 量子ビット 1 1 00 + 01 2 2 1 1 + 10 + 11 2 2 を観測すると第1ビット第2ビットともに – 0 を観測する確率 1 / 2 – 1 を観測する確率 1 / 2 となる 2 量子ビットの例 その2 • 次の状態にある 2 量子ビットに対し 1 2 00 + 1 2 11 • まず第1ビットを観測すると – 0 を観測する確率 1 / 2 – 1 を観測する確率 1 / 2 となり • 次に第2ビットを観測すると、必ず第1ビットと等し くなる 量子計算とは • 振幅を制御すること – Unitary 変換によって行われる • 「変換」 = 量子ビットの成分を変換する行列 • 「変換 U が Unitary である」 = 「U*・U = E (恒等変 換)」 – 量子力学によれば、あらゆる Unitary 変換は物理的に実現 可能 • 量子アルゴリズム = 望む答えを観測する確 率を高くする(1 にできる場合もある)こと 量子計算モデル • 次の2つが存在する – 量子 Turing 機械モデル • 古典計算における Turing 機械に相当 • 状態遷移を Unitary 変換で表す – 量子ネットワークモデル • 古典計算における論理ゲートに相当 • 量子ゲートと呼ばれる Unitary 変換の組み合わせで表される • どちらのモデルも計算量クラスは同じ(らしい?) 今回は「量子ネットワーク」だけとりあげる 量子ゲートの例: NOT ゲート 0 NOT 1 値が反転される 1 NOT 0 量子ゲートの例: NOT ゲート 変換行列 0 1 N= 1 0 変換例 N 0 = 1 N ( c0 0 + c1 1 ) N 1 = 0 = c1 0 + c0 1 量子ゲートの例: Phase ゲート 0 P(θ) 0 1 P(θ) eiθ 1 値1の振幅の 位相を変える 量子ゲートの例: Phase ゲート 変換行列 P(θ) = 1 0 0 eiθ 変換例 P(θ) 0 = 0 P(θ) ( c0 0 + c1 1 ) iθ e P(θ) 1 = 1 iθ c c e = 00 + 1 1 量子ゲートの例: Hadamard ゲート 0 H 1 2 (0 + 1 ) 状態の重ね合わせを 生成する 1 H 1 2 (0 – 1 ) 量子ゲートの例: Hadamard ゲート 変換行列 H= 変換例 H 0 = 1 1 1 2 1 -1 1 2 H 1 = 1 2 (0 + 1 ) (0 – 1 ) 制御ビット 量子ゲートの例: Controlled-NOT 0 0 入力ビット 制御ビットは そのまま出力 0 NOT 0 制御ビットが0のときは そのまま出力 制御ビット 量子ゲートの例: Controlled-NOT 0 1 入力ビット 制御ビットは そのまま出力 0 NOT 1 制御ビットが0のときは そのまま出力 制御ビット 量子ゲートの例: Controlled-NOT 1 0 入力ビット 制御ビットは そのまま出力 1 NOT 1 制御ビットが1のときは 値を反転する 制御ビット 量子ゲートの例: Controlled-NOT 1 1 入力ビット 制御ビットは そのまま出力 1 NOT 0 制御ビットが1のときは 値を反転する 量子ゲートの例: Controlled-NOT ゲート C-N = 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 Controlled-NOT の具体的計算 C-N = c00 00 + c01 01 + c10 10 + c11 11 c’00 00 + c’01 01 + c’10 10 + c’11 11 Controlled-NOT の具体的計算 C-N行列 c’00 1 0 c’01 0 1 = c’10 0 0 c’11 0 0 0 0 0 1 0 0 1 0 c00 c01 c10 c11 00 の振幅 01 の振幅 10 の振幅 11 の振幅 Universal 量子ゲート • あらゆる量子ゲートは次の2つの量子ゲー トの組み合わせで全て構築できる – – Controlled-NOT V(θ,φ) = cos(θ/ 2) - ieiφ sin(θ/ 2) - ie-iφ sin(θ/ 2) cos(θ/ 2) 量子ネットワーク • 量子計算のモデルの1つ • 量子ゲートの組み合わせからなる – 古典計算における論理回路に相当 量子ネットワークの計算量 • 入力サイズ n の量子ネットワークを構築す るのに必要な量子ゲートの数で測る 量子ネットワークの例 その1 nビット Hadamard ゲート H H H ここでHは Hadmard ゲート 量子ネットワークの例 その1 n ビット Hadamardゲート の計算結果 1 0 2 計算量 n 2n-1 ∑ n k=0 k 量子ネットワーク その2 量子フーリエ変換 H π H π/ 2 π H π/ 4 π/ 2 ここでθは Controlled-Phase ゲート θ= 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 eiθ 制御ビットが1のときだけ 入力ビットの位相を変える π H 量子ネットワーク その2 量子フーリエ変換 の計算結果 1 x 2 計算量 2n-1 ∑ n k=0 n (n – 1) / 2 ei2πx k / 2 n k 古典計算での論理回路の 量子ネットワークでの実現 • 古典計算における任意の関数 f f : { 0, 1}n { 0, 1}m は、量子ゲートの組み合わせにより、次の ような量子ネットワークで実現できる Uf : x 入力nビット 0 x 出力mビット f(x) 量子並列計算 入力データの準備 • まず状態 0 にあるn量子ビットをnビット Hadamard ゲートに通す 0 1 2 2n-1 ∑ n k=0 k 量子並列計算 • 次に状態 0 にあるm量子ビットとともに Uf ゲートに通す 1 2 2n-1 ∑ n k=0 k 0 2n通りの入力値全てに対して 関数 f を計算したことになる 1 2 2n-1 ∑ n k=0 k f(k) ただし、観測すると1つの結果しか得られない Dense Coding • Alice と Bob が φ = 2-1( 00 + 11 ) の状態にある2つの量子ビットを1つずつ持って いるとする • このときAliceがBobに次に述べるような方法で 情報を送ろうとしたとする Dense Coding Alice: 1量子ビットの準備と送信 • まず、Aliceは、持っている量子ビットを次の 4つのうちのどれか1つの量子ゲートに通す – その後、Aliceはその量子ビットをBobに送る 1 0 E= 0 1 0 1 X= 1 0 0 -1 Y= 1 0 1 0 Z= 0 -1 Dense Coding Bob: 1量子ビットの受信 • Bob が量子ビットを受け取った後の状態はAlice の選んだゲートによって次のどれかに決まる 2-1( 00 + 11 2-1( 10 + 01 2-1( 10 – 01 2-1( 00 – 11 ) ) ) ) = E E φ = X E φ = Y E φ = Z E φ Dense Coding Bob: 受信した量子ビットの解析 • 次にBobは2つの量子ビットをControlledNOTゲートに通す – Aliceから受け取った量子ビットを制御ビットとする – するとAliceの選択によって状態は次のどれかに 決まる 2-1( 0 + 1 2-1 ( 0 + 1 2-1 ( 1 – 0 2-1 ( 0 – 1 ) ) ) ) 0 1 1 0 Dense Coding Bob: 情報獲得 • 最後にBobはAliceから受け取った量子 ビットを Hadamard ゲートに通す – ここで2つの量子ビットを観測することにより Aliceがどの量子ゲートを選んだかがわかる 00 E 01 X – 11 Y 10 Z 結局何が起こったか • AliceからBobへは1ビットしか送られてい ないのにBobは2ビットの情報を得ることが できた – より正確には1量子ビットしか送られていない のに2古典ビットの情報を得ることができた Simon のアルゴリズム • 与えられた関数 f の周期 r を見つけるアルゴ リズム f : { 0, 1 }n { 0, 1 }m ∃r. ∀x . f (x) = f (x + r) • n の多項式時間でとける – 古典計算ではどうやっても指数時間かかる Simon のアルゴリズム 簡単版 • ここでは 2n が r で割り切れる場合だけ考える – 割り切れない場合は少し複雑になるが、やはり多 項式時間で解ける • また確率的アルゴリズムを考える – 決定性アルゴリズムは難しくてよくわからないので Simon のアルゴリズムの概要 Step1: 入力データの準備 • 状態 0 にある(n + m)量子ビットの先頭n ビットを Hadamard ゲートに通す 0 n量子ビット 1 0 2 m量子ビット 2n-1 ∑ n k=0 k 0 Simon のアルゴリズムの概要 Step2: 量子並列計算 • Step1で得られた量子ビットを、与えられた 関数 f をあらわすゲート Uf に通す 1 2 2n-1 ∑ n k=0 k 0 1 2 2n-1 ∑ n k=0 k f(k) Simon のアルゴリズムの概要 Step3: 観測 • Step2で得られた量子ビットのうち、後ろm ビット(関数の計算結果)を観測する – 以降、先頭のnビットのみを考える 1 2 ここで M = 2n / r f(du + j r) = u 2n-1 ∑ n k=0 k f(k) 1 M M-1 ∑ j=0 du + j r u Step3で何が起こったか? 観測 確率 すべての値が観測される可能性がある 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ビットの値 Step3 観測 確率 ビットの値 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 周期 r だけ間隔をおいた値のみ観測されるようになった Simon のアルゴリズムの概要 Step4: 量子フーリエ変換 • Step3で得られたn量子ビットに量子フーリ エ変換を施す 1 M-1 M ∑ j=0 du + j r ここで、 f’(k) = となる 1 r 2n-1 ∑ k=0 f’(k) k 1 (Mがkで割り切れるとき) 0 (それ以外のとき) Simon のアルゴリズムの概要 Step5: 最後の観測 • Step5で得られたn量子ビットを観測する – その結果を x とする • xは、ある定数cを用いると次のように表せる x = c M = c 2n / r • c と r が共通因数を持たなければ x / 2n を約分していけば r が正しく求まる – c と r が共通因数を持つ場合は間違った値を得る → このアルゴリズムを log(r)回程繰り返すと 正しい値が求まる確率が1に近くなる Shor のアルゴリズム • 与えられた整数 N を因数分解するアルゴ リズム – 確率的アルゴリズム • n (= log N) の多項式時間で解ける Shor のアルゴリズムの概要 Step1: 準備 • 次のような関数 f を準備する f (x) = ax mod N ここで a は a < N を満たすように適当に選ぶ • この関数 f は次の性質を満たすことが知られている – 多くの場合、周期 r は偶数である – そのとき N と ar/2 + 1、ar/2 – 1 が共通因数を持つ Shor のアルゴリズムの概要 Step2: Simon のアルゴリズム • Step1の関数 f の周期 r を Simon のアル ゴリズムで求める Shor のアルゴリズムの概要 Step3: Euclidの互除法 • Step2で得られた r が偶数のときは – Euclidの互助法を用いて N と ar/2 + 1、ar/2 – 1 の共通因数を求める • 奇数のときはStep1に戻って a を選びなおす 参考文献 • A. Steane “Quantum computing” (preprint quant-ph/9708022) • A. Ekert, P. Hayden and H. Inamori “Basic concepts in quantum computation” (preprint quant-ph/0011013)
© Copyright 2024 ExpyDoc