2
応用数学解説
文献あり

量子コンピュータにおける素因数分解(4): アルゴリズムの方針 & 関連定理

89
0

はじめに

この記事は量子コンピュータによる素因数分解のアルゴリズムである「Shorのアルゴリズム」の解説記事第4回目です。1-3回目は以下:

本記事ではShorのアルゴリズムの基本的な方針の説明、およびこれに関連した整数論まわりの定理に関して述べます。実はShorのアルゴリズムの基本方針はそれほど難しくないです。

以下「多項式時間で計算可能」とは、整数iを2進数表示したとき、計算量がその桁数の多項式で表されるという意味です。

本記事はRef.Hosoyaを元に書かれています。

Shorのアルゴリズムの基本的な方針

整数Nを因数分解します。

N未満でNと互いに素である整数xを適当に選びます。そして
(1)xr1 mod N
を満たすrを探します。このようなrで最も小さいものは位数(order)と呼ばれますが、ここでは必ずしも最小である必要はないです。

rが求まり、かつそれが偶数だったとしましょう。偶数になるのは偶然に頼ることになります。もしrが偶数だったら、xr1を以下のように因数分解できます:
xr1=(xr/2+1)(xr/21)

よってEq.(1)より

(xr/2+1)(xr/21)=a×N   (aは正の整数)
です。いま正の整数nmの最大公約数をgcd(n,m)で表しましょう(greatest common divisor, gcd)。上の式より、xr/2±1Nの倍数でない限り、gcd(xr/2±1,N)のどちらかはNの因数を与えます\。

ということで、もしも以下の3つの条件:

素因数分解が多項式時間で行える条件
  1. Eq.(1)を満たすrを多項式時間で求めることができる
  2. 最大公約数(gcd)を多項式時間で求めることができる
  3. 試行錯誤が必要な部分:「Nと互いに素なxを選ぶ」「rが偶数」「xr/2±1はどちらもNの倍数ではない」は多項式時間での計算を可能にするほど十分高確率で起きる

を満たすことができるなら、素因数分解が多項式時間で行えることになります。

そして量子コンピュータを用いればこれらを満たすことができます。正確に言うと、量子コンピュータが必要なのは1.のみです。以下各条件が満たされることに関して述べます。

条件1.に関して

1.に関しては、3回の記事で議論してきたべき剰余ax mod Nを計算する量子回路および量子フーリエ変換を行う量子回路で行えます。Shorのアルゴリズムにおいて量子コンピュータが担う課題は、Eq.(1)を満たすrの推定です。これはまた今後の記事で述べます。

条件2.に関して

2.はユークリッドの互除法により多項式時間で行えるので量子コンピュータは必要ありません。最大公約数を求めるのに素因数分解はいりません。よく知られているように以下の定理が成立します:

2つのa,bN  (ab)について、abによる剰余をrとすると
gcd(a,b)=gcd(b,r)
が成立する。

gcd(a,b)=m, gcd(b,r)=nとする。

a割るbの商をqとする。すなわち
(thm1.1)a=bq+r(thm1.2)r=abq
とする。mabのgcdなので、Eq.(thm1.2)よりmrの公約数(common divisor, cd)である。よってmbrのcdである。ここでgcd(b,r)=nだから
(thm1.3)mn
一方nbrのgcdなので、Eq.(thm1.1)よりnabのcd。そしてgcd(a,b)=mなので
(thm1.4)nm
Eq.(thm1.3)(thm1.4)よりm=n。ゆえにgcd(b,r)=gcd(a,b)

これに基づいた最大公約数の求め方がユークリッドの互除法です:

ユークリッドの互除法その1

a,b (ab)のgcdを求めるには、まずa mod b=cを計算する。そしてbaと、cbと呼び直し、同様にa mod b=cを計算する。これを繰り返し、cがゼロになったときのbが最初のa,bのgcd。

具体的にgcd(135,54)を計算します。135 mod 54=2754 mod 27=0なのでgcd(135,54)=27です。

「ユークリッドの互除法その1」は以下と等価です:

ユークリッドの互除法その2

abbを作る。そして大きい方から小さい方を引く。「大きい方から小さい方を引いたもの」とbのうち、大きい方をa、小さい方をbと呼び直し、さらにabbを構成する。これを繰り返すと有限回でb=0となるが、ゼロになる直前のbの値がgcd。

具体的にgcd(135,54)を計算します。ab=13554=81b=54では81が大きいので、8154=2754を得る。a=54b=27と呼び直してab=27b=27を得る。2727=0なので、27がgcd。

このようなgcdの計算は、計算過程を見てもわかるように高速に(=多項式時間で)実行できます。これはShorのアルゴリズムにおける重要な事実です。

条件3.に関して

まず「Nと互いに素な正の整数x (x<N)を選ぶ」に関して。オイラー関数を導入します:

オイラー関数φ(n): 1以上n以下の自然数でnと互いに素なものの個数(※1は1以外とは常に素)

Nと互いに素なxを選ぶ」が高確率で成功するのは以下の定理によります(Ref.Hosoyaから引用。証明等はRef.Wikipediaから辿ってみてください):

φ(n)eγn/loglognより大きい

よってloglogn回程度試行すれば、1回くらいはnと互いに素な数に行き当たります。

「Eq.(1)を満たすrが偶数」「xr/2±1はどちらもNの倍数ではない」に関して高確率で成功することは以下の定理で保証されます(Ref.Hosoyaから引用。証明は例えばRef.Ekertにあるようです):

与えられた奇数Nが素数のべきでない時に、Nより小さいNと互いに素な数たち{x}のうちで、その位数rが偶数でしかもxr/2±1 mod Nであるようなxは半数以上ある:
P(r:even, xr/2±1 mod N)1/2

これに関してコメントを加えておきます。いま位数を改めてrminとします。このときxnrmin=1 mod N, nNであることはすぐわかります。すなわちr=nrminxr=1 mod Nを満たします。ここでnが偶数だったとしましょう。このときxnrmin/2=xαrmin, α=n/2Nなので、xnrmin/2=1 mod Nです。これは「xr/2±1はどちらもNの倍数ではない」に反します。すなわち
r=nrmin, nN は xr=1 mod N を満たすが、nが偶数のときNの素因数を導くには不適切である
ということが言えます。一方位数の奇数倍のrについては素因数を計算するのに適しています。いづれにせよ、定理3および上の考察より、「Eq.(1)を満たすrが偶数」「xr/2±1はどちらもNの倍数ではない」は、多項式時間の計算を邪魔しないほど高確率で起きます。

結論

以上より、条件2.3.は満たされることがわかりました。条件1.「N,xが与えられたとき位数rを多項式時間で求めることができる」が達成できることは今後の記事で述べます。

おしまい & つづく。


Appendix: Shorのアルゴリズムまわりの定理

以下、Shorのアルゴリズムに(多かれ少なかれ)関連する定理を適当に挙げていきます。証明はあったりなかったりします。

オイラー関数の具体的な表示

整数nのオイラー関数φ(n)nの素因数分解を用いて表すことができますWikipedia:

  • pが素数のときφ(pk)=pkpk1=pk(11p)
  • m,nが互いに素のときφ(mn)=φ(m)φ(n)
  • これらより、n=k=1dpkekのように素因数分解したとき
    φ(n)=nk=1d(11pk)
    と表せる。

原始根

原始根

素数pに対して位数がp1であるような元rのことをpの原始根とよぶ。

素数pには原始根rが必ず存在する。

証明は例えば 原始根(青空学園数学科) 参照のこと。

rに関して、r,r2,,rp1pでわった余りはすべて異なり、1からp1までを巡回する。

以下 原始根の定義と具体例(高校生向け) 高校数学の美しい物語 より。

rを原始根とし、かつrn (n=1,2,,p1)の中にpで割った余りが等しいものがあるとする。いまmod prn=rm (p1m>n)とする。このとき
rn(rmn1)=0 (mod p)
だが、rnpと互いに素だからrmn1=0 mod Nである。しかしmn<p1なのでこれは原始根の定義に反する。ゆえにrn (n=1,2,,p1)の中にpで割った余りが等しいものはない。ところがrnp1個存在するので、pで割った余りは1からp1を巡回する。

中国式剰余定理

中国式剰余定理

n1n2が互いに素とする。このとき
xa1 (mod n1), xa2 (mod n2)
の両方を満たす整数x0以上n1n2未満の範囲にただ一つ存在する。

  1. 解の唯一性
    2つ以上の解が存在するとする。これらをx,y (xy)とする。xyn1,n2どちらの倍数でもあり、かつn1,n2は互いに素なので、xyn1n2の倍数。しかしx,yは共にn1n2未満であるから、xyはゼロになる、すなわちx=y。これは仮定に反する
  2. 解の存在
    具体的に解を構成する。n1,n2は互いに素なので、ベズーの定理より(後述)
    n1X+n2Y=1
    を満たす整数X,Yが存在する。ゆえに
    n2Y1 (mod n1),n1X1 (mod n2)
    である。ゆえにx=a1n2Y+a2n1Xとすれば
    xa1 (mod n1)xa2 (mod n2)
    となり、xn1n2未満という条件以外の満たすべき性質をもつ。xn1n2でわった余りにしておけば、上記性質を満たしかつn1n2未満という満たすべき条件をもつ数が求まる。

ベズーの定理

以下 一次不定方程式ax+by=cの整数解(高校数学の美しい物語) 等より。

a,pが互いに素なとき、a,2a,3a,,(p1)apで割った余りはすべて異なる

正の整数i,jに関し、iajai>j)をpでわった余りが同じと仮定する。
このとき(ij)apの倍数。
しかし1ij<pかつapは素なので矛盾。

ax+by=1が整数解をもつabは互いに素

→の証明:対偶をとる。abが互いに素でないとき、a,bのcdの1つをd2とおくとax+bydの倍数となり解を持たない。
←の証明:a,bが互いに素なとき、a,2a,3a,,(b1)abで割った余りはすべてことなるので(定理7より)、余りが1となるようなものが存在する。それをmaとおき、bで割った商をnとおくと
ma=bn+1
つまりambn=1となり(m,n)は整数解になっている。

x,yに関する不定方程式ax+by=cが整数解をもつ cgcd(a,b)の倍数

→の証明:a,bgcd(a,b)の倍数なので整数解m,nに対してam+bngcd(a,b)の倍数。つまりcgcd(a,b)の倍数。
←の証明:定理8の結果からpm+qn=1は整数解をもつ。両辺をgcd(a,b)倍して、
am+bn=gcd(a,b)
も整数解をもつことがわかる。よってcgcd(a,b)の倍数のとき、両辺を適当に整数倍すれば右辺がcとなるのでax+by=cは整数解をもつ。

古典計算機で素数を確率的に判定するアルゴリズム

Shorのアルゴリズムでは、ある数が素数であるかを判定する必要があります(Ref.Hosoya)。素数を決定論的に多項式時間で判定するアルゴリズムは現在まで知られていません。しかし確率的に多項式時間で判定する方法が存在します。以下はRabinRabinによります(Ref.HosoyaP137 E.2より引用)。

素数判定の確率的アルゴリズム(Ref.HosoyaP137 E.2より引用)

Nより小さい正の整数全体をAとする。Nに依存する「証言関数」F:A{0,1}があり、次の性質をもつとする:


  1. Nが素数ならばF(x)=1,   aA
  2. Nが合成数ならばF(a)=0,   aA

素数判定は以下のようにする。Nより小さい「証言数」Aw={a1,a2,,am}をランダムにえらび
F(ai)=0,   i=1,,m
ならばNは合成数。一方
F(ai)=1,   i=1,,m
ならば確率
114m
Nを素数と判断してよい。

ランダムに選ぶ数aiを増やしていけば、判定を誤る確率はいくらでも小さくなるが、多項式量(mlogN)だけで十分である。

具体的な証言関数は以下のようにして作ります。

証言関数の具体的な構成(Ref.HosoyaP137 E.2より引用)

N1=2kMのように因数2をくくりだして
F(a)=1,if aN1=1 mod N,and aN12i=1 mod N,   i=1,2,,k
そうでないとき
F(a)=0
と定義する。

以下の定理が知られています:

Nが素数ならばすべての証言数aF(a)=1を証言し、Nが合成数ならば3/4以上の証言数aF(a)=0を証言する

これより上の確率的アルゴリズムが成立します。

フェルマーの小定理

フェルマーの小定理

aを素数pの倍数ではない数とする。このとき
ap11 mod p
が成立する

以下pでのmodで等しいことを表す。

帰納法で示す。pと互いに素である正の整数aに関して、apaなら、両辺aでわってap11となり、フェルマーの小定理が成立する。そこでapaを示す。

  1. a=1ならapaは明らか。
  2. a=mのとき命題の成立を仮定する。
    (m+1)p=mp+1+k=1p1pCkmkである。ここで
    pCk=p!k!(pk)!=p(p1)(pk+1)k!
    でありこれは整数だが、pは素数なのでk!では割られず、必ず因数にpをもつ。よって
    (m+1)pmp+1
    ゆえにmpmなら(m+1)pm+1

よって帰納法よりすべてのaに対してapa

参考文献

[1]
細谷 暁夫, 量子コンピュータの基礎 [第2版], SGCライブラリー69, サイエンス社, 2009
[2]
Ekert, A. and Jozsa, R. , Shor’s quantum algorithm for factorising numbers, Rev. Mod. Phys, 1996, 733-753
[4]
Rabin, M. O., Probabilistic algorithm for testing primality, J. Number Theory, 1982, 128-138
投稿日:2024818
更新日:2024818
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

bisaitama
bisaitama
142
64635

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. はじめに
  2. Shorのアルゴリズムの基本的な方針
  3. 条件1.に関して
  4. 条件2.に関して
  5. 条件3.に関して
  6. 結論
  7. Appendix: Shorのアルゴリズムまわりの定理
  8. オイラー関数の具体的な表示
  9. 原始根
  10. 中国式剰余定理
  11. ベズーの定理
  12. 古典計算機で素数を確率的に判定するアルゴリズム
  13. フェルマーの小定理
  14. 参考文献