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.