Deje que sea un gráfico acíclico dirigido , y dejar que λ ser una función de etiquetado mapear cada vértice v ∈ V a una etiqueta λ ( v ) en algunos finito alfabeto L . Escribiendo n : = | V | , un tipo topológico de G es una biyección σ de { 1 , ... , n } a V (es decir, un ordenamiento de en una secuencia) tal que siempre que ( v , v ′ ) ∈ E entonces σ - 1 ( v ) < σ - 1 ( v ′ ) (es decir, si hay un borde de v a v ′, entonces v ocurre antes de v ′ en la secuencia) Laetiquetade σ es la palabra σ ( 1 ) ⋯ σ ( n ) en L .
Dado , me gustaría enumerar las etiquetas de los tipos topológicos de G de manera eficiente. ¿Cuál es la complejidad de enumerar las etiquetas de los tipos topológicos? Por supuesto, como puede haber exponencialmente muchos, quiero estudiar la complejidad en función del tamaño de la salida, o en términos de retraso. En particular, ¿se puede realizar la enumeración con retraso polinómico? (¿o incluso un retraso constante?)
En el caso donde todos los vértices de llevan etiquetas distintas (o, de manera equivalente, los vértices están etiquetados { 1 , ... , n } por sí mismos), sé que las etiquetas se pueden enumerar en tiempo amortizado constante, por este resultado al enumerar extensiones lineales de posets (que es lo mismo que enumerar tipos topológicos de un DAG). Sin embargo, cuando los vértices se etiquetan de forma arbitraria, podría darse el caso de que una gran cantidad de tipos topológicos tengan la misma etiqueta, por lo que no puede enumerar los tipos topológicos de G y calcular sus etiquetas para obtener una manera eficiente de enumerar las etiquetas. . En terminología poset, el DAG etiquetado ( G , puede verse como unposetetiquetado, y no pude encontrar resultados de enumeración sobre esos.
Ya conozco la dureza de algunos problemas relacionados gracias a las respuestas a mis otras preguntas aquí. En particular, sé que encontrar la etiqueta lexicográficamente mínima es NP-hard . También sé que decidir si una etiqueta determinada puede lograrse mediante algún tipo de topología es NP-duro (debido a la dureza de este problema : dada una secuencia de etiqueta candidata , pida un tipo topológico de G donde cada vértice debe ocurrir en una posición donde aparece la etiqueta correcta en s) Sin embargo, no creo que nada de esto implique dureza para la enumeración, ya que puede enumerar en el orden que desee (no necesariamente lexicográfico), y un algoritmo de enumeración no puede usarse para decidir de manera eficiente si una etiqueta es alcanzable, incluso con retraso constante (ya que puede haber exponencialmente muchas secuencias para enumerar primero).
Tenga en cuenta que, obviamente, es fácil enumerar una primera etiqueta (simplemente tome cualquier tipo de topología). Para enumerar otra etiqueta que s , puede proceder imponiendo que algún elemento v de V se enumere en alguna posición i ∈ { 1 , ... , n } donde s i ≠ λ ( v ) : pruebe cada v e i , y verifique si G tiene un tipo topológico donde v está en la posición i, que claramente se puede hacer en PTIME. Pero a medida que genera más y más etiquetas, no estoy seguro de cómo generalizar este enfoque.