NSI Bac: Correction complète d'un exercice graphes et virus en Python

💻 Bac NSI 2024 - Correction de l'exercice sur les graphes et les virus : comprendre, coder et réviser intelligemment !

Ce sujet de spécialité NSI (Numérique et Sciences Informatiques) du bac 2024 pour les centres étrangers proposait un exercice fascinant : lutter contre un virus informatique via des parcours aléatoires sur un réseau modélisé en graphe.

Télécharger le sujet>>

Cet post vous propose une correction détaillée, commentée, et enrichie de rappels de cours pour réviser efficacement les notions essentielles de terminale NSI : graphes, programmation récursive, simulations, et propagation sur réseau. 🧠💡


🎯 Objectif : Protéger le réseau avec des moyens limités

On modélise un réseau de 6 ordinateurs numérotés de 0 à 5. Le virus se déplace au hasard d’un ordinateur à un autre, en suivant les connexions définies dans un graphe.

Le but est de comprendre le comportement probabiliste du virus pour protéger les nœuds les plus vulnérables.


✅ Étape 1 : Représenter le réseau (graphe)

Représentation en liste de voisins :

voisins = [
    [1, 2, 3, 4, 5],  # ordinateur 0
    [0, 2, 3],        # ordinateur 1
    [0, 1, 5],        # ordinateur 2
    [0, 1],           # ordinateur 3
    [0],             # ordinateur 4
    [0, 2]           # ordinateur 5
]

👉 Compétence révisée : représentation des graphes par liste d’adjacence (programme NSI Terminale, thème "Structures de données").


🎲 Étape 2 : Choisir un voisin au hasard

Complétons la fonction :

import random

def voisin_alea(voisins, s):
    return random.choice(voisins[s])

👉 Utilisation de random.choice, plus lisible que randrange.


🔁 Étape 3 : Comprendre la récursivité avec marche_alea

def marche_alea(voisins, i, n):
    if n == 0:
        return i
    return marche_alea(voisins, voisin_alea(voisins, i), n - 1)

📌 Cette fonction est récursive car elle s'appelle elle-même jusqu'à atteindre le cas de base n == 0.

📌 Elle modélise le déplacement aléatoire du virus d’un nœud à un autre, pendant n étapes.

👉 Compétence révisée : récursivité, modélisation d’un phénomène stochastique (programme NSI Terminale, thème "Langages et programmation").


🧪 Étape 4 : Simuler les déplacements

Complétons la fonction simule :

def simule(voisins, i, n_tests, n_pas):
    results = [0] * len(voisins)
    for _ in range(n_tests):
        final_node = marche_alea(voisins, i, n_pas)
        results[final_node] += 1
    return [x / n_tests for x in results]

📊 Interprétation de la sortie [0.328, 0.195, 0.18, 0.12, 0.059, 0.118] : l’ordinateur 0 est le plus fréquemment atteint à la fin → à protéger en priorité !

👉 Compétence révisée : simulation probabiliste, analyse statistique de résultats.


🦠 Étape 5 : Propagation d’un virus (modèle de diffusion)

On simule la propagation du virus : à chaque étape, il contamine tous les voisins non contaminés.

def temps_propagation(voisins, s):
    visites = set([s])
    a_traiter = [s]
    temps = 0
    while len(visites) < len(voisins):
        suivants = []
        for noeud in a_traiter:
            for voisin in voisins[noeud]:
                if voisin not in visites:
                    visites.add(voisin)
                    suivants.append(voisin)
        a_traiter = suivants
        temps += 1
    return temps

💡 Cette fonction implémente un parcours en largeur pour simuler la contamination complète du réseau.

👉 Compétence révisée : algorithmes sur les graphes, BFS (Breadth-First Search).


📚 Notions clés révisées dans cet exercice

Notion Description
Graphe Modélisation d’un réseau par liste de voisins
Récursivité Fonction qui s'appelle elle-même pour modéliser un processus
Parcours aléatoire Déplacement stochastique sur un graphe
Simulation Expérience répétée pour estimer des probabilités
Propagation Utilisation de parcours en largeur
Python Structures : listes, fonctions, modules (random), boucles

🧠 Ce que tu dois retenir pour le bac NSI

  • Savoir modéliser un réseau avec des graphes (listes d’adjacence).

  • Savoir coder une fonction récursive simple.

  • Savoir utiliser des bibliothèques Python comme random.

  • Savoir simuler un processus et analyser des résultats statistiques.

  • Savoir implémenter un algorithme de propagation (BFS).


✍️ Entraînement conseillé

👉 Refais cet exercice avec d’autres graphes que tu inventes.
👉 Modifie les probabilités, change les règles du virus (par ex. propagation partielle), observe les changements.
👉 Code une version avec visualisation (module matplotlib ou networkx).


Commentaires

Posts les plus consultés de ce blog

HGGSP au Bac - Dissertation Corrigée sur le thème de la Préservation du Patrimoine

SES - Terminale - Bac - sujet dissertation corrigé sur l'action publique pour l'environnement

Philo - Dissertation Corrigée - La Conscience