842 Shares 7713 views

La programación dinámica, los principios básicos

Para seleccionar la solución óptima al realizar las tareas de programación a veces son necesarias para ordenar grandes cantidades de combinaciones de datos que carga la memoria de la computadora personal. Tales métodos incluyen, por ejemplo, el método de programación de "divide y vencerás". En este caso el algoritmo proporciona problema de separación en subtareas más pequeñas separadas. Este método sólo es aplicable en aquellos casos en los que las pequeñas subtareas son independientes entre sí. Para evitar la realización de un trabajo innecesario si interdependientes sub-tareas, se utiliza el método de programación dinámica propuesta estadounidense R.Bellmanom en los años 50.

el método

La programación dinámica es determinar la solución óptima al problema de dimensión n, n compartiendo sus etapas separadas. Cada uno de ellos es un sub-tarea con respecto a una variable.

La principal ventaja de este enfoque se puede considerar que los desarrolladores involucrados en el problema de optimización unidimensional subtareas en lugar de un problema de n-dimensional, y nuestro objetivo principal va a "abajo hacia arriba".

Es recomendable la aplicación de programación dinámica en aquellos casos en que se interrelacionan los sub-tareas, es decir, compartir módulos comunes. El algoritmo proporciona la decisión de cada una de las subtareas de una vez, y las respuestas de ahorro se realiza en una mesa especial. Esto hace que sea posible no calcular una respuesta cuando se reunieron de nuevo con la misma sub-tareas.

tarea de programación dinámica resuelve el problema de optimización. El autor de este método fue formulado por R. Bellman principio de optimalidad: lo que es el estado inicial de cada uno de los pasos y la solución se define en este paso, todos de los siguientes para elegir la óptima en relación con el estado, que recibe el sistema al final de la etapa.

El método mejora el desempeño de las tareas que se resuelven por medio de variantes o recursividad.

algoritmo de tarea de construcción

algoritmo de programación dinámica consiste en la construcción de este tipo de tareas que la tarea de modo se divide en dos o más subtareas a su solución se compone de una solución óptima para todas las subtareas, que incluye. Además, es necesario escribir una relación de recurrencia, y el cálculo de los valores de los parámetros óptimos para la tarea en su conjunto.

A veces, en la tercera etapa es para memorizar información de fondo sobre el progreso de cada tarea. Esto se llama la carrera de retorno.

método de aplicación

La programación dinámica se aplica cuando hay dos rasgos característicos:

  • óptima para subtareas;
  • presencia en el problema de subproblemas superpuestos.

La solución del problema de optimización de la programación dinámica, primero tiene que describir la estructura de la solución. La tarea tiene que ser óptimo si la solución se compone de las mejores decisiones de sus subtareas. En este caso, es aconsejable el uso de programación dinámica.

La segunda propiedad del problema, esencial en este método, – un pequeño número de sub-tareas. solución recursiva del problema utilizando las mismas se superponen sub-problemas, el número de los cuales depende del tamaño de la información inicial. La respuesta se almacena en una mesa especial, el programa permite ahorrar tiempo mediante el uso de estos datos.

Especialmente eficaz es el uso de programación dinámica cuando la tarea es esencialmente necesaria para tomar decisiones en etapas. Por ejemplo, considere un ejemplo sencillo del problema de la sustitución y reparación de equipos. Digamos que en la fábrica de máquinas de fundición para la producción de neumáticos, al mismo tiempo hacer que el neumático en dos formas diferentes. En el caso de que una de las formas falla, es necesario desmontar la máquina. Es comprensible que a veces más rentable para reemplazar y una segunda forma con el fin de desmontar la máquina en caso y esta forma será inviable en la siguiente etapa. Sobre todo porque es más fácil de reemplazar tanto la forma de trabajo antes de que empiecen a fallar. método de programación dinámica determina la mejor estrategia en la materia de la sustitución de estas formas, teniendo en cuenta todos los factores: los beneficios de formas continuas de la explotación, la pérdida de tiempo de inactividad de la máquina, el costo de los neumáticos desechados y más.