Histoire des algorithmes et enseignement

publicité
Histoire des algorithmes et
enseignement
Anne Boyé, jeudi 28 janvier, stage PAF, IREM-IUFM,
Lycée Jean Perrin.
Le mot
• Algorithme
• Algorithmique
• Pensée algorithmique
• Michel Serres, à propos du texte « Le Menon » de
Platon, qui met en scène Socrate et un esclave :
• « L’esclave pense algorithmiquement, le maître
n’oublie pas la géométrie ».
• Le mot « algorithme »vient du nom du
mathématicien perse du 9° siècle, Abu
Abdullah Muhamad ibn Musa alKhwarizmi.
• (Hisab al-Jabr wa l-Muqabala)
• Au 12° siècle, le traité d’Al-Khwarizmi, et
d’autres, sont traduits de l’arabe en latin.
• Diffusion dans l’Europe médiévale du
système de numération décimal de position et
des chiffres qui seront appelés « arabes ».
• On oppose alors souvent les procédés de
calcul utilisant ce système positionnel,
désignés par les termes algorismes,
algorismus, à l’utilisation de jetons placés sur
une abaque
• A l’origine, algorisme se réfère donc
uniquement aux règles arithmétiques utilisant
les chiffres indo-arabes.
Margarita Philosophica, 1504, Gregor Reisch
Un algoriste, à gauche, et un abaciste, à droite
• Au fil du temps, la signification s’élargit, et le
mot évolue vers « algorithme » (18°s.).
• (on prend le « rithme » comme on l’a fait pour
logarithme, le même que arithmétique).
• D’Alembert, dans l’Encyclopédie :
« Terme arabe, employé par quelques auteurs,
et singulièrement par les espagnols pour
signifier la pratique de l’algèbre. Il se prend
aussi quelquefois pour l’arithmétique par
chiffres … Le même mot se prend, en
général, pour désigner la méthode et la
notation de toute espèce de calcul. En ce
sens, on dit l’algorithme du calcul intégral,
l’algorithme
du
calcul
exponentiel,
l’algorithme des sinus, etc … »
• Un algorithme serait donc tout procédé
de calcul systématique, voire
automatique.
• Est-ce seulement dédié à un
« calcul » ?
• Procédure ? Règle ? Méthode ? Procédé ? Recette ?
Une façon systématique de procéder pour faire
quelque chose ?
• Un ensemble d’instructions pour résoudre un
problème.
• Y a-t-il une différence entre une recette de cuisine et
une méthode de construction d’une figure ?
Si on suit toutes les étapes indiquées on « construit »
ce qui est demandé.
Si on « industrialise » à l’aide de machines le procédé
de confection de la recette, on obtiendra toujours le
même résultat, comme pour un algorithme
mathématique.
• Rôle de la « machine » pour l’exécution d’un
algorithme.
• Notion intuitive de procédé systématique applicable
mécaniquement, sans réfléchir.
Encyclopaedia Universalis :
• « Un algorithme est une suite finie de règles à
appliquer dans un ordre déterminé à un
nombre fini de données pour arriver en un
nombre fini d’étapes, à un certain résultat, et
cela indépendamment des données. »
• → Influence de l’informatique.
Passer de l’algorithme inconscient à l’algorithme
conscient, pour construire la pensée algorithmique.
•
•
•
•
•
On a toujours pratiqué des algorithmes, en « langage naturel »,
avec « papier crayon ».
L’algorithmique est née des mathématiques, on a tendance à la
considérer maintenant comme une spécialité informatique.
On est passé pour cela de l’algorithme inconscient d’autrefois à
une algorithmique consciente.
Il a fallu pour cela reconnaître les situations algorithmiques,
l’itération et la récurrence (non indispensable, mais qui a une
importance dans la pratique - Héron est sans doute un des
premiers qui reconnaît ce processus itératif) et franchir les
problèmes du langage, du symbolisme.
L’algorithmique s’est progressivement développée pour porter
sur des objets de plus en plus complexes, des textes, des
images, des objets physiques, … Ce qui relève d’un traitement
automatisé relève de l’algorithmique.
Du rêve de Leibniz à la machine de
Turing
•
1666 : De arte combinatoria
– Recherche d’une « caractéristique universelle », d’une
langue universelle qui ne devrait pas nécessiter un énorme
dictionnaire, et qui serait sans ambiguïté de
compréhension.
– L’algèbre et l’arithmétique sont des specimens de cette
caractéristique universelle.
– Il voudrait ramener tous les raisonnements mathématiques
à de simples calculs, et construire une machine qui imite la
raison.
– Il met en pratique l’arithmétique
binaire (en base 2) et en montre
les avantages.
– Cette arithmétique sera celle
des ordinateurs.
• Charles Babbage
(1791-1871)
•
•
•
•
•
•
1821 : « Sur l’influence des signes
dans le raisonnement mathématique ».
Il y explique comment le raisonnement mathématique peut
utiliser mécaniquement les signes algébriques.
1847-1848 : il conçoit sa « machine analytique », qui ne sera
jamais achevée.(calculs approchés par des approximations
polynomiales)
Ada Byron Lovelace
(1815-1852)
•
George Boole
(1815-1864)
•
1854 :Les lois de la pensée
•
La logique est une branche des mathématiques et non de la
philosophie. Introduit un formalisme qui permet de décider par
traduction et par calcul si certaines propositions sont vraies ou fausses.
L’algèbre de Boole permettra à Jevons, de construire, en 1870, une
machine mécanique : le piano logique.
•
• Ce sont les travaux de Hilbert qui vont conduire à la
définition du concept d’algorithme.
• 1928 : trois questions fondamentales dont l’une a
pour enjeu de pouvoir ramener toutes les questions
mathématiques à une forme mécanique.
• 1931 : Gödel montre qu’il existe des propositions qui,
à l’intérieur de l’arithmétique, ne peuvent être ni
démontrée ni infirmées.
• 1935 : Alan Turing se demande s’il existe un procédé
mécanique qui permettrait de décider si une
proposition est démontrable ou non. Cette question le
conduira à construire ce que nous appelons
maintenant la « machine de Turing ».
Tous les algorithmes seraient représentables
effectuables sur une machine de Turing.
et
Si
1. l'algorithme consiste en un ensemble fini d'instructions simples
et précises qui sont décrites avec un nombre limité de
symboles ;
2. l'algorithme doit toujours produire le résultat en un nombre fini
d'étapes ;
3. l'algorithme peut en principe être suivi par un humain avec
seulement du papier et un crayon ;
4. l'exécution de l'algorithme ne requiert pas d'intelligence de
l'humain sauf celle qui est nécessaire pour comprendre et
exécuter les instructions.
• La machine imaginée par Turing
comporte un ruban divisé en cases,
dans lesquelles elle peut écrire
des symboles. La machine ne peut
lire qu'une seule case à la fois, de même elle écrit dans une seule case et
décale le ruban d'une seule case vers la gauche ou vers la droite.
Les symboles sont en nombre fini.
• L’algorithmique se construit
• Il ne s’agit plus de rechercher un algorithme pour un
problème particulier mais de chercher à résoudre les
problèmes posés par l’étude générale des
algorithmes, en particulier la complexité des
algorithmes (coût en temps, en quantité de mémoire).
• Problème de la preuve des algorithmes.
• On va construire des algorithmes qui vérifient les
algorithmes.
• Le vieux rêve de Leibniz
se réalise.
Les langages
• Problème de l’écriture des algorithmes et de la conception
de langages compréhensibles par la machine.
Algorithme en français
↓
Codage dans un langage de programmation
↓
Traduction automatique en langage machine (compilation)
↓
Exécution
•
•
•
•
•
•
Grace Murray Hopper (1906-1992)
Conceptrice du premier compilateur en 1951
Et du langage COBOL en 1959.
Invente le mot « bug »,
lorsqu’elle travaillait sur
Harvard mark II.
Retour à la classe
• Eduquer à la pensée algorithmique à partir de
problèmes simples qui peuvent être ceux qui
ont contribué dans l’histoire à la construction
du concept d’algorithme.
• Problèmes de construction
• Problèmes de résolution d’équations
• Problèmes de recherche de valeurs
approchées (de racines carrées-algorithme
de Héron-algorithme des fractions répétées-)
• Problèmes de calculs (algorithmes des
opérations)
• Autour de l’algorithme d’Euclide
• Algorithme de construction géométrique
•
•
•
•
•
•
•
Eléments d’Euclide,proposition 1 livre I
Sur une droite donnée construire un triangle équilatéral.
Soit AB une droite donnée. Il faut alors construire un triangle
équilatéral sur AB.
Construction : que du centre A et au moyen de l’intervalle AB
soit décrit le cercle BCD (dem. 3) ; et qu’ensuite, du centre B et
au moyen de l’intervalle BA soit décrit le cercle ACE (dem. 3), et
que du point C auquel les cercles s’entrecoupent soient jointes
des droites CA, CB jusqu’aux points A, B (dem.1).
Démonstration
Conclusion . Donc le triangle ABC (déf. 20) est équilatéral, et il
est construit sur la droite donnée AB.
Donc sur une droite limitée donnée, un triangle équilatéral est
construit. Ce qu’il fallait faire.
Résolution d’équations du second degré par AlKhwarizmi
• Carrés et racines égaux à des nombres ( ex :
x2 +10 x = 39).
•
•
C’est comme si on disait un carré et dix racines sont égaux à
trente neuf unités. Ce qui signifie le carré qui est combiné avec
dix de ses racines donnera une somme totale de trente neuf.
La règle dans ce cas est de prendre la moitié des racines, soit
cinq. Multipliées en elles-mêmes elles donnent vingt cinq ; en y
ajoutant trente neuf on obtient soixante quatre. Prenons la
racine qui est huit. Ensuite enlevons à ce résultat cinq. Il reste
trois qui est la racine de la puissance. Et la puissance est neuf.
x 2 + ax = b
a
a2
a2
a2
a2 a
a! !
!b+
! b+
! b+
"
2
4
4
4
4 2
a 2
a2
(x + ) = b +
2
4
Différents types d’équations
x 2 + ax = b
x 2 + 10x = 39
x = ax + b
x = 3x + 4
x 2 + b = ax
x 2 + 21 = 10x
2
2
a 2
a2
(x ! ) = b +
2
4
Pour le dernier cas :
Un carré et vingt et un en nombre sont dix racines
Divise en deux les racines, ce qui donne cinq. Multiplie cinq par lui-même, tu obtiens vingt
cinq. Retire les vingt et un ajoutés au carré, il reste quatre. Extrais la racine, cela donne deux.
Retire la de la moitié de la racine, c’est à dire cinq, il reste trois. C’est la racine du carré que
tu cherches et le carré est neuf.
Si tu le désires, ajoute cela à la moitié de la racine. Ce qui donne sept, racine du carré que tu
cherches et dont le carré est quarante neuf.
x 2 + 21 = 10x
5 ! 5 = 25
4 =2
x=3
ou bien
10 ÷ 2 = 5
25 " 21 = 4
5"2= 3
(x " 5)2 = 25 " 21 = 4
donc x " 5 = 2 et x = 5 + 2 = 7
ou 5 " x = 2 et x = 5 " 2 = 3
5+2= 7
x=7
possible car 5 > 2
•
•
•
•
Si tu rencontres un problème qui se ramène à ce cas, examine sa
justesse à l’aide de la soustraction.
Si tu ne le peux, tu obtiendras certainement la solution à l’aide de
l’addition.
Parmi les trois cas, c’est le seul où l’on se sert de l’addition et de la
soustraction.
Sache en outre que si tu divises en deux la racine, que tu la multiplies
par elle-même et que le produit soit plus petit que les nombres ajoutés
au carré, alors le problème est impossible. Mais s’il est égal aux
nombres, la racine du carré est égale à la moitié de la racine sans qu’on
ajoute quoi que ce soit.
x 2 + b = ax
a 2 a2
(x ! ) =
!b
2
4
a2
a2
a
a2
a
a2
>b!
"b ! "
" b et +
"b
4
4
2
4
2
4
Algorithme de Horner
William George Horner
(1786-1837)
Description en 1819 d’une méthode efficace pour économiser des
opérations. (Encore utilisée dans les ordinateurs). Publiée en 1830.
Déjà connue de Newton en 1669, et même d’un mathématicien chinois
du 13° siècle. Cas particulier d’une règle donnée par Paolo Ruffini
(1765-1822). (qui permet aussi de calculer le quotient et le reste de la
division euclidienne d’un polynôme P par un polynôme (x - a)).
Un exemple : on voudrait calculer la valeur de
P(x) = 5x 4 ! 4 x 3 + 3x 2 ! 2x + 1
pour x = 3.
2
3
4
3
2
On remarque que 5x ! 4 x + 3x ! 2x + 1 = 1 + x(!2 + 3x ! 4 x + 5x )
= 1 + x "# !2 + x(3 ! 4x + 5x 2 ) $%
= 1 + x "# !2 + x [ 3 + x(!4 + 5x)]$%
a = 5
b = - 4 + ax
c = 3 + bx
d = - 2 + cx
e = 1 + dx
a = 5
b = - 4 + 5 ! 3 = 11
c = 3 + 11 ! 3 = 36
d = - 2 + 36 ! 3 = 106
e = 1 + 106 ! 3 = 319
P(3) = 319
P(x) = a4 x 4 + a3 x 3 + a2 x 2 + a1 x + a0
a4
= h4
a3
+ h4
= h3
a2
+ h3
= h2
a1
+ h2
= h1
P(x) = a4x4 + a3x3 + a2x2 + a1x + a0
P(x) = (x -
) (h4x3 + h3x2 + h2x + h1) + h0,
a0
+ h1
= h0 = P( )
Téléchargement