Shor アルゴリズムについて

はじめに TL; DR;

このノートは, ある量子コンピューターの勉強会向けに作成したものです.

Google や IBM, Microsoft などコンピューター分野で巨人と呼ばれる企業が量子コンピューターの実現に向けて取り組んでおり, 実際の量子コンピューターを触れる機会も出てきました. そんな中, 量子コンピューターを利用するための活動は未成熟です.
量子コンピューターを利用する様々なアルゴリズムが提案されていますが, その中で, 量子コンピューターで因数分解を行う Shor アルゴリズムと, 探索のための Grover のアルゴリズムが有名です. このエントリでは, Shor のアルゴリズムについてご紹介します.

SSL(Secure Socket Layer)という暗号化の技術によって, 一般的なWebサービスの通信経路のセキュリティを保証されています.
この SSL の技術背景には, 「因数分解が多項式時間では解けない. 」という計算科学の理論的な裏づけがあり, 誰からも安全であると信じられています.
「多項式時間ではとけない」とは, 現在のコンピューターでは現実的に有効な時間で解を求められないということです.
しかし, 量子コンピューターが実現すると, この因数分解が多項式時間で解けてしまうと言われています.

果てして, それは正しいのでしょうか?理論的には, 現在のコンピューターではなく, 万能性のある(昨今では「ゲート型」と呼ばれる)量子コンピューターでは, 「因数分解が多項式時間で解ける」ようになります.

RSA 暗号の安全性と Shor のアルゴリズム

SSL認証の元となっているRSA暗号の安全性は, 因数分解の計算困難さにより安全性が担保されております.

十分大きな素数:p, q に対して,

p × q  から 積 N を計算する :簡単な計算
N から因数 p と q を取り出す :困難な計算

この困難な計算とされている自然数の因数分解は, あくまで古典計算機を使用したときの難しさです.
古典計算機を使った手法も, より良いアルゴリズムが研究されており, 次のような手法が存在します.

一方で, 量子計算機を使った分野では, Shor のアルゴリズムが発見されており, さほど難しくなく(多項式時間で解ける難しさ, という)で計算ができるようになります.
その計算の比較は, 計算量を表す記号 記法(オー記法, もしくはビッグオー記法と呼ぶ)を使って,

とされています. (出展:参考図書 *6 による. 最新研究では, より正確に計算量が求められています. )
次からは, 量子計算による因数分解の手法を見ていきます.

因数分解のアルゴリズム

因数分解の基本的な手法を表現すると

整数 を因数分解して, となるような整数 (因数) を求めるためには,
である に対して,
関数 を満たすような最小の周期 を求め,

そして, 求めた について,

この周期 T が偶数 => 問題が解けた!!!
この周期 T が奇数 => 違う a で試す

となります.
つまり, 因数分解の問題は, 「周期性を発見する問題」に置き換えられることになります.

そこで, 周期性を発見する問題を量子ビット(qubit)を使った例で見てみましょう.

例題として, 「 の因数分解」を考えます.

である数 をとって調べます.
ある量子状態 を作って計算します. (具体的な計算方法と数理は後述)

 

この mod がある Ket部分を展開して,

 

を計算する必要があります. しかし, 全てを計算して値を算出しなくても, その周期性がわかればよいのです.
つまりは, もう少し式の変形を進めると,

 

となり, 周期 ということがわかります.
偶数の周期がみつかりましたので, あとは, を計算すればよく,

 

が得られます.

Shor アルゴリズムの概要

周期発見のアウトライン

このアルゴリズムでは, 2つの量子ビット列を用います.
準備する量子ビット列を, 個の量子ビット(qubit)を Ketベクトル で表します.
これを初期状態として, と初期化してから操作を始めます.

Step 1)
1つめの量子ビット列 に, 同じ振幅の重ね合わせ状態を作ります.

 

Step 2)
1つめの量子ビット列 を入力として, 関数 の出力を, 2つめの量子ビット列 へ写すようなユニタリー変換 を行います.

 

 ここで操作されるユニタリー変換 は, 重要で, 周期発見(位数発見ともいう)のためのオラクルです.

Step 3)
2つめの量子ビット列 を計算基底で測定します. この結果, が得られたとします.

 

 この測定結果は次のフェーズの結果には影響しないから, 測定した結果 は利用しません.
 ここで, 隠された求めるべき周期 が暗黙的に(式の上で)得られます.

Step 4)
1つめの量子ビット列 に逆量子フーリエ変換 ( ) を作用させます.

 

この状態から1つめの量子ビット列を計算基底で測定します. すると, 結果として の状態が1つ得られます.

Step 5)
得られた結果 が1つでは確率振幅がわからないため, この Step 1)〜 Step 4)の操作を適切な回数繰り返します.

  の状態が, 確率 で得られることを複数回試行することにより, 求めるべき周期が であることを得ます.

周期発見の詳細

この手順を量子回路にできるように, 詳細に数式で辿ってみます.

 

この操作全般を図に表すと次のようになります.

(前のスライドでご確認ください)

最後の の総和は, で割り切れる ときに, 1 になります.
そして,

 

となります. そこでこの状態を観測して, が得られたとします. この 状態 は,

となり, 観測値 は, を満たします.

つまり, を既約分数にすると, が求められ, この が偶数であれば, 最大公約数 をユークリッドの互除法で求めると, の因数が得られます.

周期(位数)発見の回路

概要の Step 2)ででてきたオラクルとしてのユニタリー変換 は, とする変換です.
この周期発見回路(変換行列)を, 一般的に考察することは可能ですが, 準備するには苦労もあるため, ここでは幾つか具体的な例を挙げるに留めます.

詳細が知りたいというときには, 参考図書 *4 に詳しく説明があります.

(前のスライドでご確認ください)

の回路

の回路

量子フーリエ変換

Shor のアルゴリズムを実装するには, 「量子フーリエ変換」とその逆変換である「逆量子フーリエ変換」が必要になります.
量子フーリエ変換は, Qiita の Advent Calendar 2017 エントリ記事「量子コンピュータでフーリエ変換すると高速フーリエ変換より高速な件」に詳しく解説されています. 参考にてください.

ここでは, 少々複雑な式になりますが, パラメータ を一般的化した式を取り上げます.

一般的に, 非負の整数の集合 を考えるとき,

量子フーリエ変換は, 次式で表されます.

   ただし,

この変換を行うユニタリー行列 は,

の恒等変換行列 と, のHadamard変換行列 ,

量子ビットを のように逆順に並べ換える変換 ,

の位相変換行列 とした 量子ビット上での制御演算子 を使って, 次のように表されます.

 

数式では, 難しく見えますが, 量子回路にすると見やすくなります. を省いた図を見てみましょう.

一般的な量子フーリエ変換の量子回路

逆量子フーリエ変換

次に, 量子フーリエ変換の逆変換(フーリエ変換を元に戻す変換)の一般形式を示します.

   ただし,

つまり, フーリエ変換のときの の肩にある指数の符号が マイナス になった形になります.
これは, 全体として複素共役をなればよいことになります. これをふまえると, この逆変換を行うユニタリー行列 は,
量子フーリエ変換を表したときの, 恒等変換 , Hadamard変換 , 逆順への置換行列 と,
位相変換行列の複素共役行列 とした 量子ビット上での制御演算子 を使って, 次のように表されます.

 

Shor アルゴリズム を実装する

IBM Q を使って検証する

を使った量子回路を試してみましょう.

参考図書紹介

今回, Shor アルゴリズムを勉強するために参考にした市販書籍を下表にまとめました.

No. 表紙 タイトル
*1 量子コンピュータと量子通信〈2〉量子コンピュータとアルゴリズム
Michael A. Nielsen/ Isaac L. Chuang (著) 木村 達也 (訳), オーム社
¥3,800, 2005/1/10
*2 量子アルゴリズム
中山 茂 (著), 技報堂出版
¥5,400, 2014/10/30
*3 クラウド量子計算入門
中山 茂 (著), カットシステム
¥5,500, 2016/10/10
*4 量子コンピュータの基礎数理
上坂 吉則 (著), コロナ社
¥3,000, 2000/5/26
*5 量子情報科学入門
石坂 智/ 小川 朋宏/ 河内 亮周/ 木村 元/ 林 正人 (著), 共立出版
¥3,800, 2012/6/10
*6 量子コンピューティング
Jozef Gruska (著) 伊藤 正美/ 岩本 宙造/ 森田 憲一/ 今井 克暢/ 外山 政文 (訳) , 森北出版
¥8,000, 2003/11/19

更新記録

2017/12/08 初版