Matrices bistochastiques, épisode 1

Publié le 18/01/17

Soit {A=(a_{i,j})_{0\le i,j\le n-1}} dans {\mathcal{M}_{n}(\mathbb{R})}.
On dit que A est {\mu}magique si la somme de chaque ligne et de chaque colonne vaut {\mu}.
On dit que {A} est bistochastique si A est {1}-magique et si les {a_{i,j}} sont positifs ou nuls.
On note {\mathcal{S}_n} l’ensemble des permutations de {[[0,n\!-\!1]]}.
Pour {\sigma\in\mathcal{S}_n} on note {P_{\sigma}} la matrice de terme général {p_{i,j}=\delta_{i,\sigma(j)}}.
On note {\mathcal{B}_n(\mathbb{R})} l’ensemble des matrices bistochastiques d’ordre n.
On note {\mathcal{P}_n(\mathbb{R})\subset\,\mathcal{B}_n(\mathbb{R})} l’ensemble des matrices de permutations {P_{\sigma}} d’ordre n.

  1. Écrire une fonction matperm, d’argument une liste {L=[\sigma(0),\sigma(1),\ldots,\sigma(n\!-\!1)]} représentant une permutation {\sigma\in\mathcal{S}_{n}}, et renvoyant la matrice de permutation {P_{\sigma}}. En déduire une fonction randmatperm, d’argument {n\ge1}, renvoyant une matrice aléatoire de permutation (utiliser les bibliothèques numpy et random).
  2. Écrire une fonction randbisto, d’argument {n\in\mathbb{N}^{*}}, renvoyant une matrice pseudo-aléatoire {A} de {\mathcal{B}_{n}(\mathbb{R})} (former un barycentre de {n^{2}} matrices {P_{\sigma}} aléatoires).
    Écrire une fonction randmagique, d’arguments {n\in\mathbb{N}^{*}} et {\mu\in\mathbb{N}^{*}}, renvoyant une matrice magique pseuso-aléatoire d’ordre {n}, de somme {\mu}, et à coefficients dans {\mathbb{N}}. L’unique objectif est de disposer facilement de matrices bistochastiques ou magiques de somme donnée, sans réfléchir au caractère représentatif de ces matrices pseudo-aléatoires.
Cliquer ici pour voir (ou cacher) le corrigé