量子コンピューターが、直接、素因数分解をするわけではないこと
【 量子コンピューターが、直接、素因数分解をするわけではないこと 】
量子コンピューターの入力に巨大な数を放り込むと、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のアルゴリズムの基本的な構造を理解することは可能なのです。
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/
コメント
コメントを投稿