Mariages, couplages et couvertures

publicité
Mariages,
couplages et
couvertures
Mariages, couplages et couvertures
Mariages,
couplages et
couvertures
Le problème du site de rencontres
Le site a une liste de garçons et de filles.
Chaque fille se déclare séduite par un certain nombre de garçons.
Comment apparier les filles et les garçons de sorte que chaque
fille se trouve avec un garçon qui lui agrée?
Mariages,
couplages et
couvertures
Problème de l’assignation de tâches
Un contremaître a une liste de travailleurs et de tâches.
Chaque travailleur est compétent pour un certain nombre de
tâches, mais ne peut en effectuer qu’une seule.
Comment distribuer les tâches de sorte que chaque tâche soit
remplie par un travailleur compétent?
Mariages,
couplages et
couvertures
Couplage
Un couplage dans un graphe est un ensemble M d’arêtes tel que
M ne contient pas de boucles et deux arêtes de M n’ont jamais
d’extrêmité en commun.
Un couplage maximum est un couplage dont le nombre d’arêtes
est maximal.
Un couplage parfait est un couplage qui est incident à tous les
noeuds.
Observation: Un couplage parfait, s’il existe, est maximum.
Mariages,
couplages et
couvertures
Couplages maximaux, chemins alternés et chemins
augmentés
Pour un couplage M, un chemin M-alterné est un chemin qui
passe alternativement par une arête de M et par une arête hors
de M.
Un chemin M-augmenté est un chemin M-alterné dont les noeuds
d’origine et de destination ne sont pas incident à une arête de M.
Théorème (Berge, 1957): Un couplage M est maximum si et
seulement s’il n’y a pas de chemin M-augmenté.
Mariages,
couplages et
couvertures
Couplage de graphes bipartis
Théorème du mariage (ou de Hall, 1935): Un graphe biparti avec
bipartition (X , Y ) possède un couplage incident à tous les noeuds
de X si et seulement si pour tout ensemble S ⊆ X , le nombre de
voisins de S est au moins |S|.
Un graphe est k -régulier si tous les noeuds sont de degré k .
Corollaire: Tout graphe biparti k -régulier (pour k > 0) possède un
couplage parfait.
Mariages,
couplages et
couvertures
Couverture de sommets
Une couverture de sommets d’un graphe est un ensemble de
sommets incident à toutes les arêtes.
Une couverture de sommets minimum d’un graphe est une
couverture de sommets avec un nombre minimal de sommets.
Mariages,
couplages et
couvertures
Couvertures et couplages
Observation: Si K est une couverture de sommets et M un
couplage, alors |M| ≤ |K |.
Observation: Si K ∗ est une couverture de sommets minimum et M
un couplage maximum, alors |M ∗ | ≤ |K ∗ |.
L’égalité n’est pas atteinte dans tous les graphes. On a cependant:
Lemme: Si K est une couverture de sommets, M un couplage et
que |M| = |K |, alors K est minimum et M est maximum.
et surtout:
Théorème (König, 1931): Dans un graphe biparti, si K ∗ est une
couverture de sommets minimum et M ∗ un couplage maximum,
alors |M ∗ | = |K ∗ |.
Mariages,
couplages et
couvertures
Comment assigner des tâches à des personnes?
Assigner des tâches à des personnes (chacune compétente pour
un certain ensemble de tâches) équivaut à chercher un couplage
parfait dans un graphe biparti. A défaut d’un couplage parfait, on
cherche un couplage maximum.
Il existe un algorithme efficace qui trouve un couplage maximum
dans un graphe biparti: l’algorithme hongrois.
En utilisant le théorème de König et sa preuve, on peut également
trouver de façon efficace la taille d’une couverture de sommets
minimum.
Mariages,
couplages et
couvertures
L’algorithme hongrois
Soit un graphe biparti de bipartition (X , Y ), avec |X | ≤ |Y |.
I
On commence par un couplage quelconque M0 .
I
M := M0
REPETER
I
I
I
I
I
I
I
Si M est incident à tout X alors M est maximum
Sinon, trouver U = {u ∈ X non incident à M}
Construire tous les chemins M-alternés à partir de U.
Si pas de chemin M-augmenté, alors M est maximum
Sinon, choisir un chemin M-augmenté C
M := (M \ C) ∪ (C \ M)
JUSQU’A CE QUE M MAXIMUM
L’algorithme fournit également une couverture minimum.
Mariages,
couplages et
couvertures
Algorithme hongrois: exemple
Mariages,
couplages et
couvertures
Couplage de poids maximum dans un graphe biparti
pondéré
On veut parfois attribuer des poids aux arêtes:
I
pour traduire des productivités différentes dans l’assignation
de tâches,
I
pour traduire des niveaux de satisfaction différents dans le
problème du mariage.
Là encore, il existe un algorithme efficace qui trouve un couplage
de poids maximum.
Mariages,
couplages et
couvertures
Couplages et couvertures: algorithmes généraux
Pour les graphes généraux (non nécessairement bipartis), il existe
un algorithme efficace permettant de trouver un couplage
maximum.
Mais on ne connaît pas d’algorithme efficace pour trouver la taille
d’une couverture de sommets minimum. C’est un problème
proche (malgré les apparences) de celui de tester si un graphe est
hamiltonien. En trouvant un algorithme efficace pour la couverture
de sommets, ou en montrant qu’il n’en existe pas, on gagnera
également un million de dollars.
Téléchargement