Programmation dynamique de l'apprentissage des algorithmes PHP

黄舟
Libérer: 2023-03-05 12:20:01
original
3064 Les gens l'ont consulté

Programmation dynamique La programmation est un moyen et une méthode pour résoudre des problèmes d'optimisation. La solution optimale du problème final peut être dérivée des solutions optimales des sous-problèmes précédents.


Quant à l'algorithme de programmation dynamique, je ne l'ai pas appris à fond. Un simple résumé de mon expérience d'apprentissage est le suivant :

Les idées de programmation dynamique intègrent les idées de récursivité et de diviser pour régner. , mais différent de diviser pour régner, dans la résolution par programmation dynamique, la solution optimale de chaque branche dans le processus de résolution sera enregistrée via l'état, économisant ainsi les calculs répétés de nombreuses branches.

Les deux étapes les plus importantes et les plus difficiles de la programmation dynamique consistent à trouver l'état qui décrit le sous-problème et la relation de dérivation entre les états.

Problèmes les plus susceptibles d'utiliser la programmation dynamique : trouver les valeurs maximales et minimales, s'il existe des solutions réalisables et le nombre de solutions réalisables.

Essayons d'abord la question la plus courante, trouver la valeur d'une certaine position dans la séquence de Fibonacci (les étudiants qui ne savent pas, veuillez la rechercher sur Baidu) ?
Application de la méthode diviser pour régner pour résoudre le code

Programmation dynamique de lapprentissage des algorithmes PHP

Pendant le processus de résolution diviser pour régner, il y aura de nombreuses opérations répétées. 2 ci-dessous ont été répétés deux fois. Plus la valeur de l'indice est grande, plus elle est répétée.

Programmation dynamique de lapprentissage des algorithmes PHP

ok, voyons comment la programmation dynamique peut être optimisée.

Programmation dynamique de lapprentissage des algorithmes PHP

Nous définissons un tableau pour enregistrer la valeur de chaque position de Fibonacci, ce qui équivaut à définir un état, la valeur de chaque position est égale au ; somme de ses deux précédentes, ce qui équivaut à une équation de transition d’état.
L'enregistrement de l'état via un tableau est ici une idée d'échange d'espace contre du temps. En fait, c'est très similaire à la conception du cache que nous utilisons dans le développement quotidien.

Résumé La solution de programmation dynamique peut être divisée en 4 étapes :
1. Déterminer le sous-problème à résoudre, c'est-à-dire la définition de l'état.
2. Énumérez l’équation de transition d’état.
3. Initialisez la valeur d'état connue en fonction des conditions données.
4. Résolvez la solution finale au problème.

Résolvons un problème plus intéressant, monter les escaliers :

Programmation dynamique de lapprentissage des algorithmes PHP

Ce qui précède est le contenu de la programmation dynamique de l'apprentissage des algorithmes PHP, veuillez prêter attention aux informations plus connexes. contenu du site Web chinois PHP (www.php.cn) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!