Graphes bipartis Frédéric Meunier 2 novembre 2016 Définition Un graphe est biparti si l’on peut partitionner les sommets en deux parties disjointes stables, i.e. n’induisant pas d’arêtes. Un graphe est biparti si et seulement si il admet une coloration propre à au plus deux couleurs. Propriété Proposition Un graphe est biparti si et seulement si il ne contient pas de cycle de taille impaire. Un outil de modélisation Les graphes bipartis constituent un outil de modélisation. Exemple : affectation d’employés à des tâches, mariages, etc. Couplage de cardinalité maximale, couverture de cardinalité minimale Couplages couplage dans un graphe G = (V , E) : sous-ensemble d’arêtes M ⊆ E disjointes pour tout e, f ∈ M, e et f n’ont pas de sommet en commun. Couvertures couverture dans un graphe G = (V , E) : sous-ensemble C ⊆ V tel que toute arête e ∈ E soit incidente à au moins un sommet de C. : couverture Dualité faible ν(G) = cardinalité maximale d’un couplage de G. τ (G) = cardinalité minimale d’une couverture de G. ν(G) ≤ τ (G) (même si G n’est pas biparti). Théorème de König Théorème Si G est biparti, alors ν(G) = τ (G). : couverture : couplage Rappel G est biparti, donc sa matrice d’incidence est totalement unimodulaire, et donc on a Plus grand couplage : X Max ye e∈E X ye ≤ 1 s.c. Plus petite couverture : X Min xv v∈V ∀v ∈ V s.c. e∈δ(v) ye ∈ R+ ∀e ∈ E Ces deux programmes sont duaux l’un de l’autre. Dualité forte =⇒ ν(G) = τ (G). xu + xv ≥ 1 ∀uv ∈ E xv ∈ R+ ∀v ∈ V Approche par les flots et les coupes capacité supérieure 1 +∞ 1 s t Flot et couplage capacité supérieure 1 +∞ 1 s t f (a) = 1 f (a) = 0 s-t flot entier −→ couplage Coupe et couverture capacité supérieure 1 +∞ 1 s t arc de la s-t coupe s-t coupe de capacité finie −→ couverture Max flot min coupe et théorème de König Théorème max-flot min-coupe : valeur maximale d’un s-t flot = capacité minimale d’une s-t coupe On a donc ν(G) = τ (G). Un algorithme La preuve précédente donne un algorithme pour trouver le couplage de cardinalité maximale et la couverture de cardinalité minimale. Théorème Dans un graphe biparti, on peut construire un couplage de cardinalité maximale et une couverture de cardinalité minimale en temps polynomial. √ Avec un autre algorithme : en O( nm). Application • Un ensemble W d’employés • Un ensemble T de tâches • Un ensemble C ⊆ W × T de compétences : (w , t) ∈ C si w a la compétence de réaliser t. Trouver le nombre maximal de tâches qui peut être réalisé simultanément : problème de couplage maximum. Application • Un ensemble O d’objets à processer • Un ensemble M de machines • Processer o ∈ O sur m ∈ M : prend un temps tom . Chaque objet doit passer sur une seule machine. On suppose |M| ≥ |O|. Trouver l’affectation qui permet de terminer au plus tôt. Couplage de poids maximal Couplage de poids maximal Problème du couplage de poids maximal Données. Un graphe G = (V , E) biparti avec des poids w : E → R sur les arêtes. Tâche. Trouver un couplage de poids maximal. Même modélisation qu’avant, en ajoutant des coûts sur les arcs ⇒ problème de b-flot de coût minimal Théorème Le problème du couplage de poids maximal peut être résolu en temps polynomial. Avec un autre algorithme – l’algorithme hongrois : en O(n(m + n log n)). Application • Un ensemble d’employés W • Un ensemble de tâches T • Un ensemble de compétences C ⊆ W × T : (w , t) ∈ C si w a la compétence de réaliser t. • Des gains gwt ∈ R pour tout (w , t) ∈ C. Trouver l’affectation maximisant le gain : problème de couplage de poids maximal. Couplage généralisé de poids maximal Couplages généralisés Problème du couplage généralisé de poids maximal Données. Un graphe G = (V , E) biparti avec des poids w : E → R sur les arêtes et des capacités `, u : V → N sur les sommets. Tâche. Trouver F ⊆ E de poids maximal tel que `(v) ≤ degF (v) ≤ u(v) pour tout v ∈ V . (degF (v ) signifie qu’on ne compte que les arêtes de F incidentes à v ). 1≤·≤1 0≤·≤1 0≤·≤1 0≤·≤1 1≤·≤2 1≤·≤2 0≤·≤1 Modélisation par des flots 0 ≤ · ≤ +∞ 0 ≤ · ≤ +∞ 1≤·≤1 s b(s) = 4 0≤·≤1 0≤·≤1 0≤·≤1 1≤·≤2 1≤·≤2 t b(t) = −4 0≤·≤1 coût d’un arc = -poids de l’arête Algorithme de b-flot de coût minimum =⇒ Théorème Le problème du couplage généralisé de poids maximal se résout en temps polynomial. Application Centre de tri d’un aéroport : • k employés • T créneaux d’une heure • n palettes à trier Le tri d’une palette requiert un employé sur un créneau d’une heure. Toutes les palettes doivent être triées. Trier la palette i sur le créneau t : rapporte git . Trouver les affectation de tris aux créneaux maximisant le gain. Mariage Mariages Un ensemble de femmes F et d’hommes H. Qualité du mariage hf : poids whf . On veut marier de manière “optimale” P les hommes et les femmes : couplage M maximisant e∈M w (e). Instabilité h1 f1 : mariage h2 f2 Instable si l’on a simultanément • h1 préfère f2 à f1 • f2 préfère h1 à h2 Préférences locales ⇒ approche par couplage pondéré = mauvaise idée. Stabilité Supposons que l’on ait n filles et n garçons. • toute fille f met un ordre de préférence total sur les garçons : f . • tout garçon g met un ordre de préférence total sur les filles : g . Ensemble de mariages = couplage M du graphe biparti complet Kn,n . couplage M est stable si fg ∈ E\M =⇒ fg 0 ∈ M avec g 0 f g ou f 0 g ∈ M avec f 0 g f . Théorème de Gale-Shapley Le théorème suivant a valu le prix Nobel d’économie 2012 à Shapley. Théorème Il existe toujours un couplage stable. De plus, un tel couplage se trouve en O(nm). (valable en fait pour tout graphe biparti) Applications : Affectation des internes dans les hôpitaux (E.-U. depuis les années 60), affectation d’étudiants dans les universités (Hongrie), APB, etc. Algorithme Le premier jour : • Chaque garçon invite la fille qu’il préfère à dîner. • Chaque fille décide d’aller dîner avec le garçon qu’elle préfère parmi ceux qui l’invitent. • Ils dînent. Le deuxième jour : • Chaque garçon invite à dîner la fille qu’il préfère, sauf si cette dernière lui a refusé son invitation le premier jour, auquel cas, il invite la deuxième préférée. • Chaque fille décide d’aller dîner avec le garçon qu’elle préfère parmi ceux qui l’invitent. • Ils dînent. Algorithme Le k ème jour : • Chaque garçon invite à dîner la fille qu’il préfère parmi celles qui ne lui ont pas refusé d’invitation. • Chaque fille décide d’aller dîner avec le garçon qu’elle préfère parmi ceux qui l’invitent. • Ils dînent. ... Lorsque les dîners sont tous identiques deux soirs de suite, c’est fini, on obtient les mariages recherchés (couplage stable). Preuve Preuve en trois étapes 1. toute fille qui est invitée un soir à dîner est sûre de dîner le lendemain avec un garçon qui lui plaise au moins autant. 2. l’algorithme se termine. 3. les mariages – quand l’algo se termine – fournissent un couplage stable. Jeu Question Combien au maximum peut-on mettre de cavaliers sur un échiquier de manière à ce qu’aucun cavalier n’en menace un autre ?