1
応用数学解説
文献あり

量子コンピュータにおける素因数分解(2): べき剰余

113
0

はじめに

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

今回の目標は「べき剰余 (Modular exponentiation):ax mod Nを計算する量子回路を構成することです。後の記事で説明しますが、これが素因数分解に重要な回路です。

参考文献はVedralSamNです。基本的にはVedralに基づいて書かれています。SamNは大変わかりやすいShorのアルゴリズムの日本語による解説記事です。

剰余和 (Adder modulo N)

以下を計算する量子回路を組みます:

剰余和 (Adder modulo N)

a+b mod N
ただしa,bはゼロ以上の整数、Nは正の整数、また0a,b<Nとする

0a+b<2Nであることに注意すれば、a+bNを計算して、overflowが起こらなければ、すなわちa+bN0ならばこれそのものがa+b mod Nです(負になると最上位ビットが立つ。これをoverflowと呼ぶ)。もしoverflowが起こればa+b mod N=a+bです。和・差を計算する量子回路は前回の加算器とそれを逆回ししたもので実現できるので、簡単に量子回路を組めるように思います。

ただし回路が可逆になるように組むので、そこが少し複雑です。Ref.Vedralでは以下のような量子回路を組んでいます:

剰余和(Adder mod)の量子回路。!FORMULA[12][1261291541][0]は!FORMULA[13][38228][0]のビット反転を表す 剰余和(Adder mod)の量子回路。t¯tのビット反転を表す

Add, Subtractはそれぞれ「加算器」「減算器」を表します。加算器は 前回 説明しました。減算器は加算器の逆回し("Add1")で実現できます。

図に関し、2つほどコメントです:

  1. a+bNの最上位ビット(Vedralでは"most significant bit"と呼ばれる)は、a+bN<0のとき1a+bN0のとき0です。この最上位ビットをtとします。すなわち
    t={1a+bN<00a+bN0
    です。図のt¯とはtのビット反転を表します。
  2. 最後のAddの左側で(a+b mod N)aの最上位ビットがt¯となっています。これは以下のようにしてわかります:
    ・もしa+bN0ならばa+bNの最上位ビットtは0。このとき(a+b mod N)a=a+bNa=bN<0 (b<N)であるからこの量の最上位ビットは1
    ・もしa+bN<0ならばa+bNの最上位ビットtは1。このとき(a+b mod N)a=a+ba=b0であるからこの量の最上位ビットは0
    以上から(a+b mod N)aの最上位ビットはt¯になります。

制御剰余乗算 (Control-Multiplier moduloN)

ゼロ以上の整数a,xおよび正の整数Nが与えられたときa×x mod Nを計算する量子回路を作ります。ただし今後の目的のため、フラグとなるcなる数を用意して以下のような変換を行う回路を構成します(Ref.Vedral):

制御剰余乗算 (Control-multiplier modulo N)

|c;x,0{|c;x,a×x mod Nif |c=|1|c;x,xif |c=|0
x,aはゼロ以上の整数、Nは正の整数。また0x,a<Nとする

これは前章のAdder Modを組み合わせて作られます。xxn1xn2x1x0のように2進数表示します。ax
ax=20a×x0+21a×x1++2n1a×xn1
と表されるので、c=1のとき、かつxiが1の場合に2iamod Nで足していけば目的が達成されます。
Ref.Vedralではこの量子回路を以下のように組んでいます:

制御剰余乗算 (Control-multiplier modulo !FORMULA[54][37050][0])の量子回路。青い文字はすべて!FORMULA[55][-1734162241][0]であることに注意 制御剰余乗算 (Control-multiplier modulo N)の量子回路。青い文字はすべてmod Nであることに注意

茶色の太線は1 qubitではなくqubit群を表します。上から下に伸びる矢印はcxi両方が1のときに矢印の先のqubit群に2iaをセットする操作を表します(論文ではaは明示されていないですが、implicitにどこかに蓄えられています)。Adder Modは前章の回路です。これを通した直後の矢印は、セットされている(かもしれない)2iaを消去する作業を表します。下の桁20aから再帰的に1桁ずつmod Nの和を計算し、それが一番下のqubit群に蓄えられます。最後の方の曲がった矢印は、cが0のときにxを一番下のqubit群にコピーする操作です。一番上のqubitの最後のほうでcに一時的にNOTをかけてビット反転しているのはそのためです。

べき剰余 (Modular exponentiation)

以下の計算を実現する回路を作ります:

べき剰余 (Modular exponentiation)

ax mod N   (a,xはゼロ以上の整数,Nは正の整数。 0a<N)

上記しましたが、これが因数分解に重要な量子回路です。この回路を作るためにここまでその部品となる回路を構成してきました。

Ref.Vedralには以下のような回路が描かれています:
べき剰余 (Modular exponentiation)の量子回路。青い文字はすべて!FORMULA[67][-1734162241][0]であることに注意 べき剰余 (Modular exponentiation)の量子回路。青い文字はすべてmod Nであることに注意

これも行っていることは簡単です。まず
ax=a20×x0a21×x1a2m1×xm1
です。ここで
ab mod N=((a mod N)×b) mod N
なので、
ax mod N=a20×x0a21×x1a2m1×xm1 mod N=((((a20×x0 mod N)×a21×x1 mod N)×a22×x2 mod N))×a2m1×xm1 mod N
です。各桁のa2i×xi mod Nは前章のCtrl Mult Modを用いてxi=1のときa×a mod Na2×a2 mod Nのように再帰的に計算して作れます(図3参照)。Ctrl Mult Modでそれらを掛け算していけば、最終的にxa mod Nが計算できます。(Ctrl Mult Mod)1はCtrl Mult Modを計算する前に片方のqubitを0にリセットするための操作です。もう片方のqubitにそれまで掛け算した数の情報が蓄えられます。

おしまい & つづく。

参考文献

[1]
Vedral, V. , Barence, A., Ekert, A., Quantum networks for elementary arithmetic operations, Phys. Rev. A, 1997, 147-153
投稿日:202484
OptHub AI Competition

この記事を高評価した人

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

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

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

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

投稿者

bisaitama
bisaitama
142
65269

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. はじめに
  2. 剰余和 (Adder modulo $N$)
  3. 制御剰余乗算 (Control-Multiplier modulo$N$)
  4. べき剰余 (Modular exponentiation)
  5. 参考文献