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.

4, des exemples d'algorithmes gourmands

examinent l'exemple classique dans "Algorithme": problèmes de sélection des événements.


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 essayer de rester autant que possible (le rouge est le résultat des résultats des algorithmes gourmands) 1, 4, 8, 11).
Première étape: Titre d'analyse
Le nombre de fonctions ciblées (n) 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 l'heure de départ dès que possible, nous ne pouvons pas obtenir la meilleure solution


: ): ): ): ): ): ): ): ): ): ): ): )
Par exemple, nous avons choisi KI(2 points dans l'heure de début, l'heure de fin à la fin du temps);
L'événement numéro 2 sera sélectionné (3 points au début, 5 points à la fin de la fin);
Les cas indiqués ci-dessus apparaîtront évidemment contre des contraintes.
2) Si nous choisissons l'opération la plus courte possible à chaque fois, vous ne pouvez pas obtenir la meilleure solution
.

Par exemple, nous avons choisi 2 opérations (3 points à l'heure de début, le temps se termine à la fin du temps);

Activité n ° 1 à sélectionner (1 point à l'heure de début, 4 points à la fin du temps);

Le cas indiqué ci-dessus se produira, violant évidemment les contraintes.

3) Si nous choisissons le plus ancien événement à la fin de l'époque, nous pouvons obtenir la meilleure solution (politique gourmande adoptée)

Pour prouver ce qui est l'algorithme gourmand?

Il est important de prouver qu'une magieLes mathématiques sont très simples, 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.


Étape 4: Choisissez une stratégie, nous résumerons ensuite les idées de base des algorithmes gourmands

Modèles mathématiques sont le nombre de fonctions sombres (n) multiples, les contraintes sont S [i] & gt ; = F [j];

Tout le plus tôt possible (ce sujet est clairement opérationnel 1);

Résoudre l'heure de début du temps S [I] supérieur à la fin de la dernière opération F [J];

Éliminer les étapes de trois mots de fonctionnement, comme nous l'avons choisi
:

La signification de ce code est la suivante:

Détermination de l'activité Nombre N, heure de départPrenez le temps, le temps terminé s , type f , examiner la logique Boolean A ;

Détermination du numéro de série opérationnel de l'algorithme importé, le nombre d'opérations sélectionnées à la fin I, J;

Fonctionnement initial I = 1, en raison de la fin de la première opération, J = 1 a été sélectionné.

Dès la deuxième opération, entrez l'opération, des règles de calcul spécifiques:

Conditions de jugement: temps d'activité (i) & gt; La première heure de fin (j)

est correcte, j est sélectionné

A est faux, J ne choisit pas

I d'augmenter 1 bit, continuez de juger jusqu'à ce que je = 11




images sur révélant l'ensemble du processus d'algorithmes.

Cinq applications d'algorithme gourmand

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


Prenant le match de saut classique comme exemple:

1. DESCRIPTION THUNICS

Pour un tableau entier non créé, vous êtes d'abord dans le tableau un emplacement.

Chaque élément de cendreLe tableau indique 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 Non, peut vraiment garantir entre IJ pour passer à la prochaine fois, cette position est positionnée la plus appropriée

Sujets