Chaque algorithme gourmand a-t-il une structure matroïde?

13

Il est bien établi que , pour chaque matroïde M et toute fonction de pondération w , il sort un algorithme GreedyBasis(M,w) qui renvoie une base pondérale maximale de M . Alors, la direction inverse est-elle également vraie? Autrement dit, s'il existe un algorithme gourmand, il doit également y avoir une structure matroïde.

Jan Johannsen
la source
L'algorithme de Dijkstra est souvent considéré comme un algorithme gourmand (par exemple, voir la section 4.4 de "Conception d'algorithmes" par Kleinberg et Tardos). Je ne connais pas d'interprétation matroïde des chemins les plus courts à source unique.
Neal Young
Le partitionnement d'un ensemble d'intervalles réels en un nombre minimum de sous-ensembles disjoints a un algorithme naturel gourmand (énumérer les intervalles par heure de début, pour chacun l'ajouter à un sous-ensemble existant si possible, sinon démarrer un nouveau sous-ensemble; voir le chapitre 4 de Kleinberg et Tardos). Ce problème peut-il être compris comme un matroïde?
Neal Young

Réponses:

12

En fait, la description complète et générale d'un problème pouvant être résolu par un algorithme gourmand est une intégration matroïde , qui généralise à la fois le concept de matroïde et celui de greedoïde . La réponse est non - un problème résolu par un algorithme gourmand n'a pas besoin d'avoir une structure matroïde, mais il aura la structure d'une intégration matroïde (ce qui est, hélas, beaucoup plus compliqué).

Un modèle mental pour une partie de ceci pourrait être de trouver des arbres couvrant minimum. La structure utilisée par l'algorithme de Kruskal est un matroïde, mais celle utilisée par l'algorithme de Prim (qui nécessite un nœud de départ) ne l'est pas. (Il s'agit cependant d'un greedoid — et d'un matroïde.)

(S,C)SCS f:2SRS

L'algorithme gourmand, défini en fonction de ce formalisme, est assez simple: vous commencez avec l'ensemble vide et ajoutez successivement un seul élément jusqu'à ce que vous atteigniez une base, en vous assurant toujours que (i) votre ensemble est faisable à chaque étape, et ( ii) l'élément que vous ajoutez maximise la fonction objective du résultat résultant, wrt. tous les éléments alternatifs que vous auriez pu ajouter. (C'est-à-dire, conceptuellement, vous essayez d'ajouter toutes les alternatives possibles et choisissez celle qui donne la valeur objective la plus élevée.)

Vous pourriez peut-être affirmer qu'il pourrait y avoir d'autres formes d'algorithme gourmand, mais il existe plusieurs manuels sur les algorithmes et l'optimisation combinatoire qui décrivent cet algorithme basé sur le système de jeu comme l' algorithme gourmand. Cela ne vous empêche pas de décrire quelque chose qui ne vous convient pas, mais qui pourrait tout de même être qualifié de gourmand, je suppose. (Pourtant, cela ne rien de couverture qui pourrait avoir une structure matroıde, par exemple, mais il est beaucoup plus général.)

Ce que Helman et al. faire, c'est qu'ils décrivent quand cet algorithme fonctionnera. Plus précisement:

  1. Ils montrent que pour les fonctions objectives linéaires (où la valeur objective est la somme des poids des éléments), l'algorithme gourmand travaillera exactement sur la structure qu'ils définissent comme une intégration matroïde;

  2. Ils donnent une caractérisation similaire pour les objectifs dits goulots d'étranglement (où la valeur objective d'un ensemble est égale au minimum sur les poids des éléments individuels); et

  3. Ils donnent une caractérisation exacte des fonctions objectives (au-delà des fonctions linéaires) optimisées par l'algorithme gourmand sur les plongements matroïdes.

Magnus Lie Hetland
la source
3
Pouvez-vous expliquer quelle est leur définition d'un algorithme gourmand?
Kaveh
1
Développé ma réponse pour expliquer quel est leur formalisme.
Magnus Lie Hetland
11

L'algorithme gourmand n'est pas un concept formellement défini. Il existe différents modèles essayant de capturer cette notion intuitive mais il n'y a pas de consensus sur ce qu'est un algorithme gourmand. À moins que vous ne spécifiiez une définition formelle de ce que vous entendez par un algorithme gourmand, la question ne peut être répondue par oui ou par non.

Il existe une généralisation des matroïdes appelés greedoid qui s'inspire des algorithmes gourmands que vous voudrez peut-être regarder.

Kaveh
la source
Une définition formelle n'est pas requise si nous convenons d'une propriété de la classe des algorithmes gourmands. Si, par exemple, nous convenions que chaque algorithme gourmand a une propriété P (définie formellement), et nous montrions que chaque algorithme qui satisfait P peut être défini sur un matroïde, cela donnerait une réponse positive à la question du PO. De même, si nous convenions qu'un certain algorithme est gourmand et que nous montrions qu'il ne peut pas être l'algorithme gourmand d'un matroïde, cela donnerait une réponse négative.
Laconian détaché
2

Considérez les problèmes suivants: EURO CHAINING-CHAINING: Étant donné un nombre infini de billets de 1,2,5,10 euros, payez X euros en utilisant le moins de billets possible. Cela peut être résolu en utilisant un algorithme gourmand, qui prend la plus grande note possible. Mais il n'y a pas de structure matroïde dans ce problème.

COUVERTURE DES TROUS: Il y a des trous dans les positions x_1, x_2, ..., x_n. Vous avez un patch de longueur 10 cm. Patcher les trous en utilisant le moins de patchs possible. Encore une fois, cela peut être résolu de manière gourmande (il suffit de mettre le patch le plus à droite possible), mais il n'y a pas de structure matroïde.

usamec
la source
merci, j'avais mes soupçons mais je n'étais pas sûr. Donc après tout, nous devons rechercher un algorithme gourmand même si la structure matroïde n'existe pas.
1
@ user3373748 Je recherche généralement un programme dynamique. Gourmand est un DP dégénéré.
1
(Pas pour être pointilleux, mais il n'y a pas de billets de 1 ou 2 euros; vous voudrez peut-être changer votre ensemble de valeurs en {5, 10, 20, 50, 100, 200} ou reformuler ;-))
Anthony Labarre
Notez que l'algorithme de changement de pièce décrit fonctionne pour {1,2,5,10} mais peut ne pas calculer des résultats optimaux pour d'autres valeurs. Exemple: Avec {1,3,4} la solution optimale pour 6 serait [3,3] mais l'algorithme retournerait [4,1,1].
Socowi
1
Il existe une structure matroïde pour le problème de changement de pièces - gauss.ececs.uc.edu/Courses/C671/html/Homework/hw5_sol.html
Tushant Mittal