枚举顶点标记DAG的拓扑种类
令是有向无环图,令是将每个顶点映射到某个有限字母的标签的标记函数。写中,拓扑排序的是一个双射从至(即,的排序中的序列),以使得无论何时然后(即,如果存在从到的边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 在所有顶点都带有不同标签的情况下(或者,等价地,顶点被自己标记为),我知道标签可以在固定的摊销时间内枚举,其结果是枚举位姿的线性扩展(与枚举DAG的拓扑种类相同)。但是,当任意标注顶点时,可能会出现大量拓扑类别具有相同标签的情况,因此,您不能仅枚举拓扑类别并计算其标签以获得一种枚举标签的有效方法。用poset术语,标记的DAG可以看作是标记的GGG{1,…,n}{1,…,n}\{1, \ldots, n\}GGG(G,λ)(G,λ)(G, \lambda) 姿态,而我找不到这些的枚举结果。 由于这里有其他问题的答案,我已经知道一些相关问题的难度。特别是,我知道在字典上找到最小的标签是NP-hard。我也知道,确定给定的标签是否可以通过某种拓扑排序实现是NP难的(从这个问题的难度:给定候选标签序列,求出的拓扑排序,其中每个顶点必须出现在某个位置正确的标签出现在sssGGGsss)。但是,我不认为这会暗示枚举的难度,因为您可以按自己喜欢的任何顺序枚举(不一定是字典顺序),并且枚举算法无法有效地确定标签是否可以实现,甚至具有恒定的延迟(因为可能首先要成指数地列举许多序列)。 请注意,枚举第一个标签显然很容易(只要进行任何拓扑排序即可)。要列举的另一个标签比,您可以通过施加一些元素进行的得到一些位置列举其中尝试每个:和,并检查是否具有处于位置的拓扑排序,这可以在PTIME中清楚地完成。但是随着您输出越来越多的标签,我不确定如何概括这种方法。ssssssvvvVVVi∈{1,…,n}i∈{1,…,n}i \in \{1, \ldots, n\}si≠λ(v)si≠λ(v)s_i \neq \lambda(v)vvvģ v 我iiiGGGvvviii