Graphes bipartis

publicité
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 ?
Téléchargement