Problème des gants
# Problème des gants

En recherche opérationnelle, le problème des gants (aussi appelé le problème des préservatifs) est un problème d'optimisation utilisé comme exemple de ce que la solution la moins coûteuse conduit souvent à une augmentation importante du temps opérationnel, alors que la solution la plus rapide n'amène qu'à une augmentation modérée du coût.

## Énoncé du problème

M docteurs doivent chacun examiner les mêmes N patients, en portant des gants pour éviter la contamination. Chaque gant peut être réutilisé indéfiniment, mais la même face d'un gant ne peut être en contact qu'avec une seule personne. Les gants peuvent être portés les uns sur les autres, et retournés.

Le nombre minimum de gants nécessaires, G(M, N) est alors donné par :

* G(M, N) = M + N − 2 si M et N ≥ 2
* G(M, 1) = M
* G(1, N) = N
* G(1, 1) = 1

## Procédure détaillée

Une approche naïve est d'associer un gant à chaque couple médecin-malade, obtenant donc G(M, N) = MN. Mais en exploitant les deux faces des gants, et le fait qu'il n'est pas nécessaire de les utiliser simultanément, ce nombre peut être significativement réduit.

En attribuant à chaque personne (patient ou médecin) son gant (soit M + N gants en tout), on obtient une bien meilleure solution : à chaque rencontre, le médecin enfile son gant, puis par dessus le gant du patient ; ainsi, chaque personne ne touche jamais qu'une surface de son propre gant (intérieure pour les médecins et extérieure pour les patients); cette solution est meilleure que la précédente dès qu'il y a plus d'un médecin et un patient.

La durée totale des examens dans ce schéma est K · max(M, N), où K est la durée de chaque examen individuel ; c'est la même durée que dans le version naïve à MN gants. Dans ce cas, disposer de plus de ressources ne fait pas gagner de temps.

Il est possible d'optimiser le nombre G(M, N) par une distribution initiale asymétrique des gants ; le meilleur schéma est :

* Le médecin # 1 porte N gants les uns sur les autres, visite les N patients et leur laisse le gant (extérieur) qu'il a utilisé.
* Les médecins # 2 à (M − 1) portent chacun leur gant, et le recouvrent du gant laissé au patient pour chaque visite.
* Le dernier médecin # M enfile le gant du premier patient (ne touchant que sa face stérile) puis le recouvre successivement des gants des autres patients.

Cette méthode utilise (1 · N) + ((M − 1 − 1) · 1) + (1 · 0) = M + N − 2 gants, et il n'est pas possible de faire mieux.

Le temps nécessaire correspond alors à :

* N visites successives pour mettre les gants,
* max(M − 2, N) visites intermédiaires car elles peuvent être faites en parallèle,
* et les N visites finales.

Donc un temps de K · (2N + max(M − 2, N)) ; ainsi gagner deux gants peut allonger le temps jusqu'à un facteur 3 ; selon le critère préféré, la procédure d'optimisation est très différente.

## Autres facteurs

L'énoncé ne rend pas très clair la question de savoir si une face contaminée d'un gant ne risque pas de contaminer une autre face en contact avec elle. Inversement, il est évidemment possible d'améliorer la solution si, comme c'est le cas pour des gants chirurgicaux, les gants sont réversibles. Ainsi, dans la version graveleuse traditionnelle généralisée par Ilan Vardi, les trois mathématiciens parviennent à honorer sans risque la même prostituée en n’utilisant que deux $préservatifs^,.$

