Upload
gm3d
View
283
Download
3
Embed Size (px)
Citation preview
量子情報勉強会|18>
Nielsen-Chuang 5.3.1Order-finding
@gm3d2Apr. 19, 2015
池袋バイナリ勉強会会場
位相評価の応用:位数発見と因数分解
● 位数発見
与えられた互いに素なN、x (x < N)に対し、 となるrを求める問題
● 因数分解
与えられたnに対し、 となるm、rを求める問題
● 両者は同等であることを以下で見る● 位相評価によって解くことができる
5.3.1 order-finding● N, x : 互いに素な正の整数 ( x < N)● 剰余Nでのxの位数:
となる最小のr● x、Nを与えられた時にrを求めるのが問題● 古典コンピュータではNPと考えられている
Nのビット長をLとしたとき、Lの多項式時間のアルゴリズムは知られていない
exercise 5.10● x = 5, N = 21● xの位数はいくらか
exercise 5.11● N, x : 互いに素な正の整数 ( x < N)● のN個の値を考える● xとNが互いに素だからこれらは決して0にはな
らない→1, 2, ... N-1 のN-1通りの可能性● N個の値をN-1通りに分類するのでかならずあ
るp,qについて (鳩小屋論法) ● 大きい方をpとすれば、
位数発見に使うヒルベルト空間と演算子U
● : yは長さL=log2(N)のビット列● Lはx, Nを表現するのに必要なビット数● 例: N = 6: L = 3
● 演算子U:
xを決めるとそれに対して一つUが決まる
Uの具体例: N = 6, x = 5
● ただし、0 ≦ y ≦ N - 1 についてのみ興味があるので、それ以上のyについては と
定める
この場合は位数r = 2
Uの具体形(N = 6, x = 5)
Uの固有ベクトル
● rはxの(Nの剰余による)位数とする
Uの|us>への作用
Uを各基底に作用
k+1 → k'
k' = rはk' = 0と同じ
固有値からの位数の決定● 位相s/rはphase estimationによって良い精度
で決定できる● sは既知だから、rはここから決定できる
exercise 5.12● ZNを整数のNによる剰余系とし、xをNと互いに
素な整数とすると、xを掛ける演算はZNにおいて全単射になる(以下 mod Nを省略)● 全射:任意のy'についてy' = xyとなるyが存在: xの
位数をrとし、両辺に をかければ
からyが求まる● 単射: ならば、両辺に をかけて
exercise 5.12 (2)● xをかける演算は 上の全単射● よってUは単なる基底の入れ替え● xをかけることによるyの置換を
と書くと、
● Uはエルミート内積を不変に保つのでユニタリ
Phase esitimationを実現するためのポイント1
● 制御 ゲートの実現
→modular exponentiation ● 実際に必要なのは、zの各ビット
● によって制御された
modular exponential of x
回路のブロック図
z
0
z
y
0
z
の各ビットの計算回路
乗算回路
U1の計算量● の各々を計算するステージ● t - 1種類 = O(L) 個の2乗演算● 一つの2乗演算はO(L^2)● U1全体ではO(L^3)
U1の計算量● の各々を計算するステージ● t - 1種類 = O(L) 個の2乗演算● 一つの2乗演算はO(L^2)● U1全体ではO(L^3)
U2の計算量● 計算した およびyを掛け合わせ
て最終結果を得るステージ
● 一つの乗算がO(L^2)● 乗算の個数が t = O(L)
全体で O(L^3)の計算量
Phase estimation実現のポイント2
● 固有ベクトル を
初期状態として用意すること
● 定義にrが含まれている…rが知りたいからやっているのに!
exercise 5.13
5.13のための補助式
固有ベクトル|us>● 固有ベクトル : 単独で用意するのは難しい
● の線形和なら簡単に用意できる!● 観測の結果:
のいずれかが等確率で(tビットの精度で)得られる
(exercise 5.13の結果)
exercise 5.14
● (5.47)で k=0とおきVの定義を使えば自明● を計算する回路…O(L^3)
(先のU1,U2と同じ)● kを加える回路…Lビットの加算、O(L)● Vを用いても結局合計O(L^3)の計算量
最後のステップ● 観測されたtビットの位相φにもっとも近い有理
数 s/r を求めること● 連分数展開が使える● 定理 5.1: 与えられた有理数φに対して、s/rが
を満たす有理数であるとする。このときs/rはφの連分数展開に対するconvergentとして求まる。
● 計算量はO(L^3)
性能の評価
このアルゴリズムの「失敗」する可能性● 必要な精度で位相を得られない
→確率εで起こる
ビット数をlog(ε)のオーダーで増やせば大丈夫● 位相に含まれるrとsが共通因数を持つ可能性
→測定から得られる(s', r')はその共通因数を約分したものなので真の(s, r)と異なる
r, sが共通因数を持つ場合● 前提
● rは未知だが決まった整数(与えられた要素aの剰余Nについての位数)
● s は測定毎に変わる0 ... 1- r の範囲の整数● まずr, sが互いに素でない可能性はどのくらいあ
るのか?● 素数の分布に関する定理:
rまでの範囲に少なくともr/2log(r)の素数がある
r, sが共通因数を持つ場合の対処法 A
● sが0 ... r - 1からランダムに決まるとする● そのうちr/2log(r)個が素数
少なくとも1/2log(r)の確率でsは素であり、したがってrとも互いに素
● r < Nだから、{1/2log(r)}・{2log(N)} > 1
2log(N)回の測定を行えばその中で得られた最大のrがrとsが互いに素の場合に相当し、実際のrと考えられる
r, sが共通因数を持つ場合の対処法 B
● 真の値と異なるr'(r>r’)が得られたとする● 真の値かどうかは でチェックできる● s=0でない限り(これは確率1/rでしか起きない)、
rとsに共通因数qがあり、r=r'q、
s=s'q、s/r = s'/r' を意味する。
によりa'を定義すると、
つまりr'からa'を定義し、それの位数を求めるとr/r'が分かる。これとr'をかけて真のrが求まる。
r, sが共通因数を持つ場合の対処法 B(2)
● a'の位数t=(r/r')を求めるときにも、共通因子のせいで真の値より小さい値t'が得られる可能性はある
● a'̂ t = 1 mod Nとならなければ真の値ではないのでさらにa'' = a'̂ t'を定義して同様の手続きを行う
● 一度のステップを行う毎にrの因子一つは少なくとも求まるので、最悪でもrのビット数、つまりO(L)で計算が終了する
r, sが共通因数を持つ場合の対処法 C
● 2回測定:● 共通因数を約分する前の真の値:● s1とs2が互いに素なら、r任意の素因数は必ず
r1'、r2'のいずれかに含まれる→rはr1'、r2'の最小公倍数
● s1とs2が互いに素である確率の評価
r, sが共通因数を持つ場合の対処法 C(2)
● p(q|s1): s1はランダムに0~r-1の値を取る● qで割った余りを考えてもランダム● qで割った余りが0~q-1のうち0を取る確率
→p(q|s1) = 1/q、同様にp(q|s2) = 1/q● (exercise 5.16)● s1、s2が互いに素でrがr1'、r2'のLCMとして求ま
る確率が1/4はある→Lによらない!● 定数回繰り返せば一定の成功率を保証できる
exercise 5.15● x、y を正の整数、そのGCDをmとする。すると
x = m x'、y = m y' で、x'とy'は互いに素
● これからx、yのLCMは x' y' m = x y / m である。
● x、y がLビットなら、ユークリッド互除法でm、x'、y'を求めるのにO(L)、それらを乗算してLCMを求めるのにO(L^2)が2回、合計O(L^2)の演算が必要
exercise 5.16
素数全体についての和より2以上の整数についての和の方が大きい