CSI 3505 Algorithmes Voraces Faire de la monnaie, canadienne. Nous voulons rendre la monnaie à un client en lui donnant le moins de pièces possibles. Exemple 1: Rendre 87c en utilisant des pièces de: 25c 10c 5c 1c 3 x 25c + 1 x 10c + 2 x 1c Est-ce que l'algorithme donne toujours la solution optimale ? OUI 2/23/2019 Dr. Nejib Zaguia
CSI 3505 Algorithmes Voraces Algorithme vorace: à chaque étape, choisir la plus grande pièce possible. Exemple 2: Rendre 16c en utilisant des pièces de: 25c 12c 10c 5c 1c 1 x 12c + 4 x 1c La solution optimale: 1x 10c + 1x 5c + 1x 1c 2/23/2019 Dr. Nejib Zaguia
CSI 3505 Algorithmes Voraces C'est un algorithme qui prends un meilleur choix possible à chaque étape de la construction de la solution. Ce sont des algorithmes généralement assez simple. Ils servent typiquement à résoudre des problèmes d'optimisation. 2/23/2019 Dr. Nejib Zaguia
CSI 3505 Algorithmes Voraces fonction monnaie(P:ensemble {pièces}; s:entier {somme a rendre}): ensemble avec répétitions S := {solution} tantque s > 0 faire p := plus grande pièce de P dont la valeur ne dépasse pas s; S := S {p} s := s-p retourner S 2/23/2019 Dr. Nejib Zaguia
CSI 3505 Algorithmes Voraces L'approche vorace Note : On utilise aussi le terme « glouton » plutôt que vorace. Intuition : dans l'approche vorace, une solution est obtenue en effectuant une séquence de choix, chaque choix se faisant sur la base d'information locale, en choisissant ce qui semble le mieux au moment ou le choix s'effectue (et en espérant que cela mène a la solution optimale globale). 2/23/2019 Dr. Nejib Zaguia
CSI 3505 Algorithmes Voraces Les algorithmes voraces sont souvent utilisés, comme les algorithmes de programmation dynamique, pour résoudre des problèmes d'optimisation. Ils produisent un résultat optimal si le problème satisfait la propriété de choix vorace (greedy choice) = la solution globale peut être obtenue par une série de choix optimums locaux. Mais, . . . , ce ne sont pas tous les problèmes qui satisfont cette propriété. 2/23/2019 Dr. Nejib Zaguia
CSI 3505 Algorithmes Voraces Principales composantes d'une approche vorace : L'algorithme débute avec un ensemble vide d'items et ajoute, de façon répétitive, des items dans l'ensemble jusqu'a ce qu'une solution optimale soit obtenue. Chaque itération consiste dans les composantes suivantes : Une procédure de sélection, qui choisit le prochain item à inclure dans l'ensemble. Un test de faisabilité, qui détermine si le nouvel ensemble conduit a une solution faisable, c'est-à-dire, pouvant être étendu en complétant cet ensemble par d'autres éléments. Une vérification de la solution, qui détermine si le nouvel ensemble constitue une solution à l'instance du problème. 2/23/2019 Dr. Nejib Zaguia
CSI 3505 Algorithmes Voraces Schéma général: C: ensemble de candidats S := tantque S n'est pas une solution et C x := élément de C qui maximise un critère de sélection C := C - x si (S {x}) est réalisable alors S := S {x} si S est une solution alors retourner S sinon retourner pas-de-solution 2/23/2019 Dr. Nejib Zaguia