Maison  >  Article  >  développement back-end  >  Comment implémenter un algorithme glouton en utilisant Python ?

Comment implémenter un algorithme glouton en utilisant Python ?

PHPz
PHPzoriginal
2023-09-19 11:43:411051parcourir

Comment implémenter un algorithme glouton en utilisant Python ?

Comment implémenter un algorithme glouton en utilisant Python ?

Greedy Algorithm est un algorithme simple et efficace adapté à la résolution de problèmes avec des propriétés de sous-structure optimales. Il prend le meilleur choix dans l’état actuel à chaque étape de sélection, en espérant trouver la solution globale optimale. Dans cet article, nous présenterons comment utiliser Python pour implémenter l'algorithme glouton, avec des exemples de code spécifiques.

1. L'idée de base de l'algorithme glouton

L'idée de base de l'algorithme glouton est de sélectionner la solution optimale dans l'état actuel à chaque étape, puis de passer à l'étape suivante. L'algorithme glouton n'est pas un algorithme qui peut résoudre tous les problèmes, mais convient à certains problèmes avec des propriétés de sélection gloutonnes. Ces problèmes ont les deux caractéristiques suivantes :

  1. Sous-structure optimale : La solution optimale du problème peut être dérivée des solutions optimales des sous-problèmes.
  2. Propriété de sélection gourmande : La solution optimale sélectionnée à chaque étape est le meilleur choix dans l'état actuel, c'est-à-dire la solution optimale locale.

Sur la base de ces deux caractéristiques, lorsque vous utilisez l'algorithme glouton, vous devez faire attention à savoir si le problème satisfait aux propriétés optimales de la sous-structure et sélectionner raisonnablement la solution optimale pour chaque étape.

2. Étapes de mise en œuvre de l'algorithme glouton

Les étapes de mise en œuvre de l'algorithme glouton comprennent généralement les étapes suivantes :

  1. Déterminer la propriété de sélection glouton du problème.
  2. Décomposez le problème en plusieurs sous-problèmes.
  3. Concevoir un algorithme glouton pour résoudre chaque sous-problème et obtenir une solution optimale locale.
  4. Combinez les solutions optimales locales en une solution globale au problème.

3. Exemple d'utilisation de Python pour implémenter l'algorithme glouton

Ce qui suit prend le problème du changement comme exemple pour montrer comment utiliser Python pour implémenter l'algorithme glouton.

Question : Supposons qu'il y ait des billets de 1 yuan, 2 yuans, 5 yuans, 10 yuans, 20 yuans, 50 yuans et 100 yuans, et que le nombre de monnaie requis pour rendre au client est de n yuans, comment utiliser le minimum nombre de billets pour changer de client client ?

Idée de mise en œuvre :

  1. Déterminez la nature de la sélection gourmande du problème : dans le problème de la monnaie, le billet de banque ayant la plus grande valeur nominale doit être sélectionné à chaque fois lors de la modification.
  2. Décomposez le problème en plusieurs sous-problèmes : chaque fois que vous rendez de la monnaie, c'est un sous-problème, et la dénomination de monnaie continue de diminuer.
  3. Concevez un algorithme glouton pour résoudre chaque sous-problème et obtenir une solution locale optimale : sélectionnez le billet de banque ayant la plus grosse valeur nominale à chaque fois que vous effectuez une monnaie jusqu'à ce que le nombre de monnaie soit 0.
  4. Combinez les solutions optimales locales en une solution globale au problème : ajoutez chaque solution optimale locale pour obtenir le nombre minimum de billets.

Ce qui suit est un exemple de code spécifique d'utilisation de Python pour implémenter un algorithme glouton pour résoudre le problème de changement :

def make_change(n):
    denominations = [100, 50, 20, 10, 5, 2, 1]
    count = 0
    
    for denomination in denominations:
        count += n // denomination
        n = n % denomination
        
    return count

# 测试示例
print(make_change(47))  # 输出结果为4,使用1个20元、2个2元和1个1元
print(make_change(123)) # 输出结果为6,使用1个100元、1个20元和3个1元

Dans le code ci-dessus, la fonction make_change reçoit un entier n en tant que paramètre, indiquant le nombre de changements requis. Tout d’abord, définissez une liste de coupures de billets de banque, classées par ordre décroissant. Ensuite, utilisez une boucle for pour parcourir chaque dénomination et calculer le nombre de billets requis et le montant restant. Enfin, renvoyez le nombre de billets comptés.

L'exemple ci-dessus montre comment utiliser Python pour implémenter un algorithme glouton afin de résoudre le problème du changement. Les étapes de mise en œuvre de l'algorithme glouton consistent à déterminer les propriétés de sélection glouton du problème, à décomposer le problème en plusieurs sous-problèmes, à concevoir un algorithme glouton pour résoudre chaque sous-problème et à fusionner les solutions optimales locales.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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