すべてのソリューションのリストに関連する複雑性クラス?


15

私は特定のノードを含むグラフにすべての単純なサイクルをリストするのがNP困難であるかどうかを尋ねるStack Overflowで質問を読んでいて、適切な既存の複雑度クラスを考えることができないと思いました「この問題に対するすべての解決策をリストする」という形式の問題について話します。クラスNPは、ある意味で、少なくとも1つのソリューションが存在するかどうかを尋ねる問題で構成され、クラスFNPは単一のソリューションを作成するよう求め、クラス#Pはソリューションの数を数えるよう求めますが、これらはどれも複雑性に対処しませんすべての可能なソリューションを徹底的に列挙する。

「多項式時間の計算可能な述語と文字列xが与えられ、P x y がtrue であるすべてのyを列挙する形式の問題を記述するための複雑度クラスはありますか。適切な複雑さの制限]?」解の数が入力xのサイズより指数関数的に大きくなる可能性があることを考えると、制限を特定するのは難しいかもしれないことを理解しています。P(x,y)xyP(x,y)x


面白い。実際には、関連する問題のインスタンスが多すぎると、指数関数的な数の解決策がある場合があります。一般に、SATおよびCLIQUEのインスタンスには大きなソリューションスペースがあります。
カイ

3
これを公式化する別の仮説を次に示します。問題であるX E X-アルゴリズムがある場合(X-可算ため)Aよう有するA X iはを返し、I(すなわち番目溶液I番目のYP X Y WRT)はいくつかの注文。これがREの定義方法と似ていることに注意してください。これにより、ソリューションスペースのサイズが回避され、次のソリューションを見つけるのがどれほど難しいかに焦点が当てられます。もちろん、合計コストは合計によって入手できます。PXEAA(x,i)iIyP(x,y)
ラファエル

3
(私はそれがのように定義見たことがないクラスが、あなたの概念を認識している多項式遅延を持つ列挙?)

@Raphaelこれは私たちが探しているものではないかもしれません。たとえば、の最適なアルゴリズムがiを見つけて時間Θ f | x |で実行されるまですべてのソリューションを反復する必要がある場合、求めている複雑度はΘですf | x |、しかし、合計は複雑さΘ f | x | 2を示唆します。A(x,i)iΘ(f(|x|))Θ(f(|x|))Θ(f(|x|)2)
Lieuwe Vinkhuijzen

@RickyDemerそれは私が私の葉から揺れていたことですよね?定式化が確立されていることを知っておくと良いでしょう。
ラファエル

回答:


10

探している概念は列挙複雑度と呼ばれます。これは、問題(または言語/セットのメンバー)に対するすべてのソリューションを列挙(リスト)する計算複雑度の研究です。列挙アルゴリズムは、事前計算ステップと遅延を伴う列挙フェーズという2ステップのプロセスとしてモデル化できます。これらのステップは両方とも、独自の時間と空間の複雑さを持っています(おそらくエントロピーも)。複雑さの一般的な精神では、考慮すべきこれらの間にトレードオフがしばしばあります。

事前計算ステップは、第一の溶液が列挙される前に必要であるいくつかの作業を行います。これには、ソリューション自体を見つけること、または各ソリューション間の全体的な遅延を削減する大きなデータ構造を初期化することが含まれます。

遅延は、任意の列挙溶液との間で必要な演算に関連するリソースコストです。言い換えれば、遅延はi t hの後に解を生成するのに必要な空間と時間の尺度です。列挙ごとにO 1 時間かかるソリューションの遅延は一定であると言われています。O p o l y n 時間の要件は、多項式遅延を持つと言われています。i+1thithO(1)O(poly(n))

質問で具体的に挙げた列挙の問題については、Johannes Schmidtによる「列挙:アルゴリズムと複雑さ」のセクション2.1のクラスとその関連する兄弟を調べてください(下部にリンク)。ENUMNP


計算前の時間と遅延を気にするのはなぜですか?

Σn{x:ϕ(x)}ϕ(x)Σ一定の順序で要素を通過するだけなので、一定の遅延のみが必要です。知っている限りでは、3SATインスタンスのソリューションを列挙するための遅延は指数関数的です。複雑性理論家としての私たちの仕事は、後者の問題が前者の問題より根本的に難しい(より複雑な)理由を把握することです。遅延は、この違いを示すのに非常に良い仕事をします。

同様に、事前計算がどの程度行われたかを知る必要もあります。すべてのソリューションを事前に計算し、後で列挙するリストに保存することで、列挙問題の遅延を一定の時間とスペースに減らすことができます。課題は、2つのリソース間の最適なバランスを見つけることです。

要素を列挙する順序も複雑さに影響する可能性があります。指定した並べ替え順序で結果を返す必要がある場合、両方のステップで追加の計算を実行する必要があります。ただし、列挙された各要素が一意である限り、任意の順序で十分な状況も確実に研究されます。

PNP


資源

この調査(正式な形式化の試み)は、開始に役立つはずです。また、いくつかの基本的な階層定理を証明します。

列挙:アルゴリズムと複雑さ (Johannes Schmidt、2009)

https://www.thi.uni-hannover.de/fileadmin/forschung/arbeiten/schmidt-da.pdf

列挙の複雑さの結果の列挙については、Wasa Kunihiroがキュレーションしたこの編集をご覧ください。問題の種類ごとに分類されているため、グラフサイクルの列挙専用の論文を簡単に見つけることができます。特定のノードのサイクルのみを考慮するように、関連するアルゴリズムを変更するのは簡単です。

http://www-ikn.ist.hokudai.ac.jp/~wasa/enumeration_complexity.html


ΣnO(1)O(1)

1
@j_random_hackerあなたの質問に対する本当の答えは「それは依存する」ですが、あなたの考え方が間違っているとは思いません。これらの論文の著者は通常、使用している計算のモデル(通常のテープTM対RAM対Word RAM)を示します。この選択により、一定時間の操作とみなせるものとできないもの(数値のインクリメントや出力の生成など)が変わります。この差は、拡張されたチャーチチューリングテーゼのために遅延が多項式になるとすぐに消えると推定されます。
mdxn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.