探している概念は列挙複雑度と呼ばれます。これは、問題(または言語/セットのメンバー)に対するすべてのソリューションを列挙(リスト)する計算複雑度の研究です。列挙アルゴリズムは、事前計算ステップと遅延を伴う列挙フェーズという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