Adloun

Corrigé CCINP 2025 Maths 2 MP — Exercice 1 (Q1 à Q6) : Graphes orientés en dictionnaire d'adjacence, coloration ; SQL : agrégats et HAVING

Sujet officiel du concours CCINP, session 2025, épreuve Maths 2 MP. Corrigé rédigé par Ibrahim Alame.

Sujet officiel (PDF, site du concours)

Énoncé

Graphes orientés, sommets numérotés à partir de , représentés par un dictionnaire d'adjacence (à chaque sommet, la liste de ses successeurs). Graphe d'exemple : d = \{0:[1,3], 1:[2], 2:[4,5], 3:[4], 4:[1], 5:[], 6:[2]\}. Le graphe inverse de a les mêmes sommets et les arcs de retournés. Une coloration est une liste L (L[s] : couleur entière du sommet s) ; elle est valide si deux sommets reliés par un arc n'ont jamais la même couleur. Deux tables : FILMS(codefilm, nomfilm), de clé primaire codefilm ; LOCATIONS(codecli, codefilm, datedebut, duree), de clé primaire le couple (codecli, codefilm), duree étant un flottant.

Q1. Écrire degreMax(d), qui renvoie le plus grand degré sortant.
Q2. Représenter le graphe inverse du graphe d'exemple ; écrire grapheInv(d), qui renvoie le dictionnaire d'adjacence du graphe inverse.
Q3. Écrire colorationValide(d, L), qui teste la validité de la coloration L.
Q4. Complexité dans le pire des cas de Q3, en fonction du nombre de sommets et du nombre d'arcs.
Q5. Requête SQL : la plus grande durée de location.
Q6. Requête SQL : code, nom et durée moyenne de location des films loués en moyenne moins de 2 jours, par durée moyenne décroissante.

Corrigé

Q1. Dans un dictionnaire d'adjacence, le degré sortant du sommet s est la longueur de la liste de ses successeurs, len(d[s]). On calcule le maximum de ces longueurs par un parcours des clés, en partant de (un degré est toujours positif ou nul) :


def degreMax(d: dict) -> int:
    m = 0
    for s in d:
        if len(d[s]) > m:
            m = len(d[s])
    return m

Après le traitement des clés déjà vues, m est le plus grand de leurs degrés sortants (invariant de boucle, vrai au départ pour l'ensemble vide avec la valeur ) ; à la sortie, c'est donc le degré sortant maximal du graphe. Sur l'exemple, les degrés sortants des sommets à sont et la fonction renvoie . Pour un graphe sans sommet, elle renvoie .

Ce que le correcteur attend : le rapport du jury rappelle que la fonction max() de Python ne doit pas être utilisée : on écrit la boucle. Il signale aussi la confusion fréquente entre clés et valeurs du dictionnaire : for s in d parcourt les clés (les sommets), et d[s] est la valeur associée (la liste des successeurs).

Q2. Le graphe inverse de l'exemple. Les arcs du graphe d'exemple sont , , , , , , , ; on les retourne : , , , , , , , .

Son dictionnaire d'adjacence est \{0:[], 1:[0,4], 2:[1,6], 3:[0], 4:[2,3], 5:[2], 6:[]\}.

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, gratuitement

Inscription gratuite en 30 secondes (e-mail, nom d'utilisateur, mot de passe, classe ou profil), sans carte bancaire : arrivée directe sur le corrigé.

Toutes les parties de l'épreuve

Corrigé complet gratuit →