非環式有向グラフ我々が入力として与えられている問題考える、標識機能からいくつかのセットに全順序と我々が求められ(例えば、整数)、及び辞書編集的に最小のトポロジカルソートを計算します。より正確には、トポロジカルソートのGでの列挙であるVとして\ mathbfは、{V} = V_1、\ ldots、v_n、その結果、全てのためにI \ NEQ Jからのパスがあるときはいつでも、V_Iにv_jではλ V L < LλV v = v 1、… 、v n i ≠ j v i v j G、それからi <jでなければなりません。このようなトポロジカルソートのラベルは、\ mathbf {l} = \ lambda(v_1)、\ ldots、\ lambda(v_n)として取得されるSの要素のシーケンスです。そのようなシーケンス(すべての長さ| V |)の辞書式順序は、l_i <_L l_iのような位置iがある場合、\ mathbf {l} <_ {\ text {LEX}} \ mathbf {l '}として定義されます。'およびl_j = l'_jすべてのj <iに対して。Sの各ラベルをVの複数の頂点に割り当てることができることに注意してください(そうでない場合、問題は簡単です)。
この問題は、計算バリアント(「辞書編集的に最小限のトポロジカルソートを計算する」)または決定バリアント(「この入力語は最小限のトポロジカルソートですか?」)で述べることができます。私の質問は、この問題の複雑さは何ですか?それはPTIME(または計算バリアントのFP)ですか、それともNPハードですか?一般的な問題がNPハードである場合、可能なラベルのセットが事前に固定されている(つまり、可能なラベルの数が一定しかない)バージョンについても興味があります。
備考:
ここに、問題の動機付けをするための小さな実例があります。DAGはプロジェクトのタスク(それらの間に依存関係がある)を表すものとして見ることができ、ラベルは各タスクにかかる日数を表す整数です。プロジェクトを完了するには、タスクに選択した順序に関係なく、同じ合計時間がかかります。しかし、私は上司に感銘を与えたいと思っています。これを行うには、できるだけ多くのタスクを可能な限り速く終了します(より難しいタスクが残っているため、最後に非常に遅くなることを意味する場合でも、貪欲な方法で)。辞書的に最小限の順序を選択すると、以下の基準を最適化:私は順序を選びたいは他のオーダーが存在しないようにとの日数場所後のo ′ n n o ′ o n o ′ m < n o ′ o日は私がオーダーでより多くの作業が終了します注文とよりを(すなわち、私の上司のルックスは、一度場合、私はとのより良い印象を与える)が、すべてのために私は順番に劣らずの作業を終えました注文と比べて。
問題についての洞察を与えるために:以前の 回答から、次の関連する問題が難しいことをすでに知っています:「次のシーケンスを達成するトポロジカルなソートはありますか?」ただし、この辞書式順序に対して最小限のシーケンスが必要なという事実は、それを達成する可能性のあるトポロジーの順序を大きく制約しているようです(特に、これらの他の回答の減少はもはや機能していないようです)。直観的には、選択の余地がある状況ははるかに少ないです。
注セットカバーの面で問題の興味深いrephrasingsがあるように思われること(二部ですのDAGに問題を制限する場合、すなわち、高さ2を持っている):セットのセットが指定されると、注文にそれらを列挙シーケンスを辞書式に最小化する、、、、。この問題は、無向グラフでも言い換えることができます(カバーされていないラベルの辞書式順序を最小化する順序に従って、グラフの接続領域を徐々に拡張します)。ただし、シーケンスには| S 1 | | S 2 ∖ S 1 | | S 3 ∖ (S 1 ∪ S 2)| … | S N ∖ (S 1 ∪ ⋯ ∪ S のn - 1)| 辞書の順序の定義によって常に貪欲であるためには、(たとえば、シュタイナーツリーの)縮約が機能しません。
あなたのアイデアを事前に感謝します!