Está en la página 1de 4

Tecnológico Nacional de México

Instituto Tecnológico de Mexicali

Unidad 4
Optimización de Procesos

Trabajo:
Programación dinámica

Docente:
Marco Aurelio Vázquez Grajeda

Alumno:
Moreno Campos Karla Judith
18490895

02 de junio de 2022
Programación dinámica y cuál es su utilidad
Es un modelo de algoritmo que resuelve un problema complejo dividiéndolo en
subproblemas, almacenando los resultados de los mismos para así evitar tener que
volver a calcular esos resultados. Esta programación se utiliza cuando se tienen
problemas que se pueden dividir en subproblemas similares, de modo que sus
resultados puedan ser reutilizados. En su
gran mayoría, esta programación se utiliza
para la optimización. Antes de resolver el
subproblema disponible, el algoritmo
dinámico intentará examinar los resultados
de los subproblemas previamente resueltos.
Las soluciones de los subproblemas se
combinan para así lograr la mejor solución.
En lugar de calcular el mismo subproblema
una y otra vez, se podrá almacenar su
solución en alguna memoria, al encontrarse
por primera vez con este subproblema. Cuando el mismo aparezca nuevamente
durante la solución de otro subproblema, se tomará la solución ya almacenada en la
memoria.
Características de la programación dinámica.
Subestructura óptima
Esta característica expresa que un problema de
optimización se puede resolver al combinar las
soluciones óptimas de los problemas secundarios
que lo conforman. Estas subestructuras óptimas se
describen mediante la recursividad.
Subproblemas sobrepuestos
El espacio de los subproblemas debe ser pequeño.
Es decir, cualquier algoritmo recursivo que
resuelva un problema deberá resolver los mismos
subproblemas una y otra vez, en lugar de generar
nuevos subproblemas.
Enfoque de arriba hacia abajo
Si la solución a cualquier problema se puede formular recursivamente usando para
ello la solución de sus subproblemas, y si estos subproblemas se superponen,
entonces las soluciones a los subproblemas se podrán memorizar o almacenar
fácilmente en una tabla.

Aplicaciones
La programación dinámica es un método eficaz para resolver problemas que de otro
modo podrían parecer extremadamente difíciles de resolver en un tiempo razonable.
Los algoritmos basados en el paradigma de programación dinámica se utilizan en
muchas áreas de las ciencias, incluyendo muchos ejemplos en inteligencia artificial,
desde la resolución de problemas de planificación hasta el reconocimiento de voz.
Enfoque ascendente
Luego que se formula de forma recursiva la solución de un problema en términos de
sus subproblemas, se podrá intentar reformular el problema de manera ascendente:
primero se intentarán resolver los subproblemas y usar sus soluciones para llegar a
soluciones a los subproblemas más grandes.
Comparación con otras técnicas
Una pertenencia significativa de un problema que se
pueda resolver mediante programación dinámica es
que debería tener subproblemas sobrepuestos. Esto
es lo que distingue a la programación dinámica de
la técnica de dividir y conquistar, donde no es
necesario almacenar los valores más simples.
Referencias
1. Alex Allain (2020). Dynamic Programming in C++. C Programming.
Tomado de: cprogramming.com.
2. After Academy (2020). Idea of Dynamic Programming. Tomado de:
afteracademy.com.
3. Aniruddha Chaudhari (2019). Dynamic Programming and Recursion
Difference, Advantages with Example. CSE Stack. Tomado de: csestack.org.
4. Ramírez, C. (2021, February 23). Programación Dinámica y sus
Características. Blogspot.com; Blogger.
https://celinaramirezl.blogspot.com/2021/02/programacion-dinamica-y-
sus.html

También podría gustarte