Este documento describe el algoritmo de programación dinámica. Explica que la programación dinámica evita calcular dos veces la misma información al almacenar resultados parciales. Luego, detalla que la programación dinámica se aplica a problemas de optimización que tienen subestructura óptima y superposición de subproblemas. Finalmente, provee un ejemplo de cómo usar programación dinámica para encontrar el camino más corto entre dos puntos.