# Théorème de Hall

En mathématiques, le théorème de Hall ou lemme des mariages est un résultat combinatoire qui donne une condition nécessaire et suffisante, sur une famille d'ensembles finis, pour qu'il soit possible de choisir des éléments distincts, un par ensemble. Il a été démontré par Philip Hall et a été à l'origine de la théorie du couplage dans les graphes.

## Formulation combinatoire
### Énoncé

On appelle système de représentants distincts d'une suite de n ensembles finis $A_{1},\ldots ,A_{n}$, toute suite de n éléments $x_{1},\ldots ,x_{n}$ distincts tels que pour tout $k$, $x_{k}$ appartienne à $A_{k}$.
Théorème — $A_{1},\ldots ,A_{n}$ possède un système de représentants distincts si et seulement si, pour tout $m\in \{1,\ldots ,n\},$ la réunion de $m$ quelconques des $A_{i}$ contient au moins $m$ éléments.

### Remarques

La condition est clairement nécessaire. Parmi les diverses preuves qu'elle est suffisante, celle qui semble la plus naturelle est due à Easterfield et a été redécouverte par Halmos et Vaughan.
Son nom folklorique de « lemme des mariages » est lié à l'interprétation suivante d'un système de représentants distincts : étant données n filles, si $A_{k}$ désigne l'ensemble des partis envisageables pour la k-ième, un système de représentants distincts correspond à un mariage collectif tenant compte de ces contraintes.

## Formulation de la théorie des graphes
### Énoncé

Un couplage parfait dans un graphe ayant un nombre pair 2n de sommets est un ensemble de n arêtes du graphe, deux-à-deux disjointes et telles que chaque sommet du graphe est incident à exactement une arête du couplage.
    Théorème de Hall pour les graphes - Un graphe biparti G = (U,V;E) admet un couplage parfait si et seulement si pour tout sous-ensemble X de U (de V, respectivement), le nombre de sommets de V (de U, respectivement) adjacents à X est supérieur ou égal à la cardinalité de X.

### Historique et généralisations

Le théorème de Hall a été démontré par Philip Hall et a été à l'origine de la théorie du couplage dans les graphes.
Ce résultat généralise le fait, déjà remarqué en 1914 par König, que les graphes bipartis réguliers admettent un couplage parfait. Par-ailleurs, le théorème de Tutte (en) généralise celui de Hall par une condition nécessaire et suffisante pour tous les graphes. Le théorème de Hall est en fait un cas particulier du théorème flot-max/coupe-min, dans les graphes constitués d'un graphe biparti G = (U,V;E) plus un sommet source et un sommet puits, la source étant reliée à tous les sommets de U, tandis que tous les sommets de V sont reliés au sommet puits.

### Preuves

Ce théorème de Hall n'est pas difficile à démontrer, il en existe au moins trois courtes preuves$^,$.
Nous disons qu'un graphe biparti $G=(U,V;E)$ respecte la condition des mariages si et seulement si pour tout sous-ensemble $X$ de $U$, $|N_{G}(X)|\geq |X|$ (avec $|S|$ la cardinalité de $S$ et $N_{G}(S)$ le nombre de voisins de $S$ dans le graphe $G$).
Soit $G$ un tel graphe biparti avec $|U|=|V|$ (condition évidemment nécessaire) et $H$ un sous-graphe de $G$ qui contient $U$, respecte la condition des mariages et tel qu'il n'existe pas d'arête $(u,v)$ de $H$ telle que $H-uv$ respecte aussi cette condition ($H$ est arête-minimal pour cette condition). Puisque $H$ respecte la condition des mariages, pour tout $u\in U$ nous avons $|N_{H}(u)|\geq 1$. Nous allons donc montrer que les arêtes de $H$ forment un couplage parfait de $G$ en montrant que pour tout $u\in U$ nous avons $|N_{H}(u)|=1$. Supposons que $u\in U$ a deux voisins distincts $v_{1}$ et $v_{2}$. Par définition de $H$, $H-uv_{1}$ et $H-uv_{2}$ ne respectent pas la condition des mariages. Autrement dit, il existe $U_{1}\subseteq U$, $u\in U_{1}$ tel que $|U_{1}|>|V_{1}|$ avec $V_{1}:=N_{H-uv_{1}}(U_{1})$ et $U_{2}\subseteq U$, $u\in U_{2}$ tel que $|U_{2}|>|V_{2}|$ avec $V_{2}:=N_{H-uv_{2}}(U_{2})$. Puisque $v_{1}\in V_{2}$ et $v_{2}\in V_{1}$, nous avons:
${\begin{aligned}|N_{H}(U_{1}\cap U_{2}\backslash \{u\})|&\leq |V_{1}\cap V_{2}|\\&=|V_{1}|+|V_{2}|-|V_{1}\cup V_{2}|\\&=|V_{1}|+|V_{2}|-|N_{H}(U_{1}\cup U_{2})|\\&\leq |U_{1}|-1+|U_{2}|-1-|U_{1}\cup U_{2}|\\&=|U_{1}\cap U_{2}|-2\\&=|U_{1}\cap U_{2}\backslash \{u\}|-1\end{aligned}}$
Donc $H$ ne respecte pas la condition des mariages, ce qui est une contradiction avec l'hypothèse de départ.
Nous avons donc que tout $u\in U$ a exactement un voisin dans le sous-graphe $H$. Les arêtes de $H$ forment donc un couplage parfait de $G$.

### Aspects algorithmiques

Le problème qui consiste à savoir, étant donné un graphe biparti, s'il existe un couplage parfait peut-être résolu en temps polynomial. Mais même sans connaître ce fait, on sait qu'il appartient à la classe NP et d'après le théorème de Hall, à la classe co-NP puisqu'à l'aide d'un ensemble X violant la condition, on peut vérifier en temps polynomial que son voisinage N(X) est tel que |N(X)| < |X|, et donc convaincre que la réponse au problème de décision est négative.