頂点ラベル付きDAGのトポロジカルソートの列挙
レッツあること、非循環有向グラフ、とlet各頂点マッピングラベル付け機能もラベルにある有限アルファベットで。書く、トポロジカルソートの全単射であるからに(すなわち、の順序シーケンスで)ようにするたびに次いで(つまり、からへのエッジがある場合G=(V,E)G=(V,E)G = (V, E)λλ\lambdav∈Vv∈Vv \in Vλ(v)λ(v)\lambda(v)LLLn:=|V|n:=|V|n := |V|GGGσσ\sigma{1,…,n}{1,…,n}\{1, \ldots, n\}VVVVVV(v,v′)∈E(v,v′)∈E(v, v') \in Eσ−1(v)<σ−1(v′)σ−1(v)<σ−1(v′)\sigma^{-1}(v) < \sigma^{-1}(v')vvvv′v′v'その後、はシーケンスの前に出現します)。のラベルは、の単語です。vvvv′v′v'σσ\sigmaσ(1)⋯σ(n)σ(1)⋯σ(n)\sigma(1) \cdots \sigma(n)LnLnL^n 与えられた場合、トポロジカルなラベルを効率的に列挙したいと思います。トポロジカルソートのラベルを列挙する複雑さは何ですか?もちろん、指数関数的に多くなる可能性があるため、出力のサイズの関数として、または遅延の観点から複雑さを調べたいと思います。特に、列挙は多項式遅延で実行できますか?(または一定の遅延さえ?)(G,λ)(G,λ)(G, \lambda)GGG 全ての頂点場合には異なるラベルキャリー(同等または、頂点がある自体によって標識)、私は、ラベルが一定で列挙することができることを知っていることにより、時間を償却この結果にposetsの線形拡張を列挙する(これはDAGのトポロジカルな種類を列挙するのと同じことです)。ただし、頂点に任意のラベルが付けられている場合、非常に多くのトポロジカルソートが同じラベルを持っている可能性があるため、トポロジカルソートを列挙し、ラベルを計算してラベルを列挙する効率的な方法を取得することはできません。posetの用語では、ラベル付きDAGはラベル付きとして見ることができますGGG{1,…,n}{1,…,n}\{1, \ldots, n\}GGG(G,λ)(G,λ)(G, \lambda) そして、それらに関する列挙結果を見つけることができませんでした。 ここでの他の質問への回答のおかげで、いくつかの関連する問題の難しさをすでに知っています。特に、辞書編集的に最小限のラベルを見つけることはNPハードであることを知っています。また、特定のラベルが何らかのトポロジカルソートによって達成できるかどうかを決定するのがNP困難であることも知っています(この問題の難易度から:候補ラベルシーケンス与えられた場合、各頂点が位置で発生しなければならないトポロジカルソート求めます正しいラベルが現れる場所sssGGGsss)。しかし、これは列挙の難しさを意味するとは思いません。好きな順序で列挙することができます(必ずしも辞書式ではありません)。一定の遅延(最初に列挙するべき指数関数的に多くのシーケンスがある場合があるため)。 最初のラベルを列挙するのは明らかに簡単であることに注意してください(トポロジカルな並べ替えを行うだけです)。以外別のラベルを列挙するには、要素が位置で列挙されるようにしますここで、:すべてのそして、、そしてかどうかを確認トポロジカルソートがある位置にある明確PTIMEで行うことができ、。しかし、より多くのラベルを出力するにつれて、このアプローチを一般化する方法がわかりません。ssssssvvvVVVi∈{1,…,n}i∈{1,…,n}i \in \{1, \ldots, n\}si≠λ(v)si≠λ(v)s_i \neq \lambda(v)vvviiiGGGvvviii