Les matrices bistochastiques désignent des matrices dont tous les éléments sont positifs et dont la somme des éléments de chaque ligne fait 1, et de même pour les colonnes. Ces matrices ont certaines propriétés particulières qu’il peut être intéressant d’étudier en vue d’un sujet de type Maths I ou encore pour les oraux de type ESCP ou HEC.
Définition
Soit \( A = (a_{ij}) \in \mathbb{R}^{n \times n} \). On dit que \( A \) est une matrice bistochastique si :
\begin{align*}
&\forall (i,j),\quad a_{ij} \geq 0 \\
&\forall i,\quad \sum_{j=1}^{n} a_{ij} = 1 \quad \text{(lignes)} \\
&\forall j,\quad \sum_{i=1}^{n} a_{ij} = 1 \quad \text{(colonnes)}
\end{align*}
On note \( \mathcal{B}_n \) l’ensemble des matrices bistochastiques d’ordre \( n \).
Exemples clés
Exemple 1 : matrice bistochastique 3×3
Voici un premier exemple en petite dimension pour bien appréhender la définition de ces matrices :
\[
A = \begin{pmatrix}
\frac{1}{2} & \frac{1}{4} & \frac{1}{4} \\
\frac{1}{4} & \frac{1}{2} & \frac{1}{4} \\
\frac{1}{4} & \frac{1}{4} & \frac{1}{2}
\end{pmatrix} \in \mathcal{B}_3
\]
Tu pourras aisément vérifier cela en regardant que tous les éléments sont positifs, que la somme des coefficients de chaque ligne fait 1 et idem pour les colonnes.
Exemple 2 : matrice de permutation
Et voilà un exemple de matrice bistochastique un peu plus ardu, sur lequel nous reviendrons par la suite dans cet article.
Soit \( \sigma \in \mathfrak{S}_n \) une permutation de \( \{1, \dots, n\} \). On définit la matrice \( P \in \mathbb{R}^{n \times n} \) par :
\[
P_{ij} = \begin{cases}
1 & \text{si } j = \sigma(i) \\
0 & \text{sinon}
\end{cases}
\]
Si cette notion ne te paraît pas suffisamment claire, voici un article Major-Prépa qui traite de ces matrices.
Alors \( P \in \mathcal{B}_n \) (ce qui découle directement de la définition de la matrice de permutation, car les coefficients de cette matrice sont des 1 ou des 0, qu’il y a un seul 1 par ligne et un seul 1 par colonne).
Propriétés
Lien avec les matrices magiques
Une matrice magique d’ordre \( n \) est une matrice entière strictement positive telle que toutes les lignes, colonnes et diagonales principales ont la même somme \( c \) (ce qui assure en outre pour la suite que \(c\) est non nul). Si \( M \) est une telle matrice magique, alors :
\[
A = \frac{1}{c} M \in \mathcal{B}_n
\]
Exemple : matrice magique 3×3
\[
M = \begin{pmatrix}
8 & 1 & 6 \\
3 & 5 & 7 \\
4 & 9 & 2
\end{pmatrix}
\quad \Rightarrow \quad
\frac{1}{15}M \in \mathcal{B}_3
\]
Convexité de \( \mathcal{B}_n \)
Théorème : L’ensemble \( \mathcal{B}_n \) est convexe.
Démontrons rapidement cette propriété qui permet de faire revenir sur cette partie du programme, généralement sombre pour les étudiants de deuxième année.
Soient \( A, B \in \mathcal{B}_n \) et \( \lambda \in [0,1] \). Posons \( C = \lambda A + (1-\lambda) B \) et montrons que \( C \in \mathcal{B}_n \).
Positivité
Comme \( a_{ij} \geq 0 \) et \( b_{ij} \geq 0 \), on a :
\[
c_{ij} = \lambda a_{ij} + (1 – \lambda) b_{ij} \geq 0
\]
donc \( C \geq 0 \).
Somme des lignes
Pour tout \( i \in \{1,\dots,n\} \), on a :
\[
\sum_{j=1}^n c_{ij}
= \sum_{j=1}^n (\lambda a_{ij} + (1 – \lambda) b_{ij})
= \lambda \sum_{j=1}^n a_{ij} + (1 – \lambda) \sum_{j=1}^n b_{ij}
= \lambda \cdot 1 + (1 – \lambda) \cdot 1 = 1
\]
Somme des colonnes
Pour tout \( j \in \{1,\dots,n\} \), on a :
\[
\sum_{i=1}^n c_{ij}
= \sum_{i=1}^n (\lambda a_{ij} + (1 – \lambda) b_{ij})
= \lambda \sum_{i=1}^n a_{ij} + (1 – \lambda) \sum_{i=1}^n b_{ij}
= \lambda \cdot 1 + (1 – \lambda) \cdot 1 = 1
\]
Ainsi, \( C \in \mathcal{B}_n \). On conclut que \( \mathcal{B}_n \) est convexe.
Invariance du vecteur uniforme
Soit \( u = \left( \frac{1}{n}, \dots, \frac{1}{n} \right)^T \). Pour toute matrice \( A \in \mathcal{B}_n \), on a :
\[
A u = u \quad \text{et} \quad A^\top u = u
\]
On obtient ainsi une caractérisation des matrices bistochastiques et on peut même vérifier qu’une matrice est bistochastique si et seulement si elle est invariante par le vecteur uniforme.
Caractérisation à partir de matrices stochastiques
Voici déjà un petit rappel sur la définition de la matrice stochastique (définition hors programme). Soit \( P = (p_{ij}) \in \mathbb{R}^{n \times n} \). On dit que \( P \) est une matrice stochastique (à droite) si elle vérifie les deux propriétés suivantes :
\[
\begin{cases}
p_{ij} \geq 0 & \text{pour tout } i, j \in \{1, \dots, n\} \\
\sum_{j=1}^n p_{ij} = 1 & \text{pour tout } i \in \{1, \dots, n\}
\end{cases}
\]
De façon analogue, une matrice \( Q \in \mathbb{R}^{n \times n} \) est dite stochastique à gauche si :
\[
\begin{cases}
q_{ij} \geq 0 & \text{pour tout } i, j \in \{1, \dots, n\} \\
\sum_{i=1}^n q_{ij} = 1 & \text{pour tout } j \in \{1, \dots, n\}
\end{cases}
\]
Ainsi, par confrontation de la définition des matrices stochastiques et bistochastiques, on ne rend aisément compte qu’une matrice \( P \) est dite bistochastique si elle est stochastique à la fois à droite et à gauche.
Stabilité par produit matriciel
Si \( A, B \in \mathcal{B}_n \), alors \( AB \in \mathcal{B}_n \).
Démontrons rapidement une telle propriété qui permet de faire appel à la définition du produit matriciel qui est souvent très utile dans les sujets. Soit \( C = AB \).
On a :
\[
C_{ij} = \sum_{k=1}^n a_{ik} b_{kj} \geq 0
\]
Puis :
\[
\sum_j C_{ij} = \sum_k a_{ik} \sum_j b_{kj} = \sum_k a_{ik} = 1
\quad \text{et} \quad
\sum_i C_{ij} = \sum_k b_{kj} \sum_i a_{ik} = \sum_k b_{kj} = 1
\]
Donc : \( C \in \mathcal{B}_n \).
Simulation Python
Quoi de mieux pour terminer d’étudier une notion que de voir son application à travers un beau code Python ? Voici un énoncé qui traite de la création d’une matrice bistochastique en Python et dont tu trouveras une proposition de solution par la suite si cela t’intéresse.
Créer un code Python qui choisisse pour le premier coefficient de chaque ligne et colonne un élément au hasard. Pour le deuxième élément de chaque colonne, implémenter un autre coefficient au hasard et ainsi de suite, de sorte que le code Python retourne une matrice bistochastique (indice : l’élément suivant de la ligne et de la colonne de la matrice retournée doit prendre en compte les éléments précédents pour que la somme des lignes et des colonnes n’excède pas 1).
Voici une autre idée d’exercice que nous ne développerons pas plus que cela : créer une fonction Python qui prend en paramètre une matrice carrée et qui vérifie si la matrice est bistochastique ou non et renvoie ainsi True ou False.
Conclusion
En définitive, les matrices bistochastiques sont certes hors programme, mais peuvent être analysées avec les outils de ce dernier, ce qui en fait une super notion pour un sujet type Maths I ESSEC/HEC. C’est pourquoi cette notion est déjà tombée il y a quelques années au concours : Maths I ESSEC 2017 ECS. Tu pourras donc t’exercer sur ce beau sujet si tu souhaites approfondir la notion !
Tu peux retrouver ici le méga-répertoire qui contient toutes les annales de concours et les corrigés. Tu peux également accéder ici à toutes nos autres ressources mathématiques !



