¿Cómo los algoritmos de programación dinámica son mejores que otros algoritmos?

La respuesta fácil es que a veces no pueden ser, y otras veces pueden ser. Depende mucho del problema que intente resolver.

Normalmente, los tipos de problemas a los que aplica la programación dinámica son aquellos en los que se cumple el principio de optimización . Normalmente compara los algoritmos de divide y vencerás con la programación dinámica porque el primero es de arriba hacia abajo en la forma en que resuelve un problema versus la programación dinámica que crea una solución de abajo hacia arriba.

Hay muchas veces que las soluciones de programación dinámica no son favorables, pero a menudo pertenecen al conjunto de algoritmos que son más eficientes (pero tienen compensaciones, por ejemplo, uso de espacio exponencial). Los algoritmos de programación dinámica combinan soluciones óptimas de subinstancias para obtener el óptimo global. Entonces, con esa divulgación inicial, aquí hay algunos beneficios de las soluciones de programación dinámica.

  • Fácil de implementar (a veces, muchas veces solo se completa una tabla y se retrocede a través de la tabla para construir la solución).
  • Una vez que tiene la relación de recurrencia que captura el valor de la solución óptima, el algoritmo se vuelve obvio.
  • A diferencia de los algoritmos de divide y vencerás para el mismo problema, reducirá la cantidad de pasos repetitivos de trabajo. Ese es fácilmente su beneficio más importante porque generalmente conduce a un algoritmo más eficiente. Solo tenga en cuenta que no puede usar la programación dinámica para todos los problemas.

¡Espero que esto ayude!

DP no es mejor que otros algoritmos, son solo un método para resolver ciertos tipos de problemas. DP no es una solución general para resolver todos los problemas. Tu pregunta en realidad no tiene sentido. En términos más simples, DP es principalmente recursividad con otra estructura de datos (es decir, matriz, tabla hash, etc.) para realizar un seguimiento de los cálculos anteriores.

La programación dinámica es buena para resolver problemas que se pueden dividir entre varias decisiones, produciendo subproblemas similares con un alcance más pequeño, y elegir el mejor (o suma, lo que sea).

La programación dinámica es una forma de resolver problemas. Si miramos esta pregunta desde otra perspectiva, se puede interpretar como “¿cómo un martillo es mejor que otras herramientas?”

en comparación con otras técnicas comparables, son mejores con la única pero profunda razón de que la solución óptima está garantizada.