Le cours
Résumé en cinq points
- Un graphe se représente par sa matrice d'adjacence, adaptée au calcul matriciel, ou par des listes d'adjacence, adaptées au parcours des voisins et plus économiques pour un graphe creux.
- L'algorithme de Dijkstra calcule les plus courts chemins depuis un sommet dans un graphe pondéré à poids positifs, par choix glouton du sommet le plus proche puis relaxation de ses voisins.
- Son coût est de l'ordre du carré du nombre de sommets avec la version simple, et l'hypothèse de poids positifs est indispensable.
- Toute simulation part de
rd.random, qui tire un réel uniformément entre et , et les lois usuelles se simulent en traduisant leur définition, ou avecrd.binomial,rd.randint,rd.geometricetrd.poisson. - Simuler un grand échantillon puis comparer sa moyenne et sa variance aux valeurs théoriques est la méthode de vérification standard, et
matplotlibpermet d'en visualiser la forme.
Pourquoi ce chapitre
Le second semestre met l'informatique au service de deux objets du cours de mathématiques.
- Les graphes, introduits au premier semestre par leur matrice d'adjacence, que l'on reprend ici du point de vue algorithmique, avec le problème du plus court chemin et l'algorithme de Dijkstra.
- Les variables aléatoires, que l'on simule pour vérifier une loi, estimer une espérance, ou étudier un phénomène trop complexe pour le calcul exact.
Un graphe pondéré modélise un réseau de transport, un enchaînement de tâches, un réseau social, et le plus court chemin est le trajet le moins coûteux.
Le programme demande explicitement que l'étude des lois usuelles se fasse en lien étroit avec cette partie. Les questions d'épreuve portent le plus souvent sur la lecture ou le complètement d'un programme court.
Fin de l'aperçu gratuit
Encore 10 parties de cours et 9 corrigés.
Méthodes et exercices
Exercices classiques corrigés
Rangés par thème, du plus simple au plus exigeant. Difficulté et durée indicatives.
Représentation de graphes 2
Exercice 1. Matrice d'adjacence et chemins ★
Application du cours · 15 min · Niveau khôlle
Graphe orienté à quatre sommets, d'arcs Écrire ses listes d'adjacence et sa matrice , calculer , puis le nombre de chemins de longueur de à .
Voir l'indice
Technique la ligne de est la somme des lignes de indexées par les successeurs de .
Voir le corrigé offert
- .
- Les lignes de sont , , , . Elle n'est pas symétrique.
- Ligne de , lignes et de sommées, soit . Ligne , la ligne , soit . Ligne , lignes et sommées, soit . Ligne nulle.
- Le coefficient de vaut sur de . Seul contribue, avec . Un seul chemin, .
piège : Lire en colonnes, ce qui inverse le sens des arcs.
Exercice 2. Conversions et degrés ★
Application du cours · 10 min · Niveau khôlle
Écrire une fonction transformant des listes d'adjacence en matrice. Pour un graphe non orienté, en déduire les degrés et le nombre d'arêtes.
Corrigé détaillé dans Sup et Spé+ : essai gratuit 7 jours.
Plus courts chemins 3
Exercice 3. Dijkstra à la main avec chemin ★★
Classiques de khôlle et concours · 20 min · Niveau khôlle
Graphe non orienté sur à , d'arêtes
Distances depuis et plus court chemin de à .
Voir le début du corrigé
- Départ : 0, INF, INF, INF, INF. …
La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.
Exercice 4. Reconstituer le chemin ★★
Classiques de khôlle et concours · 20 min · Niveau écrit EDHEC ou Ecricome
On ajoute au programme de la fiche une liste pred initialisée à [-1] * n et l'instruction pred[v] = u dans la relaxation.
Écrire une fonction renvoyant les sommets d'un plus court chemin de à .
Corrigé détaillé dans Sup et Spé+ : essai gratuit 7 jours.
Exercice 5. Nombre minimal d'arêtes ★★★
Approfondissement · 35 min · Niveau écrit EDHEC ou Ecricome
Si est accessible depuis , montrer que le nombre minimal d'arêtes d'un chemin de à est le plus petit tel que soit non nul, et que .
Écrire la fonction et comparer avec Dijkstra.
Corrigé détaillé dans Sup et Spé+ : essai gratuit 7 jours.
Simulation de lois 2
Exercice 6. Contrôler une binomiale ★
Application du cours · 10 min · Niveau khôlle
Avec la fonction binomiale de la fiche, simuler réalisations de la loi binomiale de paramètres et .
Comparer moyenne, variance et fréquence de la valeur aux valeurs théoriques.
Voir le début du corrigé
- X = np.array([binomiale(20, 0.3) for k in range(10000)]). …
La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.
Exercice 7. Loi finie par un seul tirage ★★
Classiques de khôlle et concours · 15 min · Niveau khôlle
Simuler telle que
Expliquer pourquoi rappeler rd.random() dans chaque test est faux.
Corrigé détaillé dans Sup et Spé+ : essai gratuit 7 jours.
Estimation par simulation 3
Exercice 8. Collectionner les six faces ★★
Classiques de khôlle et concours · 30 min · Niveau écrit EDHEC ou Ecricome
On lance un dé jusqu'à avoir vu les six faces. Simuler le nombre T de lancers, estimer puis calculer E(T).
Corrigé détaillé dans Sup et Spé+ : essai gratuit 7 jours.
Exercice 9. Retour à l'origine d'une marche aléatoire ★★
Classiques de khôlle et concours · 20 min · Niveau écrit ESSEC ou HEC
Un point part de et fait des pas indépendants de ou avec probabilité .
Estimer puis calculer la probabilité d'être en après pas.
Corrigé détaillé dans Sup et Spé+ : essai gratuit 7 jours.
Exercice 10. Connexité d'un graphe aléatoire ★★★
Approfondissement · 40 min · Niveau écrit ESSEC ou HEC
Sur quatre sommets, chacune des six arêtes possibles est présente avec probabilité , indépendamment.
Estimer la probabilité que le graphe soit connexe en réutilisant Dijkstra, puis la calculer.
Corrigé détaillé dans Sup et Spé+ : essai gratuit 7 jours.
Fiche de cours rédigée à partir du programme officiel d'ECG première année, enseignement annuel d'informatique et algorithmique, partie II « Programme du deuxième semestre », paragraphes « Graphes finis, plus courts chemins » et « Simulation de phénomènes aléatoires », complétée par l'annexe « Langage Python » qui liste limitativement les commandes exigibles, notamment celles de numpy, numpy.linalg, numpy.random, matplotlib.pyplot et pandas.