Problème de couverture maximale

De testwiki
Aller à la navigation Aller à la recherche

En algorithmique, le problème de couverture maximale consiste à couvrir un nombre maximal d'éléments avec au plus k sous-ensembles mis à disposition.

Ce problème algorithmique est NP-dur et il existe des algorithmes d'approximation pour le résoudre[1]Modèle:,[2]. C'est une variante du problème de couverture par ensembles.

Définition

L'entrée du problème est un ensemble d'éléments, une liste de sous-ensembles de cet ensemble et un entier k, et l'on doit trouver k sous-ensembles tels que le nombre d'éléments appartenant à au moins l'un de ceux-ci est maximisé. On dit qu'un élément est couvert s'il appartient à l'un des sous-ensembles sélectionnés.

Optimisation linéaire en nombre entier

On peut formaliser le problème comme un problème d'optimisation linéaire en nombre entier:

maximiser ejEyj (maximiser le nombre d'éléments couverts)
sous les contraintes xik (au plus k sous-ensembles sont sélectionnés)
ejSixiyj (si yj>0 alors au moins un sous-ensemble ejSi est sélectionné)
yj{0,1} (si yj=1 alors ej est couvert)
xi{0,1} (si xi=1 alors Si sélectionné)

Extensions

Citons deux extensions :

  • Le problème de couverture maximale avec budget[3] consiste à attribuer un coût à chaque sous-ensemble. L'objectif est toujours de maximiser le nombre d'éléments couverts mais sans dépasser un budget alloué.
  • Le problème de couverture maximale généralisé[4] consiste à attribuer un coût à chaque sous-ensemble, ainsi qu'un coût et un poids à chaque élément selon quel sous-ensemble le couvre.

Bibliographie

Références

Modèle:Références

Modèle:Portail