219 Shares 9210 views

La programmation dynamique, les principes de base

Pour sélectionner la solution optimale lors de l'exécution des tâches de programmation sont parfois nécessaires pour trier de grandes quantités de combinaisons de données qui charge la mémoire de l'ordinateur personnel. Ces méthodes comprennent, par exemple, la méthode de programmation de « diviser pour régner ». Dans ce cas, l'algorithme fournit problème de séparation en sous-tâches séparées plus petites. Cette méthode est applicable uniquement dans les cas où les petits sont indépendants les uns des sous-tâches. Pour éviter d'effectuer des travaux inutiles si les sous-tâches interdépendantes, utilise la méthode de programmation dynamique proposée R.Bellmanom américaine dans les années 50.

la méthode

La programmation dynamique est de déterminer la solution optimale au problème de dimension n, partageant ses n étapes distinctes. Chacun d'eux est une sous-tâche par rapport à une variable.

L'avantage principal de cette approche peut considérer que les développeurs impliqués dans le problème d'optimisation unidimensionnelle au lieu d'un sous-tâches problème de dimension n, et notre objectif principal va « bottom-up ».

Il est conseillé d'appliquer une programmation dynamique dans les cas où les sous-tâches sont liées entre elles, à savoir partager des modules communs. L'algorithme fournit la décision de chacun des sous-tâches une fois, et les réponses de la sauvegarde est effectuée dans une table spéciale. Cela permet de ne pas calculer une réponse lors de leur rencontre avec la même sous-tâche.

tâche de programmation dynamique résout le problème de l' optimisation. L'auteur de cette méthode a été formulée par R. Bellman principe d'optimalité: quel que soit l'état initial de chacune des étapes et la solution définie dans cette étape, toutes les conditions suivantes pour choisir la optimale par rapport à l'Etat, qui reçoit le système à la fin de l'étape.

La méthode améliore les performances des tâches résolues par des variantes ou récursivité.

algorithme de tâche de construction

algorithme de programmation dynamique implique la construction de ces tâches que la tâche est donc divisée en deux ou plusieurs sous-tâches à sa solution se compose d'une solution optimale à tous les sous-tâches, il comprend. En outre, il est nécessaire d'écrire une relation de récurrence, et le calcul des valeurs de paramètres optimaux pour la tâche dans son ensemble.

Parfois, au 3ème étape consiste à mémoriser des informations générales supplémentaires sur les progrès de chaque tâche. On appelle cela la course de retour.

Méthode d'application

La programmation dynamique est appliquée quand il y a deux caractéristiques:

  • optimale pour les sous-tâches;
  • présence dans le problème de sous-problèmes qui se chevauchent.

Résoudre le problème d'optimisation par programmation dynamique, vous devez d'abord décrire la structure de la solution. La tâche doit être optimale si la solution est composée des meilleures décisions de ses sous-tâches. Dans ce cas, il est conseillé d'utiliser la programmation dynamique.

La deuxième propriété du problème, essentiel dans cette méthode, – un petit nombre de sous-tâches. solution récursive du problème en utilisant les mêmes sous-problèmes qui se chevauchent, dont le nombre dépend de la taille de l'information initiale. La réponse est stockée dans une table spéciale, le programme permet d'économiser du temps en utilisant ces données.

Particulièrement efficace est l'utilisation de la programmation dynamique lorsque la tâche est essentiellement nécessaire de prendre des décisions par étapes. Par exemple, considérons un exemple simple du problème de remplacement et la réparation des équipements. Disons que sur l'usine de machine de coulée pour la production de pneus en même temps faire le pneu sous deux formes différentes. Dans le cas où l'une des formes échoue, il est nécessaire de démonter la machine. Il est compréhensible que, parfois plus rentable de remplacer et une seconde forme afin de démonter la machine en cas et ce formulaire seront irréalisables dans la prochaine étape. D'autant plus qu'il est plus facile de remplacer à la fois la forme de travail avant qu'ils ne commencent à échouer. méthode de programmation dynamique détermine la meilleure stratégie en matière de remplacement de ces formes, compte tenu de tous les facteurs: les avantages des formes d'exploitation continue, la perte de temps d'arrêt de la machine, le coût des pneus et plus mis au rebut.