article mathematice
par
Cet article présente une réflexion autour de l’enseignement de SNT et notamment le thème des 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 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.
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 di-é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 ?
activité (suite)
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 contact.
On pourra alors étudier la propagation de l’information, étape par étape, au sein d’un réseau, et comparer les évolutions en fonction d’où part l’information.
Question : En reprenant le graphe précédent, colorez les sommets touchés par une information au fur et à mesure où elles sont transmise. 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 :
Voici une modélisation de graphe de grande dimension, 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 ?
graphe orienté
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.
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 pouvoir 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 :
![]() |
conclusion
Cet article présente une manière de créer des graphes à l’aide de python pour créer des situations à proposer aux élèves.
Si l’installation a été possible sur les postes de votre lycée, pourquoi ne pas proposer aux élèves de coder des graphes correspondants à diverses situations simple ?
Cette méthode vous permettra à vous enseignant en tout cas de créer des graphes de taille raisonnable support d’exercices pour les élèves.
Mais cela permet aussi de générer des matrices et donc des graphes de grande taille susceptibles de modéliser des réseaux sociaux existants.