Corrigé X-ENS 2025 Informatique C MPI — Partie II (Q22 à Q31) : Déterminant par l'algorithme de Mahajan et Vinay
Sujet officiel du concours X-ENS, session 2025, épreuve Informatique C MPI. Corrigé rédigé par Ibrahim Alame.
Sujet officiel (PDF, site du concours)
Énoncé
En C, est A[i*n+j] ; calculs en . : sommets , arc de poids si .
Marche fermée () : arcs de , tête minimale et absente de l'intérieur ; longueur , poids produit des poids. Suite : têtes croissantes, longueur totale ; , , et .
: sommets , , et (, , : parité, tête, sommet courant, arcs parcourus). Arcs : (1) , poids ; depuis : (2) vers , poids , si et ; (3) vers , poids , si et ; (4) si , vers , poids . Admis : les chemins de à (resp. ) sont en bijection avec les suites positives (resp. négatives). : somme des poids des chemins de à ; couche : les . Fournis : Fourtable, create (table nulle, ), read, write, free(t) () :
int read_sqmatrix(int n, int *A, int i, int j); /* Q22 */
void write_sqmatrix(int n, int *A, int i, int j, int val); /* Q22 */
Fourtable *create(int n);
void write(Fourtable *t, int val, int p, int h, int v, int i);
int read(Fourtable *t, int p, int h, int v, int i);
Fourtable *initialise(int n); /* Q29 */
Fourtable *remplit(int n, int *A); /* Q30 */
int determinant(int n, int *A); /* Q31 */
Q22. Écrire read_sqmatrix et write_sqmatrix, en .
Q23. Dessiner pour .
Q24. Graphe de gauche (poids ) : marche fermée de longueur , de tête .
Q25. Graphe du milieu : (1) marches fermées de longueur au plus ; (2) suites ; avec poids.
Q26. Même : arcs manquants, avec poids, de la figure de droite.
Q27. Pour une marche fermée et , montrer que les (, ) forment un chemin de ; en déduire qu'une suite positive donne un chemin de à .
Q28. Exprimer par la couche .
Q29. initialise(n) : sur la couche , en .
Q30. remplit(n, A) : toutes les couches, justifié.
Q31. determinant(n, A), mémoire libérée, justifié.
Corrigé
Q22. Le coefficient est la case i*n+j :
int read_sqmatrix(int n, int *A, int i, int j) {
return A[i * n + j];
}
void write_sqmatrix(int n, int *A, int i, int j, int val) {
A[i * n + j] = val;
}
Un calcul d'indice et un accès : . write_sqmatrix ne renvoie rien (type void).
Q23. Les quatre coefficients sont non nuls : a une boucle sur chaque sommet et un arc dans chaque sens.
Arcs : de poids , de poids , de poids , de poids (l'arc porte : ligne , colonne ).
Q24. : les arcs , , existent, la tête est le plus petit sommet et n'apparaît qu'aux extrémités ; longueur . (C'est la seule : une marche de tête évite , et le seul arc entrant dans vient de .)
Q25. Les arcs sont de poids , de poids , de poids , de poids et de poids ; ici .
(1) Marches fermées de longueur au plus , classées par tête :
- tête : , de poids (de on ne peut aller qu'en , de qu'en , et ne se rejoint que depuis ) ;
- tête (sommets ) : , de poids ; , de poids ;
- tête : , de poids (une marche de tête ne passe que par , qui ne peut apparaître qu'aux extrémités).
(2) Suites de marches fermées (têtes croissantes, longueur totale ) :
- , de poids ;
- , de poids ;
- , de poids .
Il n'y en a pas d'autre : une suite commençant par la tête n'a que la marche de longueur , et une suite de tête est soit une marche de longueur , soit une marche de longueur suivie de la boucle en . Contrôle : les signes sont et est bien le déterminant de . (Énumération exhaustive exécutée : mêmes marches, mêmes suites.)
Q26. Ici , , , , , . Il manque cinq arcs :
- , poids (type 1, ) ;
- , poids (type 2 : , ) ;
- , poids (type 3 : , ) ;
- , poids (type 4 : , , ) ;
- , poids (type 4 : , ).
100 % gratuit
La suite du corrigé est sur Adloun
Le corrigé rédigé en entier, question par question, et le tuteur pour poser des questions sur ce sujet.
Voir le corrigé complet, gratuitementInscription gratuite en 30 secondes (e-mail, nom d'utilisateur, mot de passe, classe ou profil), sans carte bancaire : arrivée directe sur le corrigé.