こんにちは。くろこんです。量子プログラミング言語をテスト動作させるために生成した RSA2048 に対応するイジングモデルを紹介します。
イジングモデルのデータ(ダウンロード可能)
RSA2048 のイジングモデルのダウンロード可能なURLです。zip のパスワードは X に投稿しています。
量子プログラミング言語とは
くろこんが勝手に作った言語です。from Any problem to Ising model ということで AtI と呼んでいます。
(参考記事です)
誰でも量子プログラムができるプログラミング言語を開発しました。
現在は python のクラスとして存在していて、普通の演算をするようにイジングモデルを作ることができます。
思ったよりかなり動いてくれていて、先日、secp256k1 すら記述できることが判明しました。
大きい量子計算機に適用可能、ビットコイン署名鍵の解読用方程式の生成に成功
https://qiita.com/ABlackComputer/items/33cc40c42fbeda8a1142
RSA2048 のイジングモデルについて
今回は RSA2048 に対応するイジングモデルになっています。RSA2048 は昔に行われていた素因数分解のコンペの名残で、現在も素因数分解されていない数字として公開されています。
RSA Factoring Challenge (Wikipedia) のURLです。
https://en.wikipedia.org/wiki/RSA_Factoring_Challenge
約640万変数、係数値総和 57,621,916 の巨大なイジングモデルとして生成されています。最適解のときの目的関数の最適値は -19,209,352 であることが事前にわかっています。
素因数分解は陰関数で表現される部分がないため、イジングモデルの x2 から x1024 が素直に素因数に対応します。奇数なので x1 は推定しないということです。
注意したいのは x2 = -1 と推定されたら x2 は真です。x2 = 1 と推定されたら、x2 は偽です。(多分答えは見つからないので、杞憂だとは思いますが……)
1024 x 1044 ビットまでを探索しているので、大きい素因数が 1044 ビットで足りない場合、最適解が存在しないです。
secp256k1 への対応に伴って多くの処理が最適化されたため、今作ったらバグも変数の数も小さくなると思いますが、現段階では前の状態のままにしてあります。
……ということで、今回は RSA2048 のイジングモデルについてでした。記事をお読みいただきありがとうございます。