• Aucun résultat trouvé

Énoncés autour de l’algorithmique et du calcul

Dans le document tel-00416598, version 1 - 14 Sep 2009 (Page 66-71)

2.3 Analyse d’une première transposition : le graphe au programme de la Ter-

2.4.4 Énoncés autour de l’algorithmique et du calcul

2.4.4.1 A1 : Construire un algorithme

Cet énoncé n’a été vu qu’une seule fois, et il ne correspond pas à une réelle construction d’algorithme. De fait, il consistait à transformer l’algorithme de Bellman en algorithme de recherche de plus long chemin orienté.

1Un automate est déterministe si tous les arcs sortant de chaque sommet ont des étiquettes différentes.

Une propriété fondamentale est que tout automate fini non déterministe est transformable en un automate fini déterministe équivalent.

tel-00416598, version 1 - 14 Sep 2009

Alors que la théorie des graphes a été introduite sur la motivation d’enseigner des éléments d’algorithmiques, la construction d’algorithme ne fait pas partie du programme.

2.4.4.2 A2 : Appliquer l’algorithme de Dijkstra

Reprenons le programme par rapport aux algorithmes :on indiquera que pour des graphes complexes, des algorithmes de résolutions de certains problèmes sont absolument néces-saires.L’algorithme de Dijkstra serait-il absolument nécessaire pour trouver un plus court chemin dans les graphes proposés dans le document d’accompagnement ou les manuels ? Sûrement pas. Étant donnée la taille des graphes présentés, même une recherche par exhaustivité pourrait être aussi rapide1 et plus simple à mettre en œuvre.

La suite du programme est plus précise : on présentera un algorithme simple de colo-riage des graphes et un algorithme de recherche de plus courte chaîne. Pourquoi tous les manuels proposent-ils donc l’algorithme de Dijkstra et non un autre algorithme de plus court chemin comme celui de Bellman, par exemple ? Sûrement parce que l’algorithme de Dijkstra figure dans le document d’accompagnement des programmes. La colonne « com-mentaires » du programme précise encore, par rapport aux algorithmes : on restera très modeste quant à leurs conditions de mise en oeuvre.Mais que signifierester modeste dans la mise en œuvre d’un algorithme? La question reste ouverte pour nous.

Souvenons-nous que le programme de la Terminale ES se veut basé sur la résolution de problèmes. Les élèves pourraient-ils « inventer », construire l’algorithme de Dijkstra ? Nous pensons que cela n’est pas possible, et que ce n’est pas dénigrer leurs capacités que de le penser : l’algorithme est complexe, sa preuve aussi. Le document d’accompagnement l’affirme d’ailleurs :

Remarque - À la fin de l’algorithme, tous les poids marqués à l’encre donnent les lon-gueurs des plus courtes chaînes reliant les sommets considérés au sommet initial. Une preuve formelle de ce fait est difficile (comme il est difficile, par exemple, de prouver formellement que l’algorithme classique de multiplication des entiers donne le nombre cherché) et n’est pas exigible. On peut calculer que, si le nombre de sommets est n, le nombre d’opérations à faire est au plus de l’ordre du carré de n, ce qui est en général beaucoup plus petit que le nombre de chaînes sans cycles reliant E à S : c’est donc bien plus efficace que l’algorithme élémentaire qui consiste à regarder toutes les chaînes reliant E à S, et à chercher la plus courte.

Il semble que le choix pour les enseignants soit relativement restreint par rapport à l’enseignement de cet algorithme. Leurs élèves doivent savoir l’appliquer, pas plus.

Le document d’accompagnement des programmes propose l’agorithme ainsi :

L’idée de l’algorithme est de procéder de proche en proche, en marquant à chaque étape au crayon dire de façon provisoire) certains sommets, puis à l’encre (c’est-à-dire de façon définitive) un des sommets déjà marqués au crayon. On arrête quand on

1Il ne s’agit pas ici de la rapidité au sens du nombre d’opérations qu’un ordinateur aurait à effectuer, mais bien de la différence de temps pour l’élève entre l’application de l’algorithme de Dijkstra et la construction d’un arbre de dénombrement, par exemple.

tel-00416598, version 1 - 14 Sep 2009

a marqué à l’encre le sommet final.

On cherche le plus court chemin de E à S sur le graphe suivant :

Fig. 2.17: Exemple

Pour démarrer, on marque à l’encre (rouge) le sommetE avec le poids 0, puisque le plus court chemin de E à E est évidemment de longueur 0. Chaque étape de l’algorithme consiste ensuite à exécuter les actions suivantes, tant que le sommetS à atteindre n’est pas marqué à l’encre.

◦ Soit T le dernier sommet marqué à l’encre.

◦ Pour tout sommetT0 non encore marqué à l’encre et adjacent à T, calculer la somme s du poids de T et du poids de l’arête reliant T à T0; si T0 n’est pas encore marqué au crayon (noir), marquer T0 au crayon avec le poids s; si T0 est déjà marqué au crayon, remplacer (toujours au crayon) le poids provisoire de T0 par s si s est plus petit (on a trouvé un chemin plus court), sinon garder le poids précédent.

◦ Parmi tous les sommets marqués au crayon, en choisir un de poids minimum et marquer à l’encre ce poids.

On réitère l’opération tant que le sommet final S n’est pas marqué à l’encre. Quand l’algorithme se termine, le poids marqué enS est la longueur d’une plus courte chaîne reliant E à S.

Le document d’accompagnement et tous les manuels proposent une autre « méthode » pour appliquer l’algorithme consistant à remplir un tableau. Elle est toujours donnée sur des exemples. En voici une tentative de généralisation, librement inspirée de celle proposée par le manuel Transmath (Manuel Transmath [55] pages 318 et 319) :

On a un graphe dont lesnsommets sont nommés et les arêtes pondéréespar des nombres positifs1. On cherche à établir un plus court chemin entre deux sommets du graphe E et S.

– On trace un tableau à n+ 1 colonnes. Sur la première ligne on place d’abord le nom des sommets en commençant parE et en finissant par S, puis on écrit dans la dernière case « sommet selectionné ».

– (Première ligne : initialisation) On écrit 0 dans la première colonne et∞dans lesn−1 suivantes. On écrit E dans la dernière colonne (E est le sommet sélectionné), et on raye dans la colonneE toutes les lignes suivant la dernière ligne remplie.

1Les graphes pondérés n’étant définis en Terminale ES que pour des pondérations positives, la ques-tion de savoir comment se comporte l’algorithme sur un graphe dont les pondéraques-tions peuvent être négatives n’est pas posée.

tel-00416598, version 1 - 14 Sep 2009

– (Deuxième ligne) Soit X le « sommet selectionné » à la ligne précédente et A l’un de ses voisins. Si, sur la ligne précédente, la valeur dans la colonne A est supérieure à la somme de la valeur dans la colonne de X avec le poids de l’arête entre X et A, alors on écrit sur la ligne courante la valeur de cette somme suivie du nom X.

Cette opération est répétée pour tous les voisins deX.

On raye la colonne de X.

Pour toutes les cases vides de la ligne sauf la dernière on recopie le contenu de la case située au dessus. On écrit dans la colonne de droite le nom d’un sommet dont la colonne n’est pas barrée et pour lequel la valeur inscrite dans sa colonne est minimale.

– On réitère l’étape précédente jusqu’à ce que l’on écrive S dans la colonne de droite.

Pour lire un plus court chemin entre E et S dans le tableau, on écrit de droite à gauche1 la séquence de lettres commençant par S, puis par x la dernière lettre écrite dans la colonne de S, puis par y la dernière lettre écrite dans la colonne de x,. . . , jusqu’à écrire E.

Cette technique par tableau semble appréciée par les enseignants. L’une des raisons est qu’elle permet la vérification et la correction des copies. Un enseignant rencontré lors d’un stage de formation nous a « avoué », ce sont ses termes, qu’il aimait bien le tableau car il offre une présentation claire qui « fait mathématique » (comme les tableaux de variations de fonctions, par exemple).

Aucune question sur les limites de l’algorithme n’a été trouvée : Que donne l’algorithme sur un graphe non connexe ? sur un graphe avec des pondérations négatives ? Peut-on le simplifier si toutes les arêtes sont de même poids ? . . .

2.4.4.3 A3 : Colorer un graphe par un algorithme de coloration

Cet énoncé est généralement associé à P4, « établir le nombre chromatique d’un graphe ».

Une écrasante majorité d’exercices et problèmes de manuels associant ces énoncés peut être résolue ainsi :

– On applique l’algorithme de Welsh et Powell à un graphe qui donne une coloration en χcouleurs.

– On cherche la plus grande clique du graphe. Elle aχ sommets.

– On conclut que χ est le nombre chromatique du graphe.

Les graphes donnés aux élèves sont bien choisis : ils ont une clique de la même taille que leur nombre chromatique, et leur appliquer l’algorithme de Welsh et Powell donne une coloration optimale.

Ce type d’exercices conduit dangereusement les élèves à deux conceptions complètement erronées de la coloration : « la taille de la plus grande clique d’un graphe est égale à son nombre chromatique » et « l’algorithme de Welsh et Powell fournit une coloration optimale ».

1Cette phrase n’a de sens que dans l’optique de l’application de l’algorithme à des graphes orientés.

tel-00416598, version 1 - 14 Sep 2009

2.4.4.4 A4 : Trouver le plus court chemin entre deux sommets d’un graphe Nous avons constaté dans les manuels que cet énoncé est quasiment équivalent à A2, appliquer l’algorithme de Dijkstra. Construire un arbre de dénombrement des chemins possibles pourrait être une autre façon de répondre, mais cette réponse ne paraît pas attendue.

2.4.4.5 A5 : Résoudre un problème d’ordonnancement

Le manuel Déclic ([53]) propose deux exemples1 de tels problèmes à résoudre. Il propose de plus une « méthode associée » :

Schématiser l’ordonnancement des opérations à l’aide d’un graphe en faisant apparaître leur durée.

Pour cela, penser qu’une arête orientée du sommet i vers le sommet j, pondérée par un nombret signifie que l’opérationi doit être réalisée immédiatement avant l’action j et demande au moins t minutes.

Le termeimmédiatementdoit être retiré de la phrase précédente. Si deux tâches ordonnées devaient impérativement se réaliser sans qu’une pause entre les tâches ne soit possible, la plupart des problèmes d’ordonnancement n’auraient pas de solution.

Pour ce problème (rare), nulle technique n’est proposée, et l’idée que la longueur du plus long chemin dans le graphe donne la durée minimum nécessaire à l’accomplissement des tâches n’est pas donnée.

2.4.4.6 A6 : Effectuer des calculs matriciels

Les calculs matriciels supposés connus des élèves sont des calculs de somme et de produit pour de « petites » matrices (maximum 3 par 3 à la main et 6 par 6 avec leurs calcu-latrices). Nous ne donnerons pas ici les techniques associées à ces calculs matriciels, qui, pour les élèves, correspondent à la connaissance des fonctions de calcul matriciel de leur calculatrice.

2.4.4.7 A7 : Interpréter les puissances d’une matrice

L’interprétation de ces calculs est unique : le coefficient aij de la puissance n-ième de la matrice d’adjacence associée à un graphe est le nombre de chemins de longueur n entre les sommets i etj.

Le concept dechemin dans un graphe revient à plusieurs reprises dans le programme, en particulier autour des chemins eulériens et des plus courts chemins. À la différence des autres, ceux évoqués ici peuvent passer plusieurs fois par les mêmes arêtes.

1Activité 3 page 239 et problème 42 page 245.

tel-00416598, version 1 - 14 Sep 2009

La représentation matricielle, évoquée par les programmes comme justifiant l’introduction des graphes, n’est utilisée que sur un problème marginal.

2.5 Constats sur ce que permet l’enseignement des

Dans le document tel-00416598, version 1 - 14 Sep 2009 (Page 66-71)