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