トップのSATソルバーは簡単な数値を因数分解できますか?


11

最新のSATソルバーは、SATインスタンスの多くの実例を解決するのに非常に優れています。ただし、ハードなものを生成する方法はわかっています。たとえば、因数分解からSATへの削減を使用し、RSA番号を入力として指定します。

これは問題を提起します:私が因数分解の簡単な例を取るならどうでしょうか。ビットでつの大きな素数をとる代わりに、ビットで素数を、ビットで素数q をとると、とエンコードして SATインスタンスとして。は、要素の1つが非常に小さいため、ブルートフォース検索またはふるい法で簡単に計算できる数です。ファクタリングからSATへの標準的な削減を伴う最新のSATソルバーもこの構造を採用しますか?n/2plognn/lognN=pqFACTOR(N)N

SAT-ソルバー率トップことができますすばやく?N=pq|p|=logn

回答:


10

現在のアルゴリズムでは指数関数的時間内に解決できないことがわかっていることがわかっている、はるかに単純なインスタンスが他にもあります。これらのアルゴリズムはカウントできません(これらのアルゴリズムのほとんどは、解決命題証明システムに対応するDPLLの改善です)。

残念ながら、そのような例は満足のいく例ではありません。これらのアルゴリズムの自然で満足できるハードインスタンスを見つけることに関する質問は興味深い研究問題です(Russeell Impagliazzoは昨年のバンフでの証明の複雑さのワークショップでこれについて言及しました)。そのようなインスタンスが存在する場合にアルゴリズムが失敗することがわかっていると思われる満足できるインスタンスがありますが、それらはあまり自然ではありません(アルゴリズムの健全性を表す式に基づいています)。

因数分解に関して、数値のサイズが小さい場合(たとえば、あなたの場合のように対数、つまり数値は単項で与えられる)、理論的には現在のアルゴリズムでは解決できないと言う結果はなく、実際には単純に書くことができますこれらの数値を因数分解する多項式時間アルゴリズム。したがって、特定のSATソルバープログラムがそれらを解決できるかどうかは、特定のアルゴリズムに依存する可能性があります。


私はバイナリを使用し、通常の因数分解を可能な限り保持するために非常に小さい要素の1つ(のオーダーで、もう1つは)を保持することを望んでいました(切り替えたいような気がします)単項は私にとってあまりにも多くのものを変更します)。簡単な問題についての情報をありがとう、カウントに基づいて難しい満足できないインスタンスに関する論文へのリンクを提供できますか?logNN/logN
Artem Kaznatcheev 2012

@ Artem、Resolutionの下限である証明の複雑さは、例を示します。たとえば、鳩の穴の原則を取り上げます。そのインスタンスでのこれらのアルゴリズムの計算から、満足できないインスタンスの解決(反駁)証明を簡単に抽出できます。2007年からNathan Segerlindによるすばらしい調査があり、IIRCはとりわけこれをカバーしています。ない場合はお知らせください。別の参照先を探します。
Kaveh

@Artem、私は、引数の1つだけが対数である場合にも引数は機能すると思います。つまり、すべての小さい数を調べて、それらの1つが積の要素であるかどうかを確認することにより、多項式時間でそれを解決できます。
Kaveh

@Kavenはい、それが私がサイズの数の対数の1つを作った理由です。質問で説明します。3番目の段落が示唆するように、単項表現を前提とする答えは望んでいません。後でSegerlindを見てみましょう。もう一度、コメントをありがとう:D。
Artem Kaznatcheev 2012

@Artem、どういたしまして。:)(私は両方の数値が小さいと仮定し、サイズがそれらの指数関数的であるべきという事実に対処する単項ている使用ので、私は、代わりに1だけでパッドがそれらを大にすることができ、単項使用。)
Kaveh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.