Aller au contenu
Télécharger l'application

Accueil › Concours › MP

X-ENS · MP · session 2026

Informatique B

corrigé question par question

  • Informatique
  • 16 questions
  • Sujet entier, Q1 à Q16

Le sujet complet

Afficher le sujet officiel complet

Ouvrir le PDF officiel en plein écran ↗

Aperçu : Q1

Les théorèmes cités renvoient à nos cours, au théorème même. Dans l'app Sup et Spé, ces liens ouvrent le cours dans l'app, sans quitter le corrigé.

Partie I. Détection de cycles

Notations et définitions.

Le graphe orienté fini GG a pour ensemble de sommets VV.

Plusieurs arcs peuvent avoir la même source et la même cible, avec des étiquettes différentes.

Le dictionnaire Python G associe à chaque sommet la liste de ses successeurs.

L’indice d’un élément dans cette liste est l’étiquette de l’arc correspondant.

Les hypothèses générales sont les suivantes :

  • A0 : les étiquettes des arcs sortant d’un sommet sont les entiers consécutifs commençant à zéro ;
  • A1 : le graphe ne contient aucun cycle orienté.

Pour (s,t)∈V2(s,t)\in V^2, la notation s⇝ts\rightsquigarrow t signifie qu’un chemin orienté relie ss à tt.

Le chemin de longueur nulle est autorisé, donc s⇝ss\rightsquigarrow s.

Les dictionnaires globaux époque et sortie associent un entier à chaque sommet.

Les variables globales présent et compteur sont des entiers.

Dans les formules, notons p∈Zp\in\mathbb{Z} la valeur de présent, et τ,σ:V→Z\tau,\sigma:V\to\mathbb{Z} les applications définies par les valeurs de époque et sortie :

τ(s)=valeur de eˊpoque[s],σ(s)=valeur de sortie[s].\begin{aligned} \tau(s)&=\text{valeur de }\texttt{époque[s]},\\ \sigma(s)&=\text{valeur de }\texttt{sortie[s]}. \end{aligned}

Les invariants suivants sont disponibles hors de l’exécution de pp :

  • A2 : pour tout s∈Vs\in V, τ(s)≤p\tau(s)\le p ;
  • A3 : pour tout arc s→ts\to t, τ(s)≤τ(t)\tau(s)\le\tau(t) ;
  • A4 : pour tout arc s→ts\to t,
τ(s)=τ(t) ⇒ σ(s)≥σ(t).\tau(s)=\tau(t) \ \Rightarrow\ \sigma(s)\ge\sigma(t).

La fonction pp(s) effectue les opérations suivantes :

  • elle affecte présent à époque[s] ;
  • elle parcourt G[s] dans l’ordre des indices et appelle récursivement pp(t) pour chaque successeur dont l’époque diffère de présent ;
  • après ce parcours, elle affecte compteur à sortie[s], puis incrémente compteur.

On admet la propriété de parcours en profondeur annoncée dans l’énoncé.

On utilise également, lorsqu’elle suffit, la préservation de A2, A3 et A4 par un appel complet à pp.

La fonction accessible(s, t) renvoie immédiatement False lorsque

τ(s)>τ(t),\tau(s)>\tau(t),

ou lorsque les époques sont égales et σ(s)<σ(t)\sigma(s)<\sigma(t).

Sinon, elle incrémente présent, exécute pp(s), puis renvoie le résultat du test époque[t] == présent.

La fonction lier(u, s) appelle accessible(s, u).

Si cet appel renvoie False, elle ajoute s à la liste G[u] et renvoie True.

Sinon, elle renvoie False sans ajouter d’arc.

Le graphe de l’exemple est défini par les listes suivantes :

G = {
    'a': ['c', 'd'],
    'b': ['d', 'c'],
    'c': ['X', 'Y'],
    'd': ['Y', 'X'],
    'e': ['W', 'Z'],
    'W': ['Z'],
    'X': [],
    'Y': [],
    'Z': [],
}

Pour Q1, les valeurs initiales des deux dictionnaires sont toutes nulles, compteur vaut zéro et présent vaut un.

Les accès aux dictionnaires, les tests de présence dans un dictionnaire, les accès aux listes, len, append et pop ont les coûts constants admis par l’énoncé.

Q1.

Voir le corrigé

Déterminons les dictionnaires sortie et époque après l’appel pp('a') avec l’initialisation indiquée.

sortie = {
    'a': 4,
    'b': 0,
    'c': 2,
    'd': 3,
    'e': 0,
    'W': 0,
    'X': 0,
    'Y': 1,
    'Z': 0,
}
époque = {
    'a': 1,
    'b': 0,
    'c': 1,
    'd': 1,
    'e': 0,
    'W': 0,
    'X': 1,
    'Y': 1,
    'Z': 0,
}

Q2

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

Q3

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

Q4

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

Q5

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

Q6

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

Q7

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

Q8

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

Q9

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

Q10

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

Q11

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

Q12

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

Q13

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

Q14

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

Q15

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

Q16

Voir le corrigé

Corrigé complet avec Sup et Spé+ : essai gratuit 7 jours.

La suite, de Q2 à Q16 : accès Sup et Spé+

Avec Sup et Spé+, tous les corrigés en entier, chaque question sous l'énoncé officiel, rédigés comme une copie et vérifiés.

Essayer 7 jours gratuitement Sans engagement · cours, exercices et fiches complets

Télécharger dans l'App Store
Aller à une question
  • Q1 Libre
  • Q2
  • Q3
  • Q4
  • Q5
  • Q6
  • Q7
  • Q8
  • Q9
  • Q10
  • Q11
  • Q12
  • Q13
  • Q14
  • Q15
  • Q16

Autres sujets de MP