¿Cuál es la aplicación principal de la programación dinámica?
El principio básico de la programación dinámica es la subestructura óptima y los subproblemas superpuestos.
Subestructura óptima: la programación dinámica divide los problemas grandes en problemas pequeños y aprovecha las propiedades de la subestructura óptima, es decir, la solución óptima global se puede construir a través de soluciones óptimas locales. En otras palabras, un problema tiene una subestructura óptima si su solución óptima puede derivarse de las soluciones óptimas de sus subproblemas.
Ejemplos de programación dinámica
Subproblemas superpuestos: en la programación dinámica, la resolución de problemas a menudo implica cálculos repetidos de los mismos subproblemas. Para evitar cálculos repetidos, la programación dinámica utiliza tecnología de memorización o crea una tabla (generalmente una matriz bidimensional) para almacenar las soluciones a los subproblemas calculados para que puedan buscarse directamente cuando sea necesario para evitar cálculos repetidos.
Dividir subproblemas
Basada en los principios de subestructura óptima y subproblemas superpuestos, la programación dinámica puede descomponer problemas complejos en una serie de subproblemas y resolverlos gradualmente. subproblemas. Solución óptima, y finalmente obtener la solución óptima al problema original. Al almacenar soluciones a subproblemas que ya se han calculado, se pueden evitar cálculos repetidos y se puede mejorar la eficiencia del algoritmo.
Por lo tanto, el núcleo de la programación dinámica es simplificar problemas complejos en subproblemas solucionables encontrando subestructuras óptimas y utilizando las características de subproblemas superpuestos, y resolver el problema original combinando las soluciones de subproblemas. -problemas. La solución óptima al problema.