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.
- Dadas las coordenadas de 3 puntos, cómo encontrar el centro del círculo formado por estos puntos con alta precisión. Para lograr una alta precisión, debe haber algún proceso de división. ¿Hay alguna forma de hacerlo?
- ¿Escribir un programa de CA para convertir un número en palabras de moneda?
- ¿Cuál es el uso práctico de los árboles de búsqueda binarios?
- Cómo instalar accesorios de compresión en tubos de plástico
- ¿Cuál es el mejor algoritmo para ocultar datos en texto?
- 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!