数学好きから見た量子コンピュータ
57を因数分解した話
第12回日曜数学会 2018/06/16
snuffkin
1
自己紹介
• 束野仁政(つかの・さとゆき)
• Acroquest Technology株式会社
• ITエンジニア
• 分散処理、ビッグデータ、機械学習、検索エンジン
• ITエンジニアが楽しめる数学、ITエンジニアに役立つ数学
• 量子コンピュータを勉強中
@snuffkin
https://qiita.com/snuffkin
https://note.mu/snuffkin
2
量子コンピュータって何?
1. 量子力学の性質を使って高速に計算できるコンピュータ
2. ある程度のサイズの量子コンピュータが実現すると、
問題によっては、スーパーコンピュータよりも高速になる
3. Google、IBM、Microsoft、D-Wave等が開発している
4. 実用化はXX年後?
5. 主な実現方式は2つ
• 量子ゲート方式
• 量子アニーリング方式
今回紹介するのは量子ゲート方式のアルゴリズム
3
量子コンピュータで高速に計算できること
1. 数論関連
a. 因数分解
b. 離散対数問題
c. ペル方程式
d. ガウス和
e. 合同ゼータ関数
4
2. 幾何関連
a. 結び目不変量
b. Persistent Homology
3. 線形代数関連
a. 行列の累乗
b. 行列の階数
など
今回はこの概略を
紹介します
因数分解できると何が嬉しいのか?
公開鍵暗号を現実的な時間で解ける
1. インターネット通信やビットコインで利用されている
2. 「大きな数の因数分解が難しいこと」を安全性の拠り所にしている
難しい = 現実的な時間では計算できない
正確には、楕円曲線の離散対数問題を解く必要があるが、
因数分解の考え方を応用して楕円曲線の離散対数問題を解ける
5
大きな数の因数分解の難しさ
𝑛ビットの整数の因数分解(将来的に更新される可能性あり)
• 古典コンピュータでの最良の計算時間(一般数体ふるい法):
• 量子コンピュータ(Shorのアルゴリズム):
1024ビットの整数を因数分解するのに必要なおおよその計算量
• 古典コンピュータ: 𝑂(10278)
• 量子コンピュータ: 𝑂(1061
)
6
Shorのアルゴリズム(𝑁の因数分解)
確率的なアルゴリズム(何度か実行すれば、高確率で成功する)
1. 自然数 𝑎 < 𝑁 をランダムに選ぶ
2. gcd(𝑎, 𝑁) を計算する(ユークリッドの互除法で高速に計算可能)
 gcd 𝑎, 𝑁 > 1 なら、これが非自明な 𝑁 の因数
3. 𝑓 𝑥 = 𝑎 𝑥 mod 𝑁 の周期 𝑟 を見つける(量子アルゴリズム)
4. 𝑟 に関する条件をチェック
a. 𝑟 が奇数なら、ステップ1から再度実行
b. 𝑎 𝑟/2
+ 1 ≡ 0 mod 𝑁 なら、ステップ1から再度実行
5. gcd(𝑎 𝑟/2 + 1, 𝑁) と gcd(𝑎 𝑟/2 − 1, 𝑁) が非自明な 𝑁 の因数
𝑎 𝑟
≡ 1 mod 𝑁 ⇔ (𝑎 𝑟/2
+ 1)(𝑎 𝑟/2
− 1) ≡ 0 mod 𝑁
7
非ゼロ 非ゼロ
実際に因数分解してみよう
百聞は一見に如かず
実際に因数分解してみたい
ターゲットは、、、
8
グロタンディーク素数(合成数)
57
𝑓 𝑥 = 𝑎 𝑥 mod 𝑁の周期 𝑟 を見つける
𝑁 = 57とする。𝑎 = 5を選んだとする
I. 𝑁2
≤ 𝑞 < 2𝑁2
となる𝑞 = 2𝑙
を取る
(572 = 3249 ≤ 4096 = 212 < 2 ⋅ 572= 6498)
II. 次の量子ビットを作成する:
III. この量子ビットに量子フーリエ変換を適用する:
IV. ⊗の右のビット( 𝑓 𝑥 の部分)を測定し(𝑓 𝑥 = 𝑧が決まる) 、
⊗の左のビット( 𝑦 の部分)を測定すると、
次の確率で𝑦を測定できる:
(続く)
9
古典コンピュータでは
現実的な時間では計算できない
測定値は確率的に決まる
𝑓 𝑥 = 𝑎 𝑥 mod 𝑁の周期 𝑟 を見つける
10
𝑟 = 18
(実際にはまだ求まっていない)
ステップII
ステップIVで𝑓(𝑥)のビットを測定すると、
いずれかの列を取得できる
(実際には測定するまで分からない)
𝑓 𝑥 = 𝑎 𝑥 mod 𝑁の周期 𝑟 を見つける
11
ステップIVで𝑓 𝑥 = 51を測定した後、
ビット𝑦を測定する確率は右図のよう
になる

𝑦
𝑞
≈
𝑐
𝑟
となる𝑦の確率が大きくなる
(0 ≤ 𝑐 ≤ 𝑟 − 1)
計算時間は、PCで2時間
a. SageMathを利用
b. 特に計算の工夫なし
PCのスペック
Intel(R) Core(TM) i7-6560U CPU
@ 2.20GHz
1593
4096
≈
7
18
𝑟を求めたい
このケースでは確率が
大きくなる箇所の和は
0.78
𝑓 𝑥 = 𝑎 𝑥 mod 𝑁の周期 𝑟 を見つける
V. 実は
𝑦
𝑞
はある𝑐 < 𝑁に対して
𝑐
𝑟
に近い。 |
𝑦
𝑞
−
𝑐
𝑟
| ≤
1
2𝑞

𝑦
𝑞
の連分数展開に現れる分母が𝑎 𝑥 ≡ 1 mod 𝑁を満たすか確認する
12
𝑓 𝑥 = 𝑎 𝑥 mod 𝑁の周期 𝑟 を見つける
連分数展開に現れる分母が𝑎 𝑥
≡ 1 mod 𝑁を満たすか確認する
13
518 ≡ 1 mod 57を満たす
𝑐と𝑟が互いに素じゃないと
うまくいかない
Shorのアルゴリズム(𝑁の因数分解)
• 𝑟 = 18となった。𝑟 に関する条件をチェック(ステップ4)
𝑟は偶数
518/2 + 1 ≡ 21 ≡ 0 mod 57
• gcdを求める(ステップ5)
gcd(518/2 + 1, 57) = gcd(21, 57) = 3
gcd(518/2
− 1, 57) = gcd(19, 57) = 19
14
57は真の素数ではなかった!
実際に57を因数分解して分かったこと
1. 思ったより大変だった
• 手計算しようとしたが、諦めた
• 結局、PCで2時間かかった
• ガウスやオイラー級の人じゃないと、手計算は無理では
• 大きいサイズでも高速に動作する量子アルゴリズム、すごい
2. アルゴリズムの理解に役立った
• フーリエ変換はエライ
• これを思いついたShorさん、すごい
3. 数学が好きな人は、量子アルゴリズムを楽しみやすそう
• 量子ゲート方式の場合、メインの道具は、複素数、行列、線形代数
15
宣伝
量子アルゴリズムの紹介記事を少しずつ書いています。
twitterとかで感想をもらえると励みになります。
「プログラマのための量子アルゴリズム入門」
https://note.mu/snuffkin/n/n8affc7eabf45
16
参考文献
1. 竹内 繁樹
量子コンピュータ 超並列計算のからくり
2. Peter W. Shor
Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a
Quantum Computer
3. John Proos and Christof Zalka
Shor's discrete logarithm quantum algorithm for elliptic curves
4. Qmedia
Quantum Algorithm Zoo全訳(https://www.qmedia.jp/algorithm-zoo/)
17

数学好きから見た量子コンピュータ~57を因数分解した話~