Deixe ser um gráfico acíclico dirigido , e deixar λ ser uma função rotulagem mapeamento de cada vértice v ∈ V para uma etiqueta λ ( v ) em algum alfabeto finito L . Escrevendo n : = | V | , um tipo topológico de G é uma bijeção σ de { 1 , … , n } a V (ou seja, uma ordenação de em uma sequência) de modo que sempre que ( v , v ′ ) ∈ E então σ - 1 ( v ) < σ - 1 ( v ′ ) (ou seja, se houver uma aresta de v a v ′ , v ocorrerá antes de v ′ na sequência). Orótulode σ é a palavra σ ( 1 ) ⋯ σ ( n ) em L .
Dado , eu gostaria de enumerar os rótulos dos tipos topológicos de G com eficiência. Qual é a complexidade de enumerar os rótulos de tipos topológicos? É claro que, como pode haver muitos exponencialmente, quero estudar a complexidade em função do tamanho da saída ou em termos de atraso. Em particular, a enumeração pode ser realizada com atraso polinomial? (ou mesmo atraso constante?)
No caso em que todos os vértices de carregam rótulos distintos (ou, equivalentemente, os vértices são { 1 , … , n } rotulados por eles mesmos), eu sei que os rótulos podem ser enumerados em tempo amortizado constante, por esse resultado ao enumerar extensões lineares de posets (que é o mesmo que enumerar tipos topológicos de um DAG). No entanto, quando os vértices são rotulados arbitrariamente, pode ser que um número muito grande de tipos topológicos possua o mesmo rótulo, portanto, você não pode apenas enumerar tipos topológicos de G e calcular seus rótulos para obter uma maneira eficiente de enumerá-los. . Na terminologia de poset, o DAG rotulado ( G , pode ser visto como umposetrotuladoe não foi possível encontrar resultados de enumeração sobre eles.
Já conheço a dureza de alguns problemas relacionados, graças às respostas para minhas outras perguntas aqui. Em particular, eu sei que encontrar o rótulo lexicograficamente mínimo é difícil para o NP . Eu também sei que decidir se um determinado rótulo pode ser alcançado por algum tipo de topologia é NP-difícil (a partir da dureza deste problema : dada uma sequência de rótulo candidata , solicite um tipo topológico de G onde cada vértice deve ocorrer em uma posição onde o rótulo correto ocorre em s) No entanto, acho que nada disso implica em dureza para enumeração, pois você pode enumerar em qualquer ordem que desejar (não necessariamente lexicográfica), e um algoritmo de enumeração não pode ser usado para decidir com eficiência se um rótulo é viável, mesmo com atraso constante (pois pode haver exponencialmente muitas seqüências para enumerar primeiro).
, o que pode ser feito claramente em PTIME. Mas, como você produz cada vez mais rótulos, não tenho certeza de como generalizar essa abordagem.