頂点ラベル付きDAGのトポロジカルソートの列挙


11

レッツあること、非循環有向グラフ、とlet各頂点マッピングラベル付け機能もラベルにある有限アルファベットで。書く、トポロジカルソートの全単射であるからに(すなわち、の順序シーケンスで)ようにするたびに次いで(つまり、からへのエッジがある場合G=(V,E)λvVλ(v)Ln:=|V|Gσ{1,,n}VV(v,v)Eσ1(v)<σ1(v)vvその後、はシーケンスの前に出現します)。のラベルは、の単語です。vvσσ(1)σ(n)Ln

与えられた場合、トポロジカルなラベルを効率的に列挙したいと思います。トポロジカルソートのラベルを列挙する複雑さは何ですか?もちろん、指数関数的に多くなる可能性があるため、出力のサイズの関数として、または遅延の観点から複雑さを調べたいと思います。特に、列挙は多項式遅延で実行できますか?(または一定の遅延さえ?)(G,λ)G

全ての頂点場合には異なるラベルキャリー(同等または、頂点がある自体によって標識)、私は、ラベルが一定で列挙することができることを知っていることにより、時間を償却この結果にposetsの線形拡張を列挙する(これはDAGのトポロジカルな種類を列挙するのと同じことです)。ただし、頂点に任意のラベルが付けられている場合、非常に多くのトポロジカルソートが同じラベルを持っている可能性があるため、トポロジカルソートを列挙し、ラベルを計算してラベルを列挙する効率的な方法を取得することはできません。posetの用語では、ラベル付きDAGはラベル付きとして見ることができますG{1,,n}G(G,λ) そして、それらに関する列挙結果を見つけることができませんでした。

ここでの他の質問への回答のおかげで、いくつかの関連する問題の難しさをすでに知っています。特に、辞書編集的に最小限のラベル見つけることはNPハードであることを知っています。また、特定のラベルが何らかのトポロジカルソートによって達成できるかどうかを決定するのがNP困難であることも知っています(この問題の難易度から:候補ラベルシーケンス与えられた場合、各頂点が位置で発生しなければならないトポロジカルソート求めます正しいラベルが現れる場所sGs)。しかし、これは列挙の難しさを意味するとは思いません。好きな順序で列挙することができます(必ずしも辞書式ではありません)。一定の遅延(最初に列挙するべき指数関数的に多くのシーケンスがある場合があるため)。

最初のラベルを列挙するのは明らかに簡単であることに注意してください(トポロジカルな並べ替えを行うだけです)。以外別のラベルを列挙するには、要素が位置で列挙されるようにしますここで、:すべてのそして、、そしてかどうかを確認トポロジカルソートがある位置にある明確PTIMEで行うことができ、。しかし、より多くのラベルを出力するにつれて、このアプローチを一般化する方法がわかりません。ssvVi{1,,n}siλ(v)viGvi

回答:


-1

トポロジの順序を計算する最も簡単な方法の1つは、指定されたDAGで深さ優先検索を実行することです。現在の頂点訪問されていない隣人から横断される次の頂点を選択する柔軟性を活用することにより、異なるトポロジカル順序を生成できます。なぜなら、それは、訪問されていない隣人がトラバースされる異なる順序を選択することによって、可能なすべてのトラバース(したがってトポロジカルな順序)を列挙する再帰的な手順であるためです。vuu

ここで、同様のラベルのために同じトラバーサルを繰り返すことを制限するために、同様のラベルを持つの未訪問のネイバーを比較できます。トラバーサルが達したときに、同じ未訪問の隣人を持つ2つの頂点とを考えます。必ず最初にそれらのいずれかを選択すると、同じDFSツリーが生成されるため、いずれも回避できます。v1,v2,...,vkuvivju

これで、すべてのの近傍を比較すると、合計時間でオーバーヘッドが発生しますが、適切なデータを使用してより効率的に実行できます構造。v1,...,vkO(n2)O~(n)


ご回答有難うございます!ただし、最初の段落で提案した微調整が、多項式の多くのステップの後に別のトポロジカルソートラベルが生成されることを保証するのに十分な理由はわかりません。たとえば、すべての要素に同じラベルがある場合、列挙するトポロジカルソートラベルは1つだけですが、アルゴリズムがそれを認識して十分に速く終了する理由がわかりませんか?(別のポイント:「隣人」と言いますが、グラフはDAGです。「子」を意味しますか?)
a3nm

最初のパラの調整は、ラベルに関係なくすべての可能な順序を生成することです。同様のラベルの場合に順序を制限するために、それらが残りの未訪問のグラフに同様に接続されていると思われる場合、同じラベルの頂点を選択しないようにすることが重要です。したがって、それらは同じ位相順序を生成する同型の未訪問グラフを作成します。
sbzk

すべてのラベルが同じ場合は些細なケースですが、そうでない場合は、単一の異なるラベルでも多くの異なる順序につながる可能性があります。計算を最小限に抑える方法は、同形の未訪問グラフの処理を回避することです。私は、オーバーヘッドを保証しないかもしれないが、おそらく良い経験則を与えることができることに同意します。O(n2)
sbzk

説明してくれてありがとう。しかし、理論的な保証のないヒューリスティックではなく、すべての場合に適用される複雑さの多項式限界を探しています!:)
a3nm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.