Skip to main content

1. Qu'est-ce que l'algorithme gourmand

est gourmand de choisir une option, et chaque fois que vous devez choisir les résultats les plus favorables de lui-même, afin de vous assurer de maximiser les avantages de vous, l'algorithme gourmand utilise cette Une sorte de pensée gourmande est un algorithme.


Les algorithmes gourmands peuvent être qualifiés d'aussi simples que: de grandes choses, de petites choses. Pour un gros problème, le problème complexe est divisé en de nombreux petits problèmes en trouvant le chevauchement avec les soumissions. Et la solution pour chaque sous-problème est sélectionnée, la valeur optimale est trouvée, les processus, puis trouvez la valeur optimale, puis manipulez. Cela signifie que l'algorithme gourmand est la meilleure option ou optimale de l'état actuel à chaque étape, de sorte que le résultat est le meilleur ou optimal d'algorithme.

Les algorithmes gourmands font toujours la meilleure option lors de la résolution du problème. C'est-à-dire qu'il n'est pas considéré par l'ensemble optimal et n'est que la solution optimale locale dans le sens. Algorithme gourmand n'est pasDes solutions globales optimales pour tous les problèmes, mais de nombreux problèmes de divers problèmes peuvent créer des solutions optimales globales ou des solutions optimales globales.


Le deuxième maître, l'algorithme gourmandicien de base
ÉTAPE 1: Configurez un modèle mathématique pour décrire le problème.
Étape 2: Divisez le problème de la résolution d'un certain nombre de problèmes d'enfants.

Étape 3: Résolvez le problème de chaque enfant et obtenez la solution latérale optimale locale de sous-problèmes.

Étape 4: Les solutions de problèmes supplémentaires sont la meilleure solution pour le problème initial.

Troisièmement, le choix des algorithmes gourmands


L'option dite gourmande est la solution optimale globale du problème que vous pouvez transmettre à travers une variété de bonnes options locales, en d'autres termes lorsque Choix, nous considérons uniquement le meilleur choix pour les problèmes actuels sans envisager les résultats de l'enfant.

Les algorithmes gourmands font un choix réussi d'une manièreRépété et le problème est simplifié dans un problème plus faible. Pour un problème spécifique, déterminer s'il possède une cupidité de choix naturel, vous devez prouver que l'option gourmande de chaque étape conduira éventuellement à la solution optimale globale du problème.


Voyons comment les algorithmes gourmands sont sélectionnés.

Quatre, un exemple d'algorithmes gourmands

Regardez l'algorithme Introduction ~ Exemple classique du milieu: Problème de sélection de l'opération.


Il est nécessaire d'utiliser la même classe le même jour, A2 ... A et la classe ne peuvent être utilisées que par une activité. Tout le monde a un temps de départ de SI et finit. Après avoir sélectionné, quiconque comptait activement une demi-heure ouverte [SI, FI). Si [Si, FI] et [SJ, FJ] ne se chevauchent pas, AI et AJ peuvent être arrangés ce jour-là. Ce problème est d'organiser ces activités pour effectuer des activités pouvant être organisées autant que possible. Baghong est le résultat des résultats de la racineUne cupidité d'algorithme 1, 4, 8, 11 ~.
Première étape: Titre de l'analyse
La fonction cible compte ~ N ~ Le nombre d'activités est le plus. Conditions de liaison
est la prochaine heure de départ plus grande ou par le début de la dernière opération S [I] & GT; = F [j].

Partie 2: Sélectionnez l'idée de la solution

la plus ancienne activité au début de l'heure choisie

chaque dernière option de la dernière fois

Chaque fois que vous sélectionnez la fin de la Les premières opérations
Étape 3: Prouvez que les idées ci-dessus peuvent être appliquées à cette question
pour une commodité, nous sommes pratiques représentant chaque activité, la ligne de longueur est l'heure occupée par l'activité. et la ligne bleue indique que nous avons choisi; Les lignes rouges indiquent que nous n'avons aucune autre option.
1 ~ Si nous choisissons le dès que possible, nous ne pouvons pas obtenir la meilleure solution



Méthode anti-fausse ~:

Par exemple, nous avons choisi l'événement 10 points ~ 2 points à l'heure de début, 13 points à l'extrémité ~

Activité n ° 2 Pour sélectionner ~ 3 points à l'heure de début, heure de fin de 5 points ~

Le cas indiqué ci-dessus apparaîtra, évidemment contre la cravate d'écorce.

2 ~ Si nous choisissons la fonctionnement la plus courte possible à chaque fois, vous ne pouvez pas obtenir la meilleure solution


Prouvez ~ anti-fausse méthode ~: , par exemple :, nous avons choisi un événement ~ 3 points dans la tête, l'heure de fin est de 17h ~;
Utilisation n ° 1 pour sélectionner ~ 1 point à la tête, l'heure de fin est de 4 points ~
Les cas indiqués ci-dessus se produiront, violant évidemment la contrainte.
3 ~ Si nous choisissons le plus ancien événement à la fin de la fin, nous pouvons obtenir la meilleure solution ~ Politique de porclet utilisée ~
, alors faites-la de la merdeEst l'algorithme gourmand?
Il est important de prouver qu'un algorithme très simple, il est difficile de prouver que c'est très difficile. Pour les algorithmes de la cupidité, on utilise la méthode tactile. Lundi est d'appliquer une loi inversée. En tant que deux stratégies, nous utilisons réellement des lois anti-qualifiées.
Retour à la stratégie, choisissez des activités compatibles dans cette méthode et peut laisser le plus de temps possible pour des activités non marquées.

Quatrième étapes: Choisissez une bonne stratégie, alors nous résumerons l'idée de base des algorithmes gourmands

MODÈLE MODEMATIQUE est une fonction cible de comptage ~ n ~ max, les conditions de liaison sont S [I ] & Gt; = F [j];

Quel règlement de l'opération est le plus ancien temps ~ ce sujet est évidemment 1 ~;

Résoudre le temps de démarrer à quelle heure S [I] supérieure à la fin de la fin de l'opération F [J];

Sortez les étapes des activités, car notre activité a choisi


La signification de ce code est la suivante:

Détermination de N activité N, heure de début de l'activité, heure de fin de , entrez F , examiner la logique Boolean A,;

Détermination du numéro de série opérationnel de l'algorithme importé, la séquence de fonctionnement de la finale sélectionnée I, J;

Activité initiale I = 1, en raison de l'heure de fin de la première activité, J = 1 est sélectionné.
Dès la deuxième opération, entrez le fonctionnement, des règles de calcul spécifiques:

Conditions de jugement: temps d'activité ~ i ~ & gt; Fonctionnant avant la fin de l'heure de fin ~ j ~

A Vrai, j a été choisi

A est faux, j ne choisit pas

Je vais augmenter 1 bit, continuer à juger jusqu'à ce que je sache jusqu'à 11



Figure sur révélant l'ensemble du processus de l'algorithme.

Cinq applications d'algorithme gourmand

Les algorithmes gourmands sont de très grands jeux informatiques spéciaux ou de certaines recommandations.



Obtenez un jeu de saut de saut classiquem Par exemple:

1. Décrivez le sujet

pour un tableau entier non déçu, d'abord dans une position.

Chaque élément de la matrice montre la longueur maximale que vous pouvez sauter dans cette position.

Évaluez si la position finale peut être atteinte.

2. Analyse des incidents
Premier commutateur sur le modèle mathématique: Pour un tableau, le numéro de chaque position dans la matrice représente la position actuelle I. Peut sauter en avant de [I] la distance est la distance. puis évalué pour sauter de la première position à la dernière position.

La difficulté de cette question est la distance qui est réfléchie chaque fois que vous sautez à chaque fois que vous sautez?


Si vous pouvez sauter de votre position, alors num [i] peut atteindre la position de J, puis tout de ceci au milieu peut sauter, mais que danse-t-on spécialement dans la danse entre IJ, c'est le fait?

Notre idéologie gourmande est déterminée que la dernière fois peut sauter à la dernière position ou pas, vraiment tGaranti entre I-J pour passer à la prochaine fois, cette position est la position la plus appropriée.

Sujets