logo

Algorithmes gourmands

Algorithmes gourmands sont une classe d'algorithmes qui font localement optimal choix à chaque étape dans l'espoir de trouver un optimal global solution. Dans ces algorithmes, les décisions sont prises sur la base des informations disponibles à l’heure actuelle sans tenir compte des conséquences de ces décisions dans le futur. L’idée clé est de sélectionner le meilleur choix possible à chaque étape, conduisant à une solution qui n’est pas toujours la plus optimale mais qui est souvent suffisante pour de nombreux problèmes.

Dans cet article, nous comprendrons les algorithmes gloutons avec des exemples. Nous examinerons également les problèmes et leurs solutions en utilisant l’approche gourmande.

Algorithmes gourmands



Table des matières

file d'attente et file d'attente prioritaire en Java

Qu’est-ce que l’algorithme gourmand ?

UN algorithme gourmand est un type d'algorithme d'optimisation qui fait des choix localement optimaux à chaque étape pour trouver une solution globalement optimale. Il fonctionne sur le principe de prendre la meilleure option maintenant sans tenir compte des conséquences à long terme.

Pour savoir ce qu'est la méthode gourmande et comment utiliser l'approche gourmande, lisez le tutoriel donné sur l'algorithme gourmand :

Étapes pour créer un algorithme gourmand

Les étapes pour définir un algorithme glouton sont :

  1. Définir le problème: Énoncez clairement le problème à résoudre et l’objectif à optimiser.
  2. Identifiez le choix gourmand : Déterminez le choix localement optimal à chaque étape en fonction de l’état actuel.
  3. Faites le choix gourmand : Sélectionnez le choix gourmand et mettez à jour l’état actuel.
  4. Répéter: Continuez à faire des choix gourmands jusqu’à ce qu’une solution soit trouvée.

En suivant les étapes indiquées, on peut apprendre à utiliser des algorithmes gloutons pour trouver des solutions optimales.

Exemples d'algorithmes gourmands

Des exemples d’algorithmes gloutons constituent le meilleur moyen de comprendre l’algorithme. Voici quelques exemples concrets d’algorithmes gloutons :

  • Sac à dos fractionné : Optimise la valeur des articles pouvant être inclus de manière fractionnée dans un sac à dos de capacité limitée.
  • L'algorithme de Dijkstra : Recherche le chemin le plus court entre un sommet source et tous les autres sommets d'un graphique pondéré.
  • L'algorithme de Kruskal : Recherche l'arbre couvrant minimum d'un graphique pondéré.
  • Codage de Huffman : Compresse les données en attribuant des codes plus courts aux symboles plus fréquents.

Applications de l'algorithme gourmand

Il y a beaucoup de applications de la méthode gloutonne en DAA . Certaines applications importantes de l’algorithme glouton sont :

  • Attribuer des tâches aux ressources pour minimiser le temps d'attente ou maximiser l'efficacité.
  • Sélection des objets les plus précieux à ranger dans un sac à dos de capacité limitée.
  • Diviser une image en régions présentant des caractéristiques similaires.
  • Réduire la taille des données en supprimant les informations redondantes.

Inconvénients/limites de l’utilisation d’un algorithme gourmand

Vous trouverez ci-dessous quelques inconvénients de l’algorithme gourmand :

arbres avl
  • Les algorithmes gourmands ne trouvent pas toujours la meilleure solution possible.
  • L’ordre dans lequel les éléments sont pris en compte peut avoir un impact significatif sur le résultat.
  • Les algorithmes gourmands se concentrent sur les optimisations locales et peuvent manquer de meilleures solutions qui nécessitent de considérer un contexte plus large.
  • Les algorithmes gloutons ne sont pas applicables aux problèmes pour lesquels le choix glouton ne conduit pas à une solution optimale.

Bases de l'algorithme gourmand :

  • Algorithmes gourmands (structure générale et applications)
  • Différence entre l'algorithme gourmand et l'algorithme diviser pour régner
  • Approche gourmande vs programmation dynamique
  • Comparaison entre les algorithmes Greedy, Divide and Conquer et Dynamic Programming

Algorithmes gourmands standards :

  • Problème de sélection d'activité
  • Problème de séquençage des tâches
  • Codage de Huffman
  • Décodage de Huffman
  • Problème de connexion à l'eau
  • Swaps minimum pour l’équilibrage des brackets
  • Fraction égyptienne
  • Les policiers arrêtent les voleurs
  • Problème de montage des étagères
  • Attribuer des souris aux trous

Problèmes gourmands sur la baie :

  • Sous-ensemble de produits minimum d'un tableau
  • Maximiser la somme du tableau après K négations à l'aide du tri
  • Somme minimale du produit de deux tableaux
  • Somme minimale de la différence absolue des paires de deux tableaux
  • Incrément/décrément minimum pour rendre le tableau non croissant
  • Tableau de tri avec inverse autour du milieu
  • Somme des aires de rectangles possibles pour un tableau
  • Le plus grand tableau lexicographique avec au plus K échanges consécutifs
  • Partition en deux sous-tableaux de longueurs k et (N – k) telles que la différence des sommes soit maximale

Problèmes gourmands sur le système d'exploitation :

  • Algorithme First Fit dans la gestion de la mémoire
  • Algorithme Best Fit dans la gestion de la mémoire
  • Algorithme du pire ajustement dans la gestion de la mémoire
  • Planification du travail le plus court en premier
  • Planification des tâches avec deux tâches autorisées à la fois
  • Programme pour un algorithme de remplacement de page optimal

Problèmes gourmands sur le graphique :

  • Arbre couvrant minimum de Kruskal
  • Arbre couvrant minimum de Prim
  • Arbre couvrant minimum de Boruvka
  • L'algorithme du plus court chemin de Dijkastra
  • L'algorithme du cadran
  • Coût minimum pour connecter toutes les villes
  • Introduction au problème de débit maximum
  • Nombre de composants de cycle unique dans un graphique non orienté

Algorithme gourmand approximatif pour NP Complete :

  • Problème de couverture
  • Problème d'emballage des bacs
  • Coloration des graphiques
  • Problème des centres K
  • Problème de supercorde le plus court
  • Solution approximative au problème du voyageur de commerce utilisant MST

Avide de cas particuliers de DP :

  • Problème de sac à dos fractionnaire
  • Nombre minimum de pièces requis

Problèmes faciles sur Greedy Algorithme :

  • Diviser n en nombres composés maximum
  • Achetez un maximum d'actions si mes actions peuvent être achetées le i-ème jour
  • Trouvez le montant minimum et maximum pour acheter tous les N bonbons
  • Somme maximale possible égale à la somme de trois stacks
  • Divisez le cuboïde en cubes de telle sorte que la somme des volumes soit maximale
  • Nombre maximum de clients pouvant être satisfaits avec une quantité donnée
  • Rotations minimales pour déverrouiller un verrou circulaire
  • Nombre minimum de salles pour m événements de n lots avec un horaire donné
  • Coût minimum pour créer une taille de tableau 1 en supprimant les paires les plus grandes
  • Coût minimum pour acquérir toutes les pièces avec k pièces supplémentaires autorisées avec chaque pièce
  • Incrément minimum de k opérations pour rendre tous les éléments égaux
  • Trouver le nombre minimum de billets de banque et les valeurs qui totalisent un montant donné
  • Le plus petit sous-ensemble dont la somme est supérieure à tous les autres éléments

Problèmes moyens sur Greedy Algorithme :

  • Nombre maximal de trains pour lesquels un arrêt peut être prévu
  • Termes minimaux de Fibonacci avec une somme égale à K
  • Divisez 1 à n en deux groupes avec une différence de somme minimale
  • Papier découpé en nombre minimum de carrés
  • Différence minimale entre les groupes de taille deux
  • Connectez n cordes à un coût minimum
  • Nombre minimum de quais requis pour une gare ferroviaire/bus
  • Sommets initiaux minimaux pour parcourir toute la matrice avec des conditions données
  • Le plus grand nombre palindromique en permutant les chiffres
  • Trouver le plus petit nombre avec un nombre donné de chiffres et une somme de chiffres
  • Sous-séquence lexicographiquement la plus grande telle que chaque caractère apparaît au moins k fois

Problèmes difficiles sur Greedy Algorithme :

  • Nombre maximal d'éléments pouvant être rendus égaux avec k mises à jour
  • Minimisez les flux de trésorerie entre amis
  • Coût minimum pour découper une planche en carrés
  • Coût minimum pour traiter m tâches où les coûts de changement
  • Temps minimum pour terminer tous les travaux avec des contraintes données
  • Minimiser la différence maximale entre les hauteurs des tours
  • Arêtes minimales à inverser pour tracer le chemin d'une source à une destination
  • Trouvez le plus grand cube formé en supprimant le minimum de chiffres d'un nombre
  • Réorganiser les caractères dans une chaîne de telle sorte qu'il n'y ait pas deux adjacents identiques
  • Réorganiser une chaîne de manière à ce que tous les mêmes caractères soient éloignés
  • Apprendre la structure des données et les algorithmes | Tutoriel DSA
  • Top 20 des questions d'entretien sur les algorithmes gourmands
  • « Problèmes de pratique » sur les algorithmes gourmands
  • « Quiz » sur les algorithmes gourmands