Cet article présente une réflexion autour de l’enseignement de SNT et notamment le thème des graphes.
Pourquoi enseigner la SNT quand on est professeur de mathématiques ? Comment utiliser des notions mathématiques pour illustrer les thématiques ?
La notion de graphe paraît particulièrement pertinente dans les thématiques ’réseaux informatiques’, ’réseaux sociaux’ et ’cartographie’. On présentera une manière de représenter des graphes grâce à la bibliothèque Graphviz de Python.
On présente ici une activité qui peut être menée en classe sur le thème des réseaux sociaux, illustrant à partir d’un cas concret certaines notions liées aux graphes.
Graphe
La notion mathématique de graphe a toute sa place en SNT :
- pour modéliser des réseaux informatiques ;
- pour modéliser des réseaux routiers ;
- pour modéliser des réseaux sociaux.
Il est donc important qu’un enseignant puisse créer à sa guise des graphes pour créer des documents pour ses élèves, ou pour illustrer des situations modélisées.
Python est un thème transverse en SNT ; plusieurs thèmes peuvent être traités d’une manière ou d’une autre par ce langage de programmation, et c’est l’un des objectifs de la classe de 2nde (en maths, sciences).
Il faut savoir qu’il est possible de créer des graphes par Python grâce à la bibliothèque graphviz. Cette bibliothèque, pour fonctionner, doit être importée et complétée par un module Graphviz à installer sur votre pc.
Un exemple de code donnant le graphe suivant :
Une activité
Nous proposons une activité qui court sur plusieurs séances ; les détails d’organisation dépendent du fait d’avoir affaire à des groupes en classe entière ou en demi-groupe et du fait d’être en salle informatique ou pas.
Pour ma part, le déroulement a été le suivant :
* une heure en pleine classe en salle de classe classique ;
* une heure en demi-groupe en salle informatique.
L’objectif principal est de modéliser un ’mini’ réseau social par un graphe, et de travailler sur certaines questions concrètes qui permettront d’aborder les notions plus générales sur les graphes, dans l’esprit de ce qui peut être fait en classe de 2nde. Les graphes apportent un outil de modélisation intéressant qui pourra être réinvesti dans d’autres thématiques de SNT ; par ailleurs, le fait de pouvoir coder des graphes en python assurent une certaine continuité de cet enseignement sur l’année.
consigne : Dessiner un réseau social.
2) dessiner un réseau social de manière symbolique
Considérons la situation suivante :
- Alan et Dylan sont amis ;
- Alan et Éline sont amis ;
- Bénédicte et Chloé sont amies ;
- Bénédicte et Dylan sont amis ;
- Bénédicte et Éline sont amies.
Une première modélisation de ce réseau d’amis peut se faire à l’aide du tableau
suivant :
Alan Bénédicte Chloé Dylan Éline Alan X X Bénédicte X X X Chloé X Dylan X X Éline X X
Question 1 : Expliquez le fonctionnement de ce tableau.
On peut aussi modéliser ce réseau social par le graphe suivant :
Remarque pour l’enseignant : ce graphe est réalisé à partir d’un programme Python dont voici le code :
Question 2 : Expliquez le fonctionnement de ce graphe.
vocabulaire : Chaque prénom représente un sommet du graphe ; le lien entre deux sommets est une arête du graphe.
Si on considère que seules les personnes amies peuvent communiquer entre elles, Bénédicte devra passer par Dylan, ou par Éline pour communiquer avec Alan. On dira que la distance entre Bénédicte et Alan est 2. La distance maximale entre Bénédicte et les autres personnes est 2 dans la situation présentée.
Question 3 : Compléter le tableau ci-dessous en notant la distance maximale correspondant à chaque personne :
Alan | Bénédicte | Chloé | Dylan | Éline |
vocabulaire : Cette distance maximale est appelée écartement d’un sommet.
Dans un graphe donné, un centre est un sommet dont l’écartement est minimal.
Un graphe peut comporter plusieurs centres. On interprète ici le centre du graphe comme l’élément d’un réseau par lequel l’information circulera le plus vite.
Question 4 : Qui est (sont) le (les) centre(s) du graphe dans notre situation ?
Le rayon d’un graphe est l’écartement d’un centre du graphe (c’est-à-dire la valeur minimale des écartements déterminés pour les différents sommets).
Question 5 : Quel est le rayon du graphe dans notre situation ?
Dans un graphe donné, le diamètre est la plus longue distance entre deux sommets.
Question 6 : Quel est le diamètre du graphe dans notre situation ?
Partie II
Il est possible, en poursuivant l’activité précédente, de modéliser la transmission de l’information au sein d’un réseau social.
On peut proposer le modèle simple suivant, au sein d’un graphe non orienté : si quelqu’un, à un moment donné, est porteur d’une information, il la transmet à tous ses contacts.
On pourra alors étudier la propagation de l’information, étape par étape, au sein d’un réseau, et comparer les évolutions en fonction du point de départ de l’information.
Question : En reprenant le graphe précédent, coloriez les sommets touchés par une information au fur et à mesure de l’endroit d’où elles sont transmises. On traitera les deux cas suivants :
- 1er cas : Alan a une information qu’il va transmettre ;
- 2nd cas : Bénédicte a une information qu’elle va transmettre.
Question 2 : selon vous, qui transmet l’information le plus rapidement au sein d’un réseau ?
Un graphe de grande taille :
On peut demander aux élèves de représenter très rapidement à main levée un graphe de grande taille (leur réseau social par exemple) avant de montrer les images qui suivent.
En voici en tout cas une modélisation, avec une visualisation de transmission de l’information utilisant le même modèle que celui présenté précédemment :
Question 1 : Comment décririez-vous ce graphe ?
Question 2 : Quelle réalité peut modéliser ce graphe ?
Question 3 : Comment se transmet l’information dans chacune des deux parties distinctes du réseau ?
Partie III
Il est possible de poursuivre l’activité précédente pour introduire la notion de graphe orienté.
Prenons deux réseaux sociaux bien connus : Facebook et Twitter
Question 1 : Quelle est la différence principale dans le mode de fonctionnement de ces deux réseaux ?
Question 2 : Quelle adaptation faut-il faire pour représenter un réseau social du type Twitter par un graphe ?
Question 3 : Adapter une situation analogue à la précédente (un nombre limité de personnes concernées) pour modéliser des liens entre des personnes sur Twitter. Construire le graphe correspondant.
Ici une version ’papier’ de cette activité ; l’introduction (dessiner un réseau social) se fait au préalable, sans avoir distribué la fiche :
Partie IV
L’activité se termine en faisant un lien avec le concept de ’petit monde’ et les élèves construisent des graphes en utilisant python à l’aide d’un modèle.
Question 1 : faites une recherche sur la notion de ’petit monde’, ’expérience de Milgram’
En synthèse, on pourra visualiser cette vidéo.
Question 2 : choisissez une personne ’connue’ et construisez un graphe vous mettant en relation avec cette personne.
Question 3 : en utilisant le code ci-dessous que vous adapterez (graphe orienté ou pas, sommets à renommer), construisez « votre » réseau social.
Les codes
Pour réaliser des graphes de grande taille, j’ai utilisé le principe suivant : un réseau est modélisé par une matrice qui est associée à un graphe. Dans ce modèle, on placera un 1 chaque fois qu’une relation entre deux personnes existe, 0 sinon.
Si on modélise un graphe non orienté, la matrice sera symétrique.
Ainsi, créer une matrice de grande taille permettra de générer un graphe modélisant des réseaux sociaux de grande taille.
Ce programme
regroupe diverses fonctions permettant de :
- générer certains types de matrices associés à des réseaux ’classiques’ ;
- créer une matrice à partir de ces matrices de base ;
- représenter le graphe (orienté ou non) associé à la matrice précédente.
Remarque : ces programmes sont ’faits maison’ donc pas toujours optimisés ... et les Pythoneurs trouveront sans doute bien des points à améliorer !
Quelques exemples :
L’idée est ensuite de concaténer diverses matrices ; si par exemple on concatène une matrice n.n et une matrice m.m, on va créer une matrice (n+m).(n+m) par blocs reprenant les matrices précédentes et en complétant par des 0.
On modélise ainsi deux réseaux sociaux sans lien.
On peut ensuite positionner quelques 1 au hasard dans les blocs de 0, créant ainsi quelques liens entre ces deux réseaux.
Reste à visualiser ces matrices pour représenter des graphes ; c’est le rôle des dernières fonctions présentes dans le code proposé.
- >>> M
- array([[0, 0, 0, 1, 0, 1, 0, 0, 0],
- [0, 0, 1, 0, 0, 0, 0, 0, 0],
- [0, 0, 0, 0, 1, 0, 0, 0, 0],
- [0, 0, 1, 0, 0, 0, 0, 0, 0],
- [0, 0, 0, 0, 0, 0, 0, 1, 0],
- [0, 1, 0, 0, 0, 0, 1, 1, 0],
- [0, 0, 0, 0, 0, 1, 0, 0, 0],
- [0, 0, 0, 0, 0, 0, 1, 0, 0],
- [0, 0, 0, 0, 0, 0, 1, 0, 0]])
- >>> graph(M,1)
Cela va donner le graphe orienté suivant :
Retour d’expérience
L’article comporte certains travaux d’élèves qui ont été placés au fur et à mesure des réponses apportées.
Il est difficile de faire un retour ’didactique’ de ces séances ; cet article relève plus du ’partage d’expérience’ ; ce que je peux en dire est que les élèves ont joué le jeu et ont trouvé intéressant de modéliser des réseaux sociaux .
Pour ma part, je n’étais pas en mesure de ’rivaliser’ avec les élèves sur les caractéristiques des différents réseaux sociaux, n’étant moi-même pas très adepte et j’ai fait le choix d’apporter un éclairage différent en montrant cette modélisation.
Suite à cette activité, nous avons listé les principaux réseaux sociaux et leurs caractéristiques (les élèves ont fait une recherche en salle informatique et ont mutualisé leurs résultats sur un document partagé).
Nous avons évoqué le ’modèle économique des réseaux sociaux’ en visionnant des vidéos qui en présentent les enjeux. Nous avons alors fait le lien avec les cookies.
Enfin, nous avons parlé de cyberviolence et cyberharcèlement pour terminer ce thème ; les moyens de s’en prémunir par des paramétrages des différents réseaux sociaux ont été partagés. Les notions d’e-réputation, d’identité numérique ont été évoquées. Il m’a paru délicat d’aller trop loin dans le ’vécu des élèves’ sur ce sujet (certains élèves ont témoigné de diverses expériences) et j’ai souhaité terminer par quelque chose de plus neutre, à savoir le rappel à la loi par le biais de l’article de loi.
Il me semble avoir ainsi répondu aux exigences du programme, dans un temps raisonnable (en 4 semaines composées de 2 séances d’une heure en pleine classe et 4 séances d’une heure dédoublées en salle informatique) en utilisant des supports variés (programmation, vidéos, échanges/débats, travail personnel, travail par petits groupes).
Conclusion
Cette année est ’expérimentale’ concernant l’enseignement des SNT et je crois important d’éviter l’écueil d’une juxtaposition des sept thèmes recensés. Il est alors important de trouver des liens voire des fils conducteurs, et il me semble que cette activité présente cet intérêt :
- fil conducteur ’technique’, à savoir l’utilisation de Python ;
- fil conducteur ’mathématique’, à savoir la modélisation d’un réseau (social ici) par un graphe.
Il sera intéressant de montrer l’image suivante mettant en évidence le traçage des sites (cette image a été produite par l’extension Lightbeam de Mozilla).
La modélisation présentée par l’utilisation de matrices permettra aux enseignants de créer des graphes à leur guise en vue d’un exercice, d’une activité ou autre.
Mais cela permet aussi la réalisation de graphes de grande taille susceptibles de modéliser des réseaux sociaux existants.
On peut à cette occasion échanger avec les élèves sur le thème de la modélisation et de l’utilisation de l’outil informatique pour généraliser, extrapoler des notions vues à une échelle plus petite.
Citons également d’autres manières de créer des graphes (remarques d’Alain Busser pour les trois premiers points) :
- les outils de LaTeX issus notamment du package tikz ;
- Nirina974 qui exporte au format svg ;
- l’utilisation de CaRMeTal : citons en particulier une activité à destination des élèves de SNT qui permet de créer un graphe de manière collaborative par le biais du réseau informatique du lycée ; à voir ici, sur le site de l’IREM de La Réunion.
- yEd qui est un éditeur de graphe ; un exemple ci-dessous