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