最近、物理学者と話すとき、私は経験上、指数関数的な時間がかかるように思われる問題がPまたはBPPにあることが非自明である場合、通常、減少が起こる「包括的な理由」を特定できると主張しました。 ---そしてほとんどの場合、その理由は十数個以下の「通常の容疑者」のリストに属します(例:動的計画法、線形代数...)。しかし、それは私に考えさせられました:実際にそのような理由のまともなリストを書き留めることはできますか?これが最初の不完全な試みです。
(0)数学的特性。問題には、明白な「純粋に数学的な」特性があり、一度知られると、poly(n)の可能性のリストを徹底的に検索できることがすぐにわかります。 例:グラフの平面性。クラトフスキーの定理からO(n 6)アルゴリズムに従います。
(以下の「平面」が指摘するように、これは悪い例でした。平面性の組み合わせ特性を知っていても、多項式時間アルゴリズムを与えることはまだ非常に重要です。ですから、ここでより良い例を置き換えてみましょう。たとえば、「バイナリで記述された入力nが与えられ、n個の穴のある表面に埋め込まれた任意のマップに色を付けるために必要な色の数を計算します。」これが計算可能(または有限です!)しかし、答えを与える既知の公式があり、公式がわかれば、多項式時間で計算するのは簡単です。 P.)
とにかく、これは特にありません、ほとんど私に興味状況の一種。
(1)動的プログラミング。 多くの場合、満たされる制約が線形またはその他の単純な順序で配置されるため、指数関数的な爆発なしに再帰的な解決を可能にする方法で問題を分割できます。「純粋な組み合わせ」。代数構造は必要ありません。おそらく、グラフの到達可能性(したがって2SAT)は特殊なケースです。
(2)マトロイド。 問題にはマトロイド構造があり、貪欲なアルゴリズムを機能させることができます。例:マッチング、最小スパニングツリー。
(3)線形代数。 問題は、線形システムの解法、行列式の計算、固有値の計算などに減らすことができます。間違いなく、Valiantのマッチゲート形式によって解決可能な問題を含む「奇跡的なキャンセル」を含むほとんどの問題も線形代数の傘に含まれます。
(4)凸面。 問題は、ある種の凸最適化として表現できます。半正定値計画法、線形計画法、ゼロサムゲームは一般的な(ますます)特殊なケースです。
(5)多項式IDテスト。 代数の基本定理が効率的なランダム化アルゴリズムにつながるように、問題を多項式の同一性のチェックに減らすことができます-場合によっては、素数性のように、証明可能な決定的アルゴリズムにさえなります。
(6)マルコフ連鎖モンテカルロ。 問題は、急速に混合する歩行の結果からのサンプリングに減らすことができます。(例:完全に一致するものをほぼ数えます。)
(7)ユークリッドアルゴリズム。 GCD、継続分数...
その他/正確に分類する方法が明確ではありません:安定結婚、多項式因子、順列群のメンバーシップ問題、数論および群論における他のさまざまな問題、低次元格子問題...
私の質問は、私が除外した最も重要なことは何ですか?
明確にするために:
リストは完全なものではない可能性があることを理解しています:有限の数の理由を与えても、誰かがPにあるエキゾチックな問題を見つけることができますが、それらの理由はありません。その理由もありますが、私は、1つだけの問題で機能するアイデアよりも、PまたはBPPで一見無関係に見える多くの異なる問題を引き起こすアイデアに興味があります。
また、物事をどのように分割するかが主観的であることも認識しています。たとえば、マトロイドは動的プログラミングの特殊なケースにすぎないのでしょうか?深さ優先探索による可解性は、動的プログラミングとは別に、独自の理由として十分に重要ですか?また、見方によっては複数の理由で同じ問題がPに発生することがよくあります。たとえば、線形代数のために主固有値を見つけることはPですが、それは凸最適化問題でもあります。
要するに、私は「分類定理」を望んでいません-効率的なアルゴリズムについて現在知っていることを有用に反映するリストだけのためです。そして、私が最も興味を持っているのは、PまたはBPPに幅広い適用性を持つものを置くためのテクニックですが、上記のリストに収まらないテクニック、または私の自慢をうまくするための私の粗雑な最初の試みを改善するための他のアイデアです物理学者。