Editorial for Eren en Marley
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Solución:
Digamos que una ruta desde el nodo al nodo consiste de aristas, y tiene longitud . Su costo es exactamente
Consideremos dos rutas diferentes, de aristas, con longitudes y respectivamente. Como , tenemos:
Esto quiere decir, que para un fijo, basta con minimizar la longitud de la ruta de longitud desde 1 hasta . Llamemos a la menor longitud de una ruta de aristas.
¿Cómo computar ? Podemos usar programación dinámica.
: menor distancia desde hasta usando exactamente aristas.
Luego .
Ahora, consideremos dos , con .
Entonces podemos considerar para fijo, el costo de la ruta óptima de aristas como una función lineal .
De estas líneas , solo queremos las que podrían ser óptimas para algún ; es decir los valores de , tal que existe algún , para el cual se cumple que para todo .
Estas son las líneas pertenecientes al Lower Hull (parte inferior del Convex Hull) del conjunto de líneas. Bueno, debemos quitar de este Hull, las líneas que solo son óptimas para ; pero esto es un pequeño detalle que puede ser manejado luego de computar el Lower Hull; mientras las dos líneas más a la izquierda en el Lower Hull se corten en un punto con , borramos la línea más a la izquierda.
Una vez que tenemos las líneas óptimas, lo que en realidad tenemos son los que son óptimos para algún par . Solo tenemos que reportar los nodos que son parte de alguna ruta de aristas, con longitud . Para hacer eso, haremos un DFS desde hasta llegar a , y llevaremos también . Es decir, llevaremos en el DFS el nodo en el que estamos y la cantidad de aristas (y queremos visitar los nodos que pertenecen a alguna ruta óptima con dicha cantidad de aristas desde hasta el nodo actual). Durante el DFS, si el estado actual es , entonces consideramos los vecinos de , y si , nos movemos al estado . Los nodos visitados durane el DFS son la solución.
Complejidad: Si es la cantidad de nodos del grafo, y es la cantidad de aristas, entonces una ruta consiste de a lo más aristas. La Dp entonces toma tiempo . El Convex Hull se puede hacer en tiempo ya que las líneas ya están ordenadas por pendientes. El DFS toma el mismo tiempo que la DP. La complejidad temporal final sería . La complejidad en memoria sería .
Tags:
- Grafos
- Programación Dinámica
- Convex Hull
Comments