Document

量子計算
前田俊行
米澤研究室
東京大学大学院情報理工学系研究科
古典ビット
• 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)