En teoría de grafos e informática teórica , el problema del camino más largo es el problema de encontrar un camino simple de longitud máxima en un gráfico dado . Un camino se llama simple si no tiene vértices repetidos ; La longitud de un camino puede medirse por su número de aristas o (en gráficos ponderados ) por la suma de los pesos de sus aristas. En contraste con el problema del camino más corto , que se puede resolver en tiempo polinómico en gráficos sin ciclos de peso negativo, el problema del camino más largo es NP-difícil y la versión de decisión del problema, que pregunta si existe un camino de al menos algunos datos dados. longitud, es NP-completo . Esto significa que el problema de decisión no se puede resolver en tiempo polinomial para gráficas arbitrarias a menos que P = NP . También se conocen resultados de dureza más fuertes, lo que demuestra que es difícil de aproximar . Sin embargo, tiene una solución de tiempo lineal para gráficos acíclicos dirigidos , que tiene aplicaciones importantes para encontrar la ruta crítica en problemas de programación.
La dureza NP del problema del camino más largo no ponderado se puede mostrar usando una reducción del problema del camino hamiltoniano : un gráfico G tiene un camino hamiltoniano si y sólo si su camino más largo 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 gráfico G y un número k ; el resultado deseado es sí si G contiene una ruta de k o más aristas, y no en caso contrario. [1]
Si el problema del camino más largo pudiera resolverse en tiempo polinómico, podría usarse para resolver este problema de decisión, encontrando el camino más largo y luego comparando su longitud con el número k . Por lo tanto, el problema del camino más largo es NP-difícil. La pregunta "¿existe una ruta simple en un gráfico dado con al menos k aristas?" es NP-completa. [2]
En gráficos completos ponderados con pesos de borde no negativos, el problema del camino más largo ponderado es el mismo que el problema del camino del viajante , porque el camino más largo siempre incluye todos los vértices. [3]
Un camino más largo entre dos vértices s y t dados en un gráfico ponderado G es lo mismo que un camino más corto en un gráfico - 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 gráficos, esta transformación no es útil porque crea ciclos de longitud negativa en − G. Pero si G es un gráfico 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 las rutas más cortas en − G , que también es un gráfico acíclico dirigido (DAG). gráfico acíclico. [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 determinado, 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 en Por aquí.
Esto equivale a ejecutar el algoritmo de ruta más corta en − G .
El método de 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 hitos del proyecto y los bordes representan actividades que deben realizarse después de un hito y antes de otro; cada borde se pondera según una estimación de la cantidad de tiempo que tardará en completarse la actividad correspondiente. En dicho gráfico, el camino más largo desde el primer hito hasta el último es el camino crítico, que describe el tiempo total para completar el proyecto. [4]
Las rutas más largas de 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 de la ruta más larga 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 del camino más largo en gráficos no ponderados y no dirigidos "es notorio por la dificultad de comprender su dureza de aproximación". [6] El mejor algoritmo de aproximación de tiempo polinomial conocido para este caso logra sólo 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 cuasipolinomial ; 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 gráficos no ponderados pero dirigidos, se conocen fuertes resultados de inaproximabilidad. Para cada uno, el problema no se puede aproximar dentro de un factor de a menos que P = NP, y con supuestos de teoría de la 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 relación de aproximación de sólo . [9]
El problema de la ruta más larga es manejable 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 del camino), 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 una sola exponencial. [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 está parametrizado por el ancho del árbol del gráfico.
Para gráficos de ancho de camarilla acotado , la ruta más larga 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 la camarilla del gráfico, por lo que este algoritmo no es manejable con parámetros fijos. El problema de la ruta más larga, parametrizado por el ancho de camarilla, 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 en 2002 se publicó una prueba formal de este algoritmo. [15] Además, se puede calcular un camino más largo en tiempo polinómico 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 gráficos de intervalo , se conoce un algoritmo de tiempo que utiliza un enfoque de programación dinámica. [19] Este enfoque de programación dinámica se ha aprovechado para obtener algoritmos de tiempo polinomial en las clases mayores de gráficos de arco circular [20] y de gráficos de co-comparabilidad (es decir, de los complementos de los gráficos de comparabilidad , que también contienen gráficos de permutación ), [21] ambos tienen el mismo tiempo de ejecución . Este último algoritmo se basa en propiedades especiales del ordenamiento de vértices de la primera búsqueda lexicográfica en profundidad (LDFS) [22] de gráficos de co-comparabilidad. Para los gráficos de co-comparabilidad también se conoce un algoritmo alternativo de tiempo polinomial con mayor tiempo de ejecución , que se basa en el diagrama de Hasse del conjunto parcialmente ordenado definido por el complemento del gráfico de co-comparabilidad de entrada. [23]
Además, el problema de la ruta más larga se puede resolver en tiempo polinómico en cualquier clase de gráficos con ancho de árbol acotado o ancho de camarilla acotado, como los gráficos hereditarios de distancia . Finalmente, es claramente NP-duro en todas las clases de gráficos en las que el problema de la ruta hamiltoniana es NP-duro, como en gráficos divididos , gráficos circulares y gráficos planos .
Un modelo simple de gráfico acíclico dirigido es el modelo de Price , desarrollado por Derek J. de Solla Price para representar redes de citas . Esto es lo suficientemente simple como para permitir encontrar resultados analíticos para algunas propiedades. Por ejemplo, la longitud de la ruta más larga, desde el enésimo nodo agregado a la red hasta el primer nodo de la red, escala como [24] .