量子コンピューターが、直接、素因数分解をするわけではないこと

【 量子コンピューターが、直接、素因数分解をするわけではないこと 】 

量子コンピューターの入力に巨大な数を放り込むと、Shorのアルゴリズムで、素因数分解された数字が量子コンピューターの出力に返ってくるというイメージありませんか?

ただ、実際は、少し違います。

Shorの素因数分解アルゴリズムを実行するためには、量子コンピューターの他に、風通のコンピューターが必要なのです。

今回は、Shorのアルゴリズムの元となった「確率的素数判定」というアルゴリズムを紹介しようと思います。これは、量子コンピューターで実行されるアルゴリズムではなく、普通のコンピューターで普通に実行されるアルゴリズムです。

ただし、ランダムに試行して正しい答えを見つけようとする点で、普通の計算アルゴリズムとは異なっているのですが。

一番単純には、a < N なる a をランダムに生成して、aとNが互いに素であるかをチェックします。aとNの最大公約数が1以外の値を持てば、Nは gcd(a, N)という約数を持ち、素数でないことが分かります。

まあ、これだけだと、あまりに行き当たりばったりですね。

確率的素数判定法では、先の「aとNが互いに素でないなら、Nは素数でない」というチェックに加えて、もう一つ、「 a^(N−1) が 1でないなら (mod Nで)、 Nは素数でない」というチェックを付け加えます。この二つ目のチェック項目は、「フェルマー・テスト」と呼ばれています。

これだけです。

あとは、沢山の a < N について、二つのチェックを行います。このチェックを通り抜けたNは、素数である可能性があります。aの数が増えるにつれて、Nは素数である確率は高まります。単に、約数aのチェックを忘れただけかもしれないのですが。

原理的には、チェックすべきaの数には、上限があります。a < Nである aを全てチェックすれば、このアルゴリズムでNが素数かの判定が可能なのは明らかです。

ただ、そこまでやらなくても、確率的には必要な情報を得ることが出来ます。こうしたアルゴリズムを、「確率的アルゴリズム」と言います。それは、行き当たりばったりなように見えますが、そうした見かけ以上に強力なアルゴリズムです。

以前に、現代の暗号の技術は、それがどのような「一方向関数」を選択したかで特徴付けられるという話をしましたが、「一方向関数」の「難しさ」をどのように定義するかでも、こうした確率的アプローチは有効です。

Shorのアルゴリズムも確率的アルゴリズムの形をしています。その主要部分は普通のコンピューターが担います。Shorのアルゴリズムでは、そのルゴリズムの一部分を量子コンピューターに下請けに出します。

その意味では、量子コンピューターの知識がなくても、Shorのアルゴリズムの基本的な構造を理解することは可能なのです。

動画 「Shorのアルゴリズムの発見 −− 確率的素数判定」を公開しました。 
https://youtu.be/c3m_A-T6bH4?list=PLQIrJ0f9gMcMOiLc6py4lKrk3xAG_g0FH




この動画のスライドのpdf

https://drive.google.com/file/d/11s779t7en091AO7CTgQb1Lm1DeffHtHE/view?usp=sharing

関連blog 「量子コンピューターが、直接、素因数分解をするわけではないこと」 https://maruyama097.blogspot.com/2022/08/blog-post_12.htm

−−−−−−−−-----

このセミナー「ポスト量子暗号技術の現在」のまとめページ 

https://www.marulabo.net/docs/cipher2/ 参考資料 Status Report on the Third Round of the NISTPost-Quantum Cryptography Standardization Process       https://doi.org/10.6028/NIST.IR.8413 MaruLabo 関連ページ 「暗号技術の現在 -- ポスト量子暗号への移行と量子暗号」 https://www.marulabo.net/docs/cipher/



コメント

このブログの人気の投稿

マルレク・ネット「エントロピーと情報理論」公開しました。

初めにことばありき

人間は、善と悪との重ね合わせというモデルの失敗について