SATやその他の決定問題に対する近似アルゴリズムがないのはなぜですか?


18

NP完全決定問題があります。問題のインスタンスが与えられた場合、問題が実行可能な場合はYESを出力し、それ以外の場合はNOを出力するアルゴリズムを設計したいと思います。(もちろん、アルゴリズムが最適でない場合、エラーが発生します。)

このような問題に対する近似アルゴリズムは見つかりません。私は特にSATを探していましたが、ウィキペディアの近似アルゴリズムに関するページで次のことがわかりました:アプローチの別の制限は、充足可能性などの「純粋な」決定問題ではなく、最適化問題にのみ適用されることです。 。

たとえば、なぜ近似比を、アルゴリズムが犯す間違いの数に比例するように定義しないのですか?貪欲で準最適な方法で決定問題を実際にどのように解決しますか?


5
MAX-SATには近似アルゴリズムがあります。
ユヴァルフィルマス

2
MAX-SATは決定の問題ではありませんか?
リブズ

15
近似アルゴリズムは、常に最適化問題のためのものです。
ユヴァルフィルマス

4
そのため、基本的には、すぐに終了するが、間違った答えをときどき与えることができるアルゴリズムが必要です。ここでは、「近似アルゴリズム」や「最適」などの明確に定義された用語を使用することで、問題を非常に混乱させていると思います。それらには非常に具体的な意味があります。代わりにヒューリスティックを探していると思います-その用語を使用して質問を更新する(または混乱を避けるために新しい質問を最初から作成する)と、より良い結果が得られる可能性があります。
AnoE

これは完全な答えではありませんが、理由の一部を説明します:下位ビットのみが間違っているよりも下位ビットのみが間違っているよりも優れていない重要なSAT問題が存在します。
ジョシュア

回答:


33

近似アルゴリズムは最適化問題専用であり、決定問題用ではありません。

決定問題を解決しようとするときに、近似比をアルゴリズムが犯す間違いの割合と定義しないのはなぜですか?「近似比」は、明確に定義された標準的な意味を持つ用語であり、別の意味を持ち、2つの異なることに同じ用語を使用するのは混乱するためです。

OK、ある決定問題について、アルゴリズムが犯す間違いの数を定量化する他の比率を定義できますか?まあ、それを行う方法は明確ではありません。その分数の分母は何でしょうか?または、別の言い方をすれば、問題のインスタンスの数は無限になり、アルゴリズムによっては正しい答えが得られ、他の場合は間違った答えが得られるため、最終的には次の比率になります。 「無限大で分割されたもの」であり、それは無意味であるか、定義されていません。

あるいは、サイズ問題のあるインスタンスで、をアルゴリズムのミスの割合として定義できます。次に、の制限をとして計算できます(そのような制限が存在する場合)。これ明確に定義されます(制限が存在する場合)。ただし、ほとんどの場合、これはそれほど有用ではありません。特に、問題のあるインスタンスの分布が暗黙的に想定されます。ただし、現実の世界では、問題のあるインスタンスの実際の分布は均一ではない場合があります。多くの場合、均一ではありません。したがって、この方法で得られる数値は、期待するほど有用ではないことがよくあります。多くの場合、アルゴリズムがどれほど優れているかを誤解させる印象を与えます。rnnrnn

人々が難治性(NP困難)に対処する方法の詳細については、難治性への対処:NP完全問題を参照してください


3
+1。しかし、最後の点は確かではありません.nが長さnの文字列の数を超える長さnの入力でプログラムが犯すミスの数が無限になると、近似比を限界として定義できると主張できます。もちろん、「YES」(または「NO」)を出力するだけの単純なプログラムが良い比率(時には1!)を達成するため、これは役に立たないことがわかります。
-aelguindy

1
@detは別の質問です。標準の教科書やオンラインリソースで読んだ後、個別に質問する必要があります。投稿ごとに質問を1つだけ行うことをお勧めします。
DW

1
@aelguindy、良い点。それに応じて回答を更新しました。
DW

2
@detなぜ貪欲なのですか?決定問題を「ほぼ」解決することはどういう意味ですか?
ラファエル

2
@Mehrdad:通常、近似アルゴリズムは最悪の場合の誤差で評価します。これは、それがどれほど最適でないかの上限です。そのため、たとえば、与えられた近似アルゴリズムは常に、最適な結果の少なくとも6分の5である結果を見つけると言うかもしれません。それを意思決定問題に変換する本当の方法はありません。あなたのアルゴリズム時々の発する(例えば)0.1場合は、どちらかそれは(あなたが常に0.5を発するように、最悪の場合には、より良いだろう。その場合には)0.9ではオフ時々だ、または「おおよそ」-nessは偽と「0.1です"は実際には" 0 "を意味します。
-ruakh

14

意思決定の問題に近似比のようなものが表示されない理由は、一般的に意思決定の問題について尋ねられる質問の文脈では一般に意味をなさないためです。最適化設定では、「近くに」いると便利なので、意味があります。多くの環境では、意味がありません。離散対数問題でどれくらいの頻度で「近くにいる」かを見るのは意味がありません。グラフ異性体を見つけるのに「近い」頻度を確認しても意味がありません。同様に、ほとんどの意思決定問題では、正しい決定に「近い」ことは意味がありません。

現在、実際の実装では、問題のどの部分を「迅速に」決定でき、どの部分が決定できないかを知ることが役立つ場合が多くあります。ただし、最適化とは異なり、これを定量化するための万能の方法はありません。あなたがお勧めのようにして、統計的にそれを行うことができますが、唯一のあなたの入力の統計的分布を知っていれば。ほとんどの場合、意思決定の問題に興味がある人は、そのような分布を持つことはそれほど幸運ではありません。

ケーススタディとして、停止の問題を検討してください。停止の問題は決定不能であることが知られています。コンパイラを作成している場合に解決できるのは本当に便利な問題なので、残念です。ただし、実際には、ほとんどのプログラムは、停止している問題の観点から分析するのが非常に簡単であることがわかります。コンパイラはこれを利用して、これらの状況で最適なコードを生成します。ただし、コンパイラは、特定のコードブロックが決定できない可能性があることを認識しなければなりません。「おそらく決定可能」であるコードに依存するプログラムは、トラブルに巻き込まれる可能性があります。

ただし、これらの停止問題の特定のケースを解決する際にコンパイラーがどれだけうまく行っているかを判断するためにコンパイラーが使用するメトリックは、特定の素数のペアが攻撃に対して許容できるほど強化されているかどうかをテストするために暗号化プログラムが使用するメトリックとは大きく異なります。すべてのソリューションに適合するサイズはありません。このようなメトリックが必要な場合は、特定の問題スペースとビジネスロジックに合わせて調整する必要があります。


だから、私が理解しているように、決定問題を解決する唯一の方法は、非常に非効率的な最適なアルゴリズムを設計することですか?私には決定の問題(NP完全)があり、解決策を見つけるために貪欲な(高速の)アルゴリズムを考え出すように頼まれたためです。どうすれば解決できますか?この種の問題に焦点を当てた論文をご存知ですか?
リブズ

1
@detプッシュバックして問題を修正します。NP完全な問題がある場合、かなり行き詰まっていますが、実際に問題を解決する必要はない可能性が高いです。たとえば、必ずしも完璧な答えが必要なわけではありません。たぶん近いだけで十分でしょう。または、簡単なケースのサブセットの問題を解決し、難しいケースをパントすることもできます。例として、パッキングアルゴリズムは多くの場合NP完全ですが、確率論的アプローチを使用して最適の5%以内に確実に到達するアルゴリズムが一般的です。
コートアンモン-復活モニカ

2
正直に言って、NP完全プログラムを解決するために貪欲なアルゴリズムを考え出すように言われることは、文字通り、コンピューターサイエンス/数学コミュニティ全体を独力で引き受けるように命じられるのと同じです。あなたはP時間にNP-完全なプログラムのアルゴリズムを見つけた場合、で非常に少なくとも、あなたはP = NPを解決するための$ 100万クレイ賞を獲得します。実際には、あなたの発見の影響は、私たちが知っているようにコンピューティングを再構築し、一晩でセキュリティ/暗号化業界全体を完全に混乱させます。タスクの文言をNP完全ではないと証明できるように調整する方が良い。
コートアンモン-復帰モニカ

NP完全問題に貪欲な厳密アルゴリズムを使用しました。小さなケースを解決するだけで、週末には64プロセッサのサーバーを入手できました。
パトリシアシャナハン

8

既存の答えに加えて、意思決定問題のおおよその解決策があることが理にかなっているが、あなたが考えるかもしれないものとは異なる動作をする状況があることを指摘させてください。

これらのアルゴリズムでは、2つの結果のうち1つだけが確実に決定されますが、もう1つは正しくない可能性があります。たとえば、素数Miller-Rabin検定を使用します。数値が素数ではないと判定された場合、その結果は確実です。しかし、他の場合では、それは数がおそらく素数であることを意味するだけです。投資する計算時間に応じて、結果に対する自信を高めることができますが、非素数の場合のように100%になることはありません。

これは、決定できない問題に取り組む場合に特に強力です。特定のコードの停止問題を解決しようとするツールを作成できます。プログラムが無限にループしないという証拠を見つけることができれば、100%の確実性でそれを主張できます。そのような証拠が見つからない場合は、プログラム制御フローが複雑すぎてツールを分析できない可能性がありますが、永久にループするという証拠ではありません。制御構造を単純化することにより、ツールが特定の停止を証明するのに十分な単純な同等のプログラムを作成できる場合があります。


確率的アルゴリズム(答え)と近似アルゴリズム(質問)には大きな違いがあります。特に、両方の組み合わせは非常に特別な品種です。
ラファエル

また、このコンテキストでの用語の合理的な解釈を想定して、停止問題の確率的アルゴリズムが存在しないことを知っています。
ラファエル

@Raphael私は、答えを確率的アルゴリズムに特化するつもりはありませんでした。確かに、Miller-Rabinの場合はそうですが、ご自身で述べたように、これは停止する問題の例には当てはまりません。また、この動作を見つける大部分の場合にも当てはまらないと思います。私が知りたいと思ったポイントは、あなたが一方の結果で確実性を得るだけで、他の結果ではないということです。
ComicSansMS

それ以上のことを言っていない場合、一部の問題は半計算しかできないので、あなたが質問に答えているとは思わない。
ラファエル

@Raphael私の答えは、半計算可能な問題に固有のものでもありません。実際、私が説明したアプローチは半計算可能な問題にも当てはまるとは思いません。ここで、関数の未定義のブランチに着地したかどうかを確認するので、結果がないことを確実に主張できます。要約すると、答えはあるかもしれませんが、アルゴリズムはつまずくほど見苦しくなかったかもしれません。
ComicSansMS
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.