En teoría de grafos y ciencias de la computación teóricas , el problema de la ruta más larga es el problema de encontrar una ruta simple de longitud máxima en un grafo dado . Una ruta se llama simple si no tiene vértices repetidos ; la longitud de una ruta puede medirse por su número de aristas o (en grafos ponderados ) por la suma de los pesos de sus aristas. A diferencia del problema de la ruta más corta , que se puede resolver en tiempo polinomial en grafos sin ciclos de peso negativo, el problema de la ruta más larga es NP-duro y la versión de decisión del problema, que pregunta si existe una ruta de al menos una longitud dada, es NP-completa . Esto significa que el problema de decisión no se puede resolver en tiempo polinomial para grafos arbitrarios a menos que P = NP . También se conocen resultados de dureza más fuertes que muestran que es difícil de aproximar . Sin embargo, tiene una solución de tiempo lineal para grafos acíclicos dirigidos , lo que tiene aplicaciones importantes en la búsqueda de la ruta crítica en problemas de programación.
La NP-dureza del problema de la ruta más larga no ponderada se puede mostrar usando una reducción del problema de la ruta hamiltoniana : un grafo G tiene una ruta hamiltoniana si y solo si su ruta más larga tiene una longitud n − 1, donde n es el número de vértices en G. Debido a que el problema de la ruta hamiltoniana es NP-completo, esta reducción muestra que la versión de decisión del problema de la ruta más larga también es NP-completa. En este problema de decisión, la entrada es un grafo G y un número k ; la salida deseada es sí si G contiene una ruta de k o más aristas, y no en caso contrario. [1]
Si el problema de la ruta más larga se pudiera resolver en tiempo polinomial, se podría utilizar para resolver este problema de decisión, encontrando una ruta más larga y luego comparando su longitud con el número k . Por lo tanto, el problema de la ruta más larga es NP-completo. La pregunta "¿existe una ruta simple en un grafo dado con al menos k aristas?" es NP-completa. [2]
En gráficos completos ponderados con pesos de aristas no negativos, el problema de la ruta más larga ponderada es el mismo que el problema de la ruta del viajante , porque la ruta más larga siempre incluye todos los vértices. [3]
Un camino más largo entre dos vértices dados s y t en un grafo ponderado G es lo mismo que un camino más corto en un grafo − G derivado de G cambiando cada peso a su negación. Por lo tanto, si los caminos más cortos se pueden encontrar en − G , entonces los caminos más largos también se pueden encontrar en G . [4]
Para la mayoría de los grafos, esta transformación no es útil porque crea ciclos de longitud negativa en − G . Pero si G es un grafo acíclico dirigido (DAG), entonces no se pueden crear ciclos negativos, y se puede encontrar una ruta más larga en G en tiempo lineal aplicando un algoritmo de tiempo lineal para rutas más cortas en − G , que también es un grafo acíclico dirigido. [4] Para un DAG, la ruta más larga desde un vértice de origen a todos los demás vértices se puede obtener ejecutando el algoritmo de ruta más corta en − G .
De manera similar, para cada vértice v en un DAG dado, la longitud del camino más largo que termina en v se puede obtener mediante los siguientes pasos:
Una vez hecho esto, se puede obtener la ruta más larga en todo el DAG comenzando en el vértice v con el valor registrado más grande, luego retrocediendo repetidamente hasta su vecino entrante con el valor registrado más grande e invirtiendo la secuencia de vértices encontrada de esta manera.
Esto es equivalente a ejecutar el algoritmo de ruta más corta en − G .
El método de la ruta crítica para programar un conjunto de actividades implica la construcción de un gráfico acíclico dirigido en el que los vértices representan los hitos del proyecto y las aristas representan las actividades que deben realizarse después de un hito y antes de otro; cada arista se pondera con una estimación del tiempo que tomará completar la actividad correspondiente. En un gráfico de este tipo, la ruta más larga desde el primer hito hasta el último es la ruta crítica, que describe el tiempo total para completar el proyecto. [4]
Los caminos más largos de los gráficos acíclicos dirigidos también se pueden aplicar en el dibujo de gráficos en capas : asignar cada vértice v de un gráfico acíclico dirigido G a la capa cuyo número es la longitud del camino más largo que termina en v da como resultado una asignación de capa para G con el mínimo número posible de capas. [5]
Björklund, Husfeldt y Khanna (2004) escriben que el problema de la ruta más larga en grafos no dirigidos y no ponderados "es conocido por la dificultad de comprender su dificultad de aproximación". [6] El mejor algoritmo de aproximación de tiempo polinomial conocido para este caso logra solo una relación de aproximación muy débil, . [7] Para todos,No es posible aproximar el camino más largo dentro de un factor de a menos que NP esté contenido dentro de un tiempo determinista cuasi-polinomial ; sin embargo, existe una gran brecha entre este resultado de inaproximabilidad y los algoritmos de aproximación conocidos para este problema. [8]
En el caso de grafos no ponderados pero dirigidos, se conocen resultados de inaproximabilidad fuertes. Para cada , el problema no se puede aproximar dentro de un factor de a menos que P = NP, y con supuestos teóricos de complejidad más fuertes, no se puede aproximar dentro de un factor de . [6] La técnica de codificación de colores se puede utilizar para encontrar caminos de longitud logarítmica, si existen, pero esto da una razón de aproximación de solo . [9]
El problema de la ruta más larga se puede resolver con parámetros fijos cuando se parametriza por la longitud de la ruta. Por ejemplo, se puede resolver en tiempo lineal en el tamaño del gráfico de entrada (pero exponencial en la longitud de la ruta), mediante un algoritmo que realiza los siguientes pasos:
Dado que la ruta de salida tiene una longitud al menos tan grande como , el tiempo de ejecución también está limitado por , donde es la longitud de la ruta más larga. [10] Usando codificación de colores, la dependencia de la longitud de la ruta se puede reducir a exponencial simple. [9] [11] [12] [13] Una técnica de programación dinámica similar muestra que el problema de la ruta más larga también es manejable con parámetros fijos cuando se parametriza mediante el ancho de árbol del gráfico.
Para gráficos con un ancho de clique acotado , el camino más largo también se puede resolver mediante un algoritmo de programación dinámica de tiempo polinomial. Sin embargo, el exponente del polinomio depende del ancho de clique del gráfico, por lo que este algoritmo no es manejable con parámetros fijos. El problema del camino más largo, parametrizado por el ancho de clique, es difícil para la clase de complejidad parametrizada , lo que demuestra que es poco probable que exista un algoritmo manejable con parámetros fijos. [14]
Edsger Dijkstra propuso un algoritmo de tiempo lineal para encontrar el camino más largo en un árbol alrededor de 1960, mientras que una prueba formal de este algoritmo se publicó en 2002. [15] Además, se puede calcular un camino más largo en tiempo polinomial en árboles ponderados, en gráficos de bloques , en cactus , [16] en gráficos de permutación bipartita , [17] y en gráficos ptolemaicos . [18]
Para la clase de grafos de intervalo , se conoce un algoritmo de tiempo polinomial, que utiliza un enfoque de programación dinámica. [19] Este enfoque de programación dinámica se ha explotado para obtener algoritmos de tiempo polinomial en las clases mayores de grafos de arco circular [20] y de grafos de co-comparabilidad (es decir, de los complementos de grafos de comparabilidad , que también contienen grafos de permutación ), [21] ambos con el mismo tiempo de ejecución . El último algoritmo se basa en propiedades especiales del ordenamiento de vértices de búsqueda en profundidad lexicográfica (LDFS) [22] de grafos de co-comparabilidad. Para grafos de co-comparabilidad también se conoce un algoritmo de tiempo polinomial alternativo con mayor tiempo de ejecución , que se basa en el diagrama de Hasse del conjunto parcialmente ordenado definido por el complemento del grafo de co-comparabilidad de entrada. [23]
Además, el problema de la ruta más larga se puede resolver en tiempo polinomial en cualquier clase de grafos con ancho de árbol acotado o ancho de camarilla acotado, como los grafos hereditarios de distancia . Finalmente, es claramente NP-hard en todas las clases de grafos en las que el problema de la ruta hamiltoniana es NP-hard, como en grafos divididos , grafos circulares y grafos planares .
Un modelo simple de un grafo acíclico dirigido es el modelo Price , desarrollado por Derek J. de Solla Price para representar redes de citas . Este es lo suficientemente simple como para permitir que se encuentren resultados analíticos para algunas propiedades. Por ejemplo, la longitud de la ruta más larga, desde el nodo n-ésimo agregado a la red hasta el primer nodo en la red, escala como [24] .