¿Cuál es el mejor algoritmo para encontrar el camino con dos limitaciones?

Pruebe una modificación del algoritmo Bellman – Ford. Este algoritmo mantiene un estado de programación dinámica dp(max_edges, curr_node) donde dp indica el costo mínimo para llegar de curr_node al nodo de destino utilizando como máximo max_edges .

Hay dos posibilidades aquí:

  1. La ruta óptima utiliza max_edges - 1 bordes. Si este es el caso, dp(max_edges, curr_node) = dp(max_edges - 1, curr_node)
  2. La ruta óptima usa un borde saliente desde curr_node a otro nodo, luego usa max_edges - 1 para llegar desde ese nodo al objetivo. Probamos esto para todos los bordes salientes de curr_node . Por lo tanto, dp(max_edges, curr_node) = min(for all nodes w such that there is an edge curr_node --> w (dp(max_edges - 1, w) + weight(curr_node, w)))

La respuesta final para nuestra recurrencia dp(max_edges, curr_node) será el mínimo de las condiciones anteriores.

Ahora con los bordes e en una ruta simple, tenemos exactamente e + 1 nodos.

Busque investigación de operaciones. Para mí, esto parece un problema de optimización y hay un algoritmo de kruskall / cruskall. Búscalo en Wikipedia. Es sencillo. Básicamente, conecta nodos con el menor costo / distancia / … Y evita un círculo y evita conectar un ruido por segunda vez. Es difícil de explicar con palabras pero fácil de entender usando diagramas (Wikipedia). Para otras cosas de optimización, hay algoritmos como simplex, trampolín, regla del noroeste, etc. Puede encontrarlos en investigación de operaciones. Espero que ayude

More Interesting

¿Cuál es el beneficio de resolver un problema de HackerRank.com?

¿Existen tipos de programas de software que involucren matemáticas, pero que puedan resolver problemas cotidianos (es decir, no un motor de juego de física completo o un nuevo algoritmo criptográfico)?

Te dan n pilas con p monedas, y cada jugador elimina al menos 1 moneda. El número de monedas eliminadas por un jugador no puede ser eliminado por el otro. ¿Quién ganará?

¿Dónde se puede encontrar una implementación de árbol de sufijos de la subcadena común más larga?

¿Cuál es un problema que no se puede resolver en tiempo de EXP pero se puede resolver en tiempo de Tetración?

¿Por qué BFS no puede resolver todos los problemas de ruta más corta de una sola fuente?

¿Es posible determinar el valor máximo de puntos que se puede otorgar para una sola palabra Scrabble?

¿Cuáles son los algoritmos que se pueden usar en R para la predicción de datos categóricos?

¿Se ha encontrado alguna solución para los problemas de NP completo?

¿Por qué puede verse la secuencia de Fibonacci como un algoritmo dinámico y por qué tiene un mal tiempo de ejecución?

¿Por qué los desarrolladores front-end necesitan conocer estructuras de datos y algoritmos?

¿Qué es el desplazamiento binario y por qué lo usamos?

¿Cómo definirías la ordenación rápida en pocas palabras?

Además de la velocidad, ¿qué otras medidas de eficiencia se podrían usar en un entorno real?

Dado un componente fuertemente conectado, ¿puede determinar en tiempo lineal si la eliminación de un solo nodo convierte el SCC en un gráfico acíclico dirigido?