¿Qué tan difícil es contar el número de rutas simples entre dos nodos en un gráfico dirigido?


29

Hay un algoritmo polinomial fácil para decidir si hay una ruta entre dos nodos en un gráfico dirigido (solo haga un recorrido de rutina del gráfico con, por ejemplo, búsqueda de profundidad primero).

Sin embargo, parece que, sorprendentemente, el problema se vuelve mucho más difícil si en lugar de probar la existencia queremos contar el número de caminos.

Si permitimos que las rutas reutilicen los vértices, entonces hay una solución de programación dinámica para encontrar el número de rutas de s a t con n aristas. Sin embargo, si solo permitimos rutas simples, que no reutilizan vértices, la única solución que se me ocurre es la enumeración de la fuerza bruta de las rutas , algo que tiene una complejidad de tiempo exponencial.

Entonces pregunto,

  • ¿Es difícil contar el número de caminos simples entre dos vértices?
  • Si es así, ¿es una especie de NP completo? (Digo un poco porque técnicamente no es un problema de decisión ...)
  • ¿Hay otros problemas en P que tienen versiones de conteo difíciles como esa también? **

Por cierto, ahora sé la respuesta a esta pregunta, pero tengo curiosidad sobre qué tipo de respuesta obtendría si la preguntara cuando se me ocurrió por primera vez.
hugomg


@Suresh: Sé cómo codificar la búsqueda de fuerza bruta. Mi pregunta es si hay un algoritmo más eficiente. En cualquier caso, esta pregunta SO sería más similar e incluso incluye una respuesta mía, si está interesado en spoilers.
Hugomg

Respuestas:


18

La clase de complejidad más común asociada a los problemas de conteo es #P . Decidir si hay una ruta simple desde un nodo dado a otro está claramente en NP. Contarlos está entonces en #P.

n!

La respuesta a sus dos primeras dos preguntas es: sí, es difícil, es # P-completo (ref . ) .

El artículo de Wikipedia proporciona datos pertinentes: 1) los algoritmos probabilísticos son útiles para aproximar # P-funciones completas, y ese es el tipo de algoritmo utilizado para la aproximación en el artículo anterior. 2) Existen otros problemas fáciles con las versiones de conteo difíciles (# P-complete):

  • encontrar (lineal) versus contar todas las tareas que satisfacen una fórmula DNF o una instancia de 2-SAT
  • encontrar (lineal) versus contar clasificaciones topológicas
  • encontrar (O (VE)) vs. contar la coincidencia perfecta en gráficos bipartitos

Ya sabe que si elimina la restricción "ruta simple", el problema cae en P (bueno, debe vincular la longitud de las rutas por un polinomio del tamaño del gráfico o dar el límite en unario)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.