Algorithme

publicité
 4/45
Prolégomènes
Algorithme
L'informatique avant
Ramsès II
●
Etymologie
« XIIIe siècle, augorisme. Altération, sous l'influence du
grec arithmos, « nombre », d'algorisme, qui, par
l'espagnol, remonte à l'arabe Al-Khuwarizmi, surnom d'un
mathématicien »
●
Définition
« Méthode de calcul qui indique la démarche à suivre
pour résoudre une série de problèmes équivalents en
appliquant dans un ordre précis une suite finie de règles.
L'algorithme de la multiplication de nombres à plusieurs
chiffres »
Richard G. TERRAT
Ingénieur A&M
Maître de conférences honoraire en Informatique
Université de Montpellier
Académie française
Pierre-rouge Sciences - Assas
Richard Terrat
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
2/45
Sommaire
●
●
Prolégomènes
–
informatique
–
algorithme
Bagdad
850 → 1200
Périple autour des algorithmes et du codage
–
l'Égypte
–
Babylone
Alexandrie
-300 → 600
Thèbes
-1800 → -1500
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
3/45
Prolégomènes
Pierre-rouge Sciences - Assas
Quatre « piliers »
–
l'algorithmique
–
l'information : représentation, codage
la programmation (parfois improprement appelée
aussi « codage ») et ses langages
l'ordinateur
–
–
« L'ordinateur est à l'informaticien ce que le télescope est
à l'astronome » (Jacques Arsac, membre de l'Académie
des Sciences)
« L'informatique n'est pas plus la science des ordinateurs
que l'astronomie n'est celle des télescopes. » (Michael R.
Fellows et Ian Parberry - Computing Research News –
Janvier 1993)
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
Inde
200 → 700
8 mars 2016
Richard Terrat
6/45
Bagdad
Informatique
●
Chine
-1000 → -300
Babylone
-2500 → -1500
La maison de la sagesse
●
●
Numération décimale positionnelle avec zéro
–
issue de l'Inde
–
utilisée de nos jours
Fondation de l'Algèbre par Al Khuwarizmi dont
le nom est à l'origine des mots
–
algèbre
–
algorithme
et dont les algorithmes sont toujours ceux enseignés
et utilisés aujourd'hui
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
7/45
Inde
L'inde
Apparition du zéro en tant que
●
–
–
chiffre
nombre
Alexandrie
-300 → 600
Algorithmes des opérations arithmétiques
(Aryabhata)
●
–
–
multiplication, division
racine carrée
Solutions positives des équations
(Brahmagupta)
●
Thèbes
-1800 → -1500
premier degré
second degré
ces algorithmes ont été à l'origine des travaux d'Al
Khawarizimi
Pierre-rouge
Sciences - Assas
8 mars 2016
Richard Terrat
–
–
Pierre-rouge Sciences - Assas
La chine
L'Égypte
●
Numération décimale additive puis positionnelle
●
Mathématiques constructivistes
●
Démonstrations par algorithmes
●
Résolution de systèmes d'équations linéaires
–
Codage binaire (Yi Jing)
–
dont Gottfried Wilhelm Leibniz s'est inspiré
–
utilisé aujourd'hui dans tous les codes
informatiques
8 mars 2016
Richard Terrat
9/45
Alexandrie
La bibliothèque d'Alexandrie
●
Numération décimale additive
●
Mathématiques axiomatiques
–
axiomatique de la géométrie par Euclide
toujours enseignée aujourd'hui
Algorithmes de calcul
–
Pgcd (Euclide)
–
Racine carrée (Héron)
qui sont ceux enseignés et utilisés aujourd'hui
Pierre-rouge Sciences - Assas
Codage
● Le papyrus Rhind
● L'algorithme de multiplication
●
méthode de Gauss utilisée aujourd'hui
Pierre-rouge Sciences - Assas
●
Richard Terrat
8/45
Chine
●
8 mars 2016
8 mars 2016
Richard Terrat
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
13/45
Égypte
Le papyrus « Rhind »
●
L'algorithme de multiplication
découvert au XIX ème
siècle dans la tombe de
Ramsès II (Thèbes)
Calcul de 19 x 35
●
Auteur : Ahmès
35 x 2 =
●
5m de long 14 feuilles
70 x 2 =
●
daté du XVIème siècle
av. J. C.
reprend un papyrus plus
ancien du XIXème siècle
av. J. C.
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
14/45
Le papyrus « Rhind »
●
●
●
●
–
–
–
–
●
2
2÷2
1 √
1÷2
0
560 16
√
8 mars 2016
8 mars 2016
Richard Terrat
17/45
Égypte
Calcul de 19 x 35
19 = 2 x 9 + 1
9 =2x4+1
4=2x2+0
2=2x1+0
1=2x0+1
Richard Terrat
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
18/45
Égypte
L'algorithme de multiplication
Dite aussi « du paysan russe »
carré, rectangle, triangle, trapèze
Calcul des volumes
pyramides
Valeur de π
problèmes 48 à 50
–
aire d’un cercle de diamètre 9 unités =
aire d’un carré de côté 8 unités
–
π.92/4 ≈ 82
π ≈ 4 x(8 /9)2 ≈ 3,16
c’est la quadrature (approchée) du cercle !
–
8
9 √
décomposition de 19 en … binaire !
1910 = 100112
Calcul des aires
–
4
4÷2
19 √
19 ÷ 2
19 = 16 + 2 + 1 = 24 + 21 + 20
Le papyrus « Rhind »
●
9÷2
Pierre-rouge Sciences - Assas
●
15/45
–
4
280 x 2 =
(24 à 27)
Égypte
●
140
280
résolution par la méthode des « fausses suppositions »
Pierre-rouge Sciences - Assas
2
140 x 2 =
les 4 opérations
tables : multiplication, inverse, ...
opérations sur les fractions (7 à 23)
équations du 1er degré
●
70
√
L'algorithme de multiplication
réthorique
pas d’abstraction explicite
pas de logique
pas de démonstration
problèmes « concrets »
calculs arithmétiques
●
√
---------------------665 19
Égypte
●
1
35
●
●
Pierre-rouge Sciences - Assas
16/45
Égypte
8 mars 2016
35 x 19
140 x 4 + 105
35 x 18 + 35
280 x 2 + 105
70 x 9 + 35
560 x 1 + 105
70 x 8 + 70 + 35
1120 x 0 + 560 + 105
70 x 8 + 105
560 + 105
665
Richard Terrat
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
19/45
Égypte
L'algorithme de multiplication
L'algorithme de multiplication
selon Pythagore
Pour multiplier a par b avec r comme résultat
Pour multiplier a par b avec r comme résultat
●
je pose r = 0
●
●
tant que b n'est pas nul
●
–
si b est impair
●
●
–
–
j'ajoute a à r
–
je multiplie a par 2
–
je divise b par 2 (par défaut)
–
–
maintenant que b est nul, r est le résultat
–
●
Pierre-rouge Sciences - Assas
je pose r = 0
tant que b n'est pas nul :
8 mars 2016
Richard Terrat
je prends le dernier chiffre de b
je multiplie ce dernier chiffre par a
● cf. table de multiplication de Pythagore
je l'ajoute à r
je multiplie a par dix
je divise b par dix (par défaut)
maintenant que b est nul, r est le résultat
Pierre-rouge Sciences - Assas
Richard Terrat
20/45
Égypte
L'algorithme de multiplication
L'algorithme de multiplication
Le programme en Python
Le programme en Python
def ahmès (a,b) :
# données : 2 entiers naturels
# résultat : leur produit selon la méthode d'Ahmès
r = 0
while b != 0 : # invariant : r + a*b
c = b%2
if c != 0 :
r = r+a
a = a*2
b = b//2
return r
def pythagore (a,b) :
# données : 2 entiers naturels
# résultat : leur produit selon la méthode de Pythagore
r = 0
while b != 0 : # invariant : r + a*b
c = b%10
if c != 0 :
r = r + produitParUnChiffre (c,a)
a = a*10
b = b//10
return r
L'algorithme de multiplication
L'algorithme de multiplication
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
Pierre-rouge Sciences - Assas
selon Pythagore
19 x 35
9 x 35
10 x 35 + 9 x 35
9 x 30 + 9 x 5
10 x 35 + 315
9 x 30 + 45
1 x 350 + 315
9 x 3 x 10 + 45
350 + 315
27 x 10 + 45
665
315
Pierre-rouge Sciences - Assas
8 mars 2016
8 mars 2016
8 mars 2016
Richard Terrat
Le programme en Python
Richard Terrat
def produitParUnChiffre (a,b) :
# données : a chiffre décimal, b entier naturel
# résultat : le produit de a par b
r = 0
while b != 0 : # invariant : r + a*b
c = b%10
if c != 0 :
r = r + c*a # table de multiplication
a = a*10
b = b//10
return r
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
28/45
Babylone
Et dans les ordinateurs ...
●
–
–
●
–
●
–
beaucoup d'opérations simples
peu d'opérations complexes
–
–
les nombres sont codés en binaire !
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
Babylone
-2500 → -1500
Babylone
Thèbes
Thèbes
-1800 → -1500
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
Babylone
Historique
● Codage
● Algorithmes
●
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
400 tablettes d'argile mises au jour
depuis les années 1850 datées de -2 500 à -1 500
Contenus
–
Un indice :
–
Sources
–
comme les égyptiens ?
comme Pythagore ?
autrement ?
Préférences ?
–
●
●
On fait comment ?
–
Historique
calculs arithmétiques : multiplications, divisions,
fractions, racines carrées
géométrie : calculs d'hypoténuse, triplets
pythagoriciens, théorème de Pythagore
algèbre : équations du premier, second et troisième
degré
éléments de trigonométrie
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
34/45
Babylone
Algorithmes
La Tablette YBC 7289
●
[30] = 1/2
[1 ; 24 ; 51 ; 10 ] = 1,414 213
[42 ; 25 ; 35 ] = 0,707 106
or on sait que :
√2 = 1,414 213
√2 / 2 = 1 / √2 = 0,707 106
c'est donc le valeur de √2 avec 6 décimales exactes !
par recoupement avec d'autres tablettes, on pense
qu'elle a été calculée par … l'algorithme de Héron !!
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
35/45
Babylone
Algorithmes
●
La multiplication
–
plusieurs méthodes dont celle … de Pythagore !
–
utilisation de nombreuses tables : carrés, inverses
–
utilisation d'identités remarquables :
–
●
(a + b)2 = a2 + 2 a.b + b2 ⇒ a.b = ((a + b)2 - a2 - b2) /2
●
(a - b)2 = a2 - 2 a.b + b2 ⇒ a.b = ((a + b)2 - (a - b)2 ) /4
décomposition en carrés : méthode analogue au
calcul du pgcd …. d'Euclide !
Pierre-rouge Sciences - Assas
33/45
Babylone
tablette Babylonienne
YBC 7289
–
datée de - 1700
–
collection
babylonienne Yale
University
Pierre-rouge Sciences - Assas
Algorithmes
●
Algorithme de
Babylone
–
Richard Terrat
36/45
Babylone
Algorithmes
●
8 mars 2016
La multiplication par décomposition en carrés
–
exemple : 22 x 14
0
22 x 14
8 mars 2016
Richard Terrat
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
37/45
Babylone
40/45
Babylone
Algorithmes
●
Algorithmes
La multiplication par décomposition en carrés
–
●
exemple : 22 x 14
La multiplication par décomposition en carrés
exemple : 22 x 14
–
+ 196
0
196
+ 196
+ 64
+ 36
+ 4
8x8
14 x 14
8 x 14
0
196
260
296
300
14 x 14
2x2
6x6
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
38/45
Babylone
Pierre-rouge Sciences - Assas
Richard Terrat
41/45
Algorithmes
La multiplication par décomposition en carrés
–
8 mars 2016
Babylone
Algorithmes
●
2x4
●
exemple : 22 x 14
La multiplication par décomposition en carrés
exemple : 22 x 14
–
+ 196
+ 64
0
196
260
8x8
8x8
14 x 14
14 x 14
2x2
6x6
8x6
+ 196
+ 64
+ 36
+ 4
+ 4
+ 4
0
196
260
296
300
304
308
2x2
2x2
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
39/45
Babylone
Pierre-rouge Sciences - Assas
Algorithmes
La multiplication par décomposition en carrés
–
exemple : 22 x 14
+ 196
+ 64
+ 36
8x8
0
196
260
296
●
La multiplication
●
je pose r = 0
tant que a ≠ 0 et b ≠ 0 :
–
si a ≥ b
j'ajoute b2 à P
je retranche b de a
sinon
●
●
14 x 14
–
6x6
●
2x6
●
Pierre-rouge Sciences - Assas
Richard Terrat
42/45
Babylone
Algorithmes
●
8 mars 2016
8 mars 2016
Richard Terrat
j'ajoute a2 à P
je retranche a de b
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
43/45
Babylone
Algorithmes
Le programme en Python
def babylone (a,b) :
# données : 2 entiers naturels
# résultat : leur produit selon une méthode babylonienne
r = 0
while a != 0 and b != 0 : # invariant : r + a*b
if a>b :
r = r + b**2
# cf. : table des carrés
a = a-b
else :
r = r + a**2
# cf. : table des carrés
b = b-a
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
return r
Calculabilité
●
Question
–
–
peut-on « tout » calculer ?
existe-t-il un algorithme pour tout problème posé ?
●
Réponse
●
Exemple
–
–
NON
existe-t-il un agorithme permettant de calculer les
solutions des équations de Diophante (fondées en
250) ?
●
●
problème posé par David Hilbert en 1900
résolu négativement par Yuri Matiyasevitch en 1970
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
Bibliographie
●
Le théorème du perroquet
–
●
–
●
Denis Guedj - Robert Laffont
Sur les traces de l'Homo mathematicus
–
●
Karine Chemla, Guo Shuchun – Dunod
Zéro
–
●
Denis Guedj - Editions du seuil
Les neuf chapitres
Bernard Duvillié – Ellipses
L'histoire des mathématiques
–
Richard Mankiewicz - Seuil
Pierre-rouge Sciences - Assas
8 mars 2016
Richard Terrat
Téléchargement