50
© Jacques Farré 2013 Informatique générale – algorithmes et machines 1/50 Informatique Générale Histoires d'algorithmes et de machines des cailloux aux circuits intégrés Jacques Farré [email protected] Licence 1 Sciences & Technologies Université de Nice – Sophia Antipolis

Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

Embed Size (px)

Citation preview

Page 1: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 1/50

Informatique Générale

Histoires d'algorithmes et de machines

des cailloux aux circuits intégrés

Jacques Farré

[email protected]

Licence 1 Sciences & TechnologiesUniversité de Nice – Sophia Antipolis

Page 2: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 2/50

Origine des algorithmes

Algorithme : énoncé, dans un langage bien défini, d’une suite d’opérations permettant de résoudre par calcul un problème en un nombre fini d'étapes

Du nom du mathématicien, géographe et astronome perse al-Khuwārizmī (9e siècle)

le mot algèbre provient de son livre sur la résolution des équations du second degréKitâb al-ĵabr wa'l-muqābalah (la transposition et la réduction), publié en 825

au 12e siècle, le moine Adelard de Bath introduit le terme latin de algorismus (par référence à al-Khuwārizmī) ; ce mot donne algorithme en français au 16e siècle

En fait, les algorithmes remontent à l'aube de la civilisation (Sumer, Babylone)

statue de al-Khuwārizmī à l'Université de Téhéran

Page 3: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 3/50

Retour sur le système de numération babylonien

Rappel : les babyloniens comptaient avec un système positionnel en base 60, avec des « chiffres » de 1 à 59 représentés par des symboles valant 1 ( ) et 10 ( ) 728 (12×60 + 8) s'écrivait (qu'on notera 12;8)

Petits problèmes : l'absence du ”zéro” (un espace plus grand entre 2 chiffres ?), et de la virgule décimale

Donc pouvait aussi bien représenter

43680 (12×602+8×60),

que 12 + 8/60, ou 12×602 + 8/602

ou tout autre nombre de la forme 12×60p+8×60q, q<p (seul le contexte permettait de déterminer l'ordre de grandeur du nombre)

Page 4: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 4/50

Un algorithme babylonienle problème à résoudre

De nombreuses tablettes ont été retrouvées qui exposaient des problèmes et donnaient leur solution, par exemple (tablette exposée au Musée du Louvre à Paris) : [Pour un rectangle] la somme de la longueur et de la

largeur est égale à la surface ; la longueur [L] est connue, quelle est la largeur [x] ? Donc, en algèbre moderne L + x = L × x, par conséquent

x = L / (L-1) (car L = L × x – x = (L-1) × x) Il faut diviser, ce qu'ils ne savaient pas faire, mais comme

a/b=a×(1/b), on peut multiplier si on connait 1/b Les babyloniens avaient des tables d'inverses, par exemple :

l'inverse de 2 : 30 (car 1/2=30/60)l'inverse de 3 : 20 (car 1/3=20/60)l'inverse de 9 : 6;40 (car 1/9=(1/3)2 = (20/60)2 = 400/3600

=(360+40)/3600=6/60+40/3600

Page 5: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 5/50

Un algorithme babylonienla solution proposée

La solution pour calculer x = L / (L-1) est la suivante:

algorithme tel que donné correspondance ensur la tablette langage informatique

fais 2 copies du paramètre L1 := L(c'est à dire la longueur L) L2 := Lretire 1 de l'une d'entre elles L1 := L1 – 1forme son inverse I := 1 / L1et multiplie par l'autre copie x := I * L2telle est la solution afficher x

C'est de la programmation avant la lettre !

Mais la division cablée dans un ordinateur repose sur une autre méthode, qu'on trouve déjà chez les égyptiens et qu'on verra un peu plus tard

Page 6: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 6/50

Un algorithme babylonienapplication numérique

Soit L = 3 ; Donc L – 1 = 2 et x = 3/2

Pour les babyloniens :Inverse de 2 = 30 (en fait 30/60, soit ½)Donc, L × 1/(L – 1) = 3 ×30 = 90 = 60 + 30Par conséquent x = 1;30 (soit 1+½ dans notre système décimal puisqu'on a multiplié en fait par 30/60 : il faut rétablir l'exposant)

Vérifications : L + x = 3 + 1;30 = 4;30 (soit 4 + ½ dans notre système décimal) L × x = 3 × 1;30 = 3;90 = 3;(60+30) = 4;30

Pour nous, c'est pareil à la base près :Inverse de 2 = 5 (5/10 en fait)Donc, L × 1/(L – 1) = 3 × 5 = 15 = 10+5 = 1;5 (donc 1,5 dans notre système puisqu'on a multiplié en fait par 5/10 et pas par 5)

L + x = 3 + 1;5 = 4;5 L × x = 3 × 1;5 = 3;15 = 3;(10+5) = 4;5

Page 7: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 7/50

Les premiers algorithmes connus(Egypte antique)

Les anciens égyptiens avaient un système additif basé sur le décimal : ils avaient un hiéroglyphe pour chaque puissance de 10 jusqu'à 106 (considéré comme l'infini) :

Donc 4 fleurs de lotus (1000), 7 rouleaux de papyrus (100),2 anses de panier (10),

représente 4720

Page 8: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 8/50

L'addition égyptienne

Pour l'addition, c'est facile : on regroupe les mêmes symboles, et chaque fois qu'on en a 10, on les remplace par un symbole de la puissance de 10 supérieure

Soit 784 + 133

on a bien 917

source: histoiredechiffres.free.fr/numeration/num%20egyp%201.htm

Page 9: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 9/50

Les premiers algorithmes connus(addition, Egypte antique)

On a donc l'algorithme suivant pour additionner C = A et B :

pour chaque «chiffre» c dans {1,10,100...} tant que ∃ c dans A ou Bsoit n

A et n

B le nombre de ces symboles de c respectivement : les

regrouper pour faire nC (=n

A+n

B)

fin pour

pour chaque «chiffre» c dans {1,10,100...} dans Csoit n

C le nombre de ces symboles de c dans C

si nC >= 10

ôter 10 symboles de nC et ajouter un symbole à c

10⨯C

fin pour

C'est identique dans n'importe quelle base B (et donc en base 2) en remplaçant les puissances de 10 (100,101,102...) par B0,B1,B2...

Et pour la soustraction C = A – B ? Algorithme laissé en exercice

Page 10: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 10/50

Addition dans les systèmes additionnel et positionnel

On voit que les hiéroglyphes du système additionnel égyptien correspondent à la position d'un chiffre dans un système positionnel

On pourrait additionner de la même façon :     7  8  5+    2  3  8=    9 11 13   on additionne chiffre à chiffre  = 1  0  2  3  et on fait « passer » les 1 à gauche

Il est clair qu'on pourrait aussi faire « passer » les 1 à gauche tout en additionnant, à condition de faire les additions chiffre à chiffre de la droite vers la gauche

Page 11: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 11/50

Addition dans le système positionnel

On a alors l'algorithme suivant pour additionner C=A+B

r0=0 (la retenue)

pour chaque position p de droite à gauche (donc p =0,1,2...) soit cA

p et cB

p le pème chiffre de A et de B, respectivement

si cAp+cB

p+r

p<10 alors cC

p=cA

p+cB

p+r

p et r

p+1=0

sinon cC

=cA

p+cB

p+r

p - 10 et r

p+1=1

fin sifin poursi r

p+1= 1 alors cC

p = 1

Une machine mécanique additionne de la même manière : quand une roue tourne, un cran situé entre la dent 9 et la dent 0 fait avancer la roue à sa gauche (c'est la retenue) ; c'est le principe de la machine de Pascal

Page 12: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 12/50

Application : addition et soustraction en binaire

Additionner 11+14 1 11 01 1 1

+ 1 1 1 0 = 1 1+0=1

0 1+1=0, je retiens 10 1+0+1=0, je retiens 1

1 1 1+1+1=1, je retiens 1

Soustraire 14 de 251 1 0 0 1

- 1 11 11 1 0 = 1 1-0=1

1 0-1=1, je retiens 10 0-1-1=0, je retiens 1

1 1-1-1=1, je retiens 10 1-1=0

Page 13: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 13/50

Et la logique dans tout ça ?

Dans une addition binaire a+b=s+2r (s le chiffre à reporter et r la retenue, regardons la table de vérité :

On voit que s = a xor b et r = a and b ; d'où le circuit

appelé demi-additionneur

a b s r

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

xor

and

Page 14: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 14/50

L'additionneur 1 bit complet

Maintenant, pour un additionneur tenant compte de la retenue,

on a la table

on remarque que s = (a xor b) xor r'

r = (a and b) or ((a xor b) and r')

a b r' s r0 0 0 0 00 1 0 1 01 0 0 1 01 1 0 0 1

a b r' s r0 0 1 1 00 1 1 0 11 0 1 0 11 1 1 1 1

Additionneur 1 bit

a

br'

s

r

Page 15: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 15/50

L'additionneur binaire complet

d'où le circuit pourl'additionneur 1 bitavec retenue

il suffit ensuite de combiner ces additionneurs 1 bit en série pour avoir un additionneur n bits

il faut donc n étapes pour propager la retenue ri :

en fait, il existe des solutions avec anticipation des retenues permettant plus de parallélisme dans le calcul

rn

c0

c2

c1

cn

a0

b0

r0

a1

b1

r1

a2

b2

r2

rn-1

an

bn

0

abr'

s

r

xorxor

and

andor

Page 16: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 16/50

La soustraction binaire signée

L'avantage de la complémentation à 2 pour les nombres négatifs est qu'on peut additionner tous les bits, y compris le bit de signe, et qu'on obtient le bon résultat

Ce qui permet d'utiliser un additionneur pour faire une soustraction : B – A = B + (-A) = B + (Ā) + 1 (Ā représente l'inversion des bits de A)

Un peu de réflexion sur l'arithmétique évite donc bien des complications du point de vue électronique !

b0

a0

r0

b1

a1

r1

b2

a2

r2

rn-1

bn

an

rn

cn

cn

c0

c2

c1

1++ + +

¬¬ ¬ ¬

Page 17: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 17/50

Machines à calculer(abaques)

source : interstices.info

Abaque romain(a) pour compter 0 à 11 onces(b) pour compter des fractions d'onces

1 1 1 8 0 5 0 0 (a) (b)

source: www.ieeeghn.org/wiki/index.php/Ancient_Computers

Abaque grec représentant 0.9834 x 1016

(avec 0,9834 = 1 - 0,0166)

Page 18: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 18/50

Machines à calculer(bouliers)

sources : educmath.ens-lyon.fr/Educmath/ressources/documents/bouliers/simulateurs, www.jlsigrist.com/histoire.html

suan pan (chinois)

Soroban (japonais)

Stchoty(russe) Choreb (Iran)Coulba (Turquie)Utilisé aussi en France

3 1 4 1 5 9 0 0 0

3 1 4 1 5 9

Page 19: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 19/50

Multiplication et division La manière la plus simple de multiplier a par b est

d'ajouter b fois a à 0 : d'où l'algorithme calculant m = a.b m := 0 ;répéter b fois m := m + a

La boucle s'exécutera b fois et m contiendra a.b à la fin

La manière la plus simple de calculer le quotient entier q de la division de a par b est de soustraire b à a : d'où l'algorithme calculant q (le quotient) et r (le reste) de a÷b

q := 0 ; r := atantque r ≥ b faire r := r – b ; q := q + 1

La boucle s'exécutera b fois et calculera q et r tels que a = b.q + r (r ≤0 < b)

Ces 2 algorithmes ont une complexité linéaire

Page 20: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 20/50

Les premiers algorithmes connus(multiplication, Egypte antique)

Les égyptiens ne savaient que doubler ou diviser par 2 ; comment multiplier 2 nombres (sauf multiplier par 10, où il suffit

de remplacer chaque symbole par celui de la puissance de 10 supérieure) ? Ils connaissaient les puissances de 2 (et implicitement la

décomposition d'un nombre en binaire) ; par exemple pour multiplier 12 par 45i n=2i 12×n0 1 12 32≤45<64, donc compter 3841 2 24 45-32=13, 8≤13<16, ajouter 962 4 48 13-8=5, 4≤5<8, ajouter 483 8 96 5-4=1, 1≤1<2, ajouter 124 16 192 donc 45 x 12 = 384+96+48+12 = 5405 32 3846 64 768 ce qui revient à calculer 12(25+23+22+20)

Autant d'opérations que de 1 dans la représentation en base 2 du multiplicateur : cet algorithme a une complexité logarithmique

Page 21: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 21/50

Algorithme de la multiplication égyptienne

On en déduit l'algorithme de la multiplication égyptienneproduit (a, b) → m

p := 1; q := b// on recherche la plus grande puissance de 2 ≤ atant que 2 × p < a faire a := a × 2; q := q × 2// p est donc la plus grande puissance de 2 ≤ a;s := 0; r := atant que r > 0 faire

si p ≤ r alors s := s + q; r := r – p

p := p ÷ 2; q := q ÷ 2;

Ce qui revient, pour 1245, à calculer comme les égyptiens 1225 + 1223 + 1222 + 12

pour a=45, b=12 action s r p q 1 12 2 24 4 48 8 96

16 19232 384

0 45 +384 384 13 16 192 384 13 8 96 +96 480 5 4 48 +48 528 1 2 24 528 1 1 12 +12 540 0 0 6

Page 22: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 22/50

Variante : la multiplication russe

Cette variante repose aussi sur l'écriture en base 2, mais à partir des unités; on sait que

a x 2p = 2a x p a x (2p + 1) = 2a x p + a

Toujours pour s = 12 x 45, s = 0 initialement a b s12 45 0+12 car b impair24 22 12 car b pair48 11 12+4=60 car b impair96 5 60+96 =156 car b impair192 2 156 car b pair384 1 156+384=540 car b impairce qui revient à calculer 12(20+22+23+25)

Autant d'opérations que de 1 dans la représentation en base 2 du multiplicateur : cet algorithme a une complexité logarithmique

Page 23: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 23/50

Algorithme de la multiplication russe

La multiplication russe est en fait très moderne : comme vu précedemment, m = a b peut être défini comme m = 0 si b = 0, m = 2a p si b = 2p, m = 2a p + a si b = 2p + 1 Et on recommence pour a' p (a'=2a), jusqu'à ce que p soit nul,

en cumulant les a' quand p est impair D'où l'algorithme :

produit (a, b) → ss := 0 ; tant que b > 0 faire

si b impair alors s := s + aa := 2 ab := b ÷ 2 (quotient entier)

Ce qui revient, pour 1245, à calculer comme les égyptiens 12 + 1222 + 1223 + 1225

pour a=12, b=45 a b s 12 45 0 24 22 0+12 48 11 96 5 12+48=60 192 2 60+96=156 384 1 768 0 96+384=540

Page 24: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 24/50

Multiplication en binaire

La table de multiplication en binaire est très simple :0 0 = 0 1 = 1 0 = 0 1 1 = 1 (= porte AND)

Par exemple 6 5 :

notez que décaler à gauche revient à multiplier par 2 (ça ne vous rappelle pas les égyptiens ?)

Repose simplement sur le fait que, pour a b a (2nb

n+2n-1b

n-1+...+2b

1+b

0) = ab

0+2ab

1+...+2n-1ab

n-1+2nab

n

notez que si a et b occupent chacun n bits, le résultat peut occuper 2n bits

Le circuit machine (basique) utilise des AND, des additionneurs et des décaleurs, assemblés en cascade

1 1 0 1 0 1

1 1 0 6120

+ 0 0 0 0 6021

+ 1 1 0 0 0 6124

= 1 1 1 1 0(24 + 23 + 22 + 2 = 30)

Page 25: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 25/50

Multiplication à l'aide d'un tableau(dite par jalousies ou gelosia)

Technique initialement arabe ou indienne (12e siècle), mais aussi connue en Chine et en Europe

Soit à calculer 135 × 32 = 4320 : chaque case (i,j) contient les résultats de la multiplication du chiffre de la ligne i et de celui de la colonne j, le chiffre des dizaines (s'il y en a un) en haut ; il reste ensuite à additionner en diagonale en partant de la droite

     1  0  (2×5)+    6 (2×30)+ 2 (2×100)+ 1  5 (30×5)+ 9 (30×30)+ 3 (30×100)= 4 3 2 0

Il fallait évidemment connaître ses tables de multiplication !

  1   3   5

3

2

51

93

61

2

2334 (zéro)

Page 26: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 26/50

Multiplication binaire revue

On peut évidemment multiplier en binaire avec un tableau : par exemple 6 × 5 (110 × 101 en binaire)

On peut imaginer un circuit oùchaque case est un circuit trèssimple (AND)

il suffit ensuite d'additionnerleurs sorties « en diagonale »

Pas besoin de connaître ses tables de multiplication ! Sauf ...

  1   1   0

1

0

1

1   1    1    1   0     

  1   1   0

  1   1   0

  0   0   0 0  1 

0  0  0 

 0  1 1

Page 27: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 27/50

Bâtons de Napier (Neper)

Abaque inventé en 1617 pour faciliter les multiplications en ne faisant que des additions

Page 28: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 28/50

Les logarithmes (Neper, 1614)

On sait que logb(x.y) = log

b(x) + log

b(y)

Une multiplication peut donc se réduire à 1 seule addition Soit par utilisation d'une table de logarithmes

Soit par utilisation d'une règle à calcul (17e siècle → fin 20e)

Page 29: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 29/50

Les premiers algorithmes connus(division, Egypte antique)

Pour la division 540 ÷ 12, il suffisait aux égyptiens de procéder à l'inverse de la multiplication, en utilisant la même table :

1 12 384≤540<768, donc compter 32 2 24 540-384=156, 96≤156<192, ajouter 8 4 48 156-96=60, 48≤60<96, ajouter 4 8 96 60-48=12, donc ajouter 116 192 donc 540 ÷ 12 = 32+8+4+1 = 4532 38464 768

Ils pouvaient aussi aller jusqu'aux fractions; par exemple pour 549/12, le calcul précédent donnera un reste de 9; en ajoutant

1/4 31/3 41/2 6

donc 549/12 = 45+1/2+1/4

Page 30: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 30/50

Modernité de la division égyptienne

Le quotient entier de a divisé par b est tel que a = bq+r (0≤r<q), donc a=b(2nq

n+...+2q

1+q

0)+r, avec q

i=0 ou 1 et q

n=1 (on ne

s'intéresse pas aux 0 non significatifs) On cherche donc le n tel que 2nb ≤ a < 2n+1b Alors, a = 2nb + R, et il suffit de recommencer pour R ÷ b si R ≥ b

D'où l'algorithmedivision (a, b) → (q, r)

p := 1, q := 0, r := atant que p * b < r faire

p := p * 2

tant que r ≥ b faire si p b ≤ r alors

q := q + pr := r – p b

p := p ÷ 2

Trace de l'exécution (2ème boucle) pour a = 540 et b = 12 r p p.b q 540 64 768 0

32 384 156 16 192 32

8 96 60 4 48 40 12 2 24 44 1 12 0 0 0 45

Page 31: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 31/50

La division en binaire

Pour en comprendre le principe, revenons à la division (avec des nombres écrits en base 10) comme nous l'avons appris à l'école

soit à calculer 5823 ÷ 27, on pose

dans 56, il y va 2 27 = 54, 56 – 54 = 2 et je descends 3 ;dans 23, il y va 0 27, je descends 7 ;dans 237 il y va 8 27 = 216,237 – 216 = 21, 21 < 27, c'est fini

donc q = 208, r = 21

Idem en binaire : 29 ÷ 5

il suffit d'ajouter 0 à droite du quotient si le nombre abaissé est < au diviseur, et 1 sinon

donc q = 5, r = 4

5637 27

56 2 -54 23 0 237 8 -216 21

11101 101

111 1 -101 100 0 1001 1 - 101 100

Page 32: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 32/50

Division égyptienne et division binaire

Reprenons l'algorithme de la division égyptienne, et regardons comment il s'exécute pour 29 ÷ 5 en écrivant les nombres en binaire

division (a, b) → (q, r)p := 1, q := 0, r := a

tant que p b < r fairep := p 2

tant que r ≥ b faire si p b ≤ r alors

q := q + pr := r – p b

p := p ÷ 2

On voit apparaitre les mêmes valeurs que pour la division « à la main »

Trace de l'exécution (b=000101) r p p.b q première boucle tant que 11101 1 101 0

10 1010 100 10100

1000 101000 deuxième boucle tant que

100 1010011101-10100= 0+100 =

1001 10 1010 100 1 101 1001-101= 0100+1 =

100 (soit 4) 101(soit 5)

Page 33: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 33/50

Division avec les bâtons de Neper

source : http://www.mathnstuff.com/math/spoken/here/2class/60/ndivide.htm

Page 34: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 34/50

Machines à calculermécaniques

Machine de Pascal (1643, addition et soustraction uniquement)

sources : wikipedia

Curta (vendu de 1948 à 1972)miniaturisation de la machine de Leibniz

Machine de Leibniz (1694, avec multiplication et division)

Cylindre cannelé de Leibniz, qui permet les multiplications à 1 chiffre

Arithmomètre de Thomas (vendu de 1851 à 1915, avec multiplication a plusieurs chiffres)

Page 35: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 35/50

Les différences finies

Toute fonction continue peut être approchée aussi près que l'on veut par une fonction polynomiale (theorème de Taylor, 1712) d'où l'importance du calcul des valeurs d'un polynome : c'est

ainsi que les ordinateurs calculent les fonctions trigonométriques, exponentielles, etc. par développement limité

Pour un polynome P(x) de degré n, quand on calcule n fois les différences entre P(x+1) et P(x), P'(x+1) et P'(x), … on arrive toujours à des différences constantes. Par exemple pour x3

x x3 D1

D2

D3

D4

0 0

1 1 1 (1-0)

2 8 7 (8-1) 6 (7-1)3 27 19 (27-8) 1 12 (19-7) 6 (12-6)4 64 37 ... 1 18 ... 6 (8-2) 0 (6-6)5 125 61 ... 24 ... 6 ... 0 (6-6)

Car la dérivée n-ième d'un polynome de degré n est une constante

Page 36: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 36/50

La machine à différences de Charles Babbage (1822)

Charles Babbage a utilisé la propriété des différences finies pour faire calculer des valeurs de polynomes de degré n par une machine mécanique avec simplement des additions :

On dispose de n+2 « accumulateurs » A0à A

n+1 initialisés

avec les premières différences D0, D

1 ... D

n+1

on aura donc, pour l'exemple précédent, 5 « accumulateurs » A

0 à A

4 initialisés à 0, 1, 6, 6, 0 (les nombres en gras du

tableau précédent)

A chaque étape, on ajoute à chaque Ai la valeur de A

i+1

La kème étape donne dans A0 la valeur de P(x) en x=k

Page 37: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 37/50

La machine à

différences de Charles Babbage (1822)

Page 38: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 38/50

L'algorithme de la machine à différence

On aurait donc l'algorithme suivant pour calculer la valeur d'un polynome P(x) de degré n en x=k (k entier ≥ 0)

initialiser les n+2 accumulateurs avec les différences initialesrépéter k fois

pour i de 1 à n faire Ai-1

:=Ai-1

+Ai

le résultat est dans A0

Exemple de fonctionnement pour calculer la valeur de 2x3+5x2+3x+4 en x=4

différences initiales : 4, 10, 22, 12, 0x A

0 A

1 A

2 A

3A

4

0 4 10 22 12 01 14 32 342 46 66 463 112 112 584 224 170 70

Page 39: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 39/50

Décidabilité et complexité

Une grosse difficulté se pose aux informaticiens : étant donné un certain problème, existe-t-il un algorithme pour en donner une solution (ce problème est-il décidable ou non ?)

Si ce problème est décidable, combien faudra-t-il de temps pour le résoudre en fonction de la taille de ses données : c'est la complexité de l'algorithme mis en œuvre

Il est nécessaire d'avoir des outils théoriques pour apprécier la décidabilité d'un problème, et estimer la complexité d'un algorithme

Page 40: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 40/50

Décidabilité

Un problème est décidable s'il existe un algorithme (donc un processus qui s'arrête au bout d'un temps fini) qui permette de répondre par oui ou par non à la question posée par le problème

Il est par exemple indécidable (dans le cas général) de savoir si un programme s'arrêtera quelque soient ses données !

Ou encore de savoir dans le cas général si une équation diophantienne (par ex. x2 – 991y2 – 1 = 0) a une solution dans les entiers

pour cette équation, une solution est x = 379 516 400 906 811 930 638 014 896 080y = 12 055 735 790 331 359 447 442 538 767

Page 41: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 41/50

Complexité

Et si un problème est décidable, combien faudra-t-il de temps pour le résoudre en fonction de la taille de ses données : c'est la complexité de l'algorithme mis en œuvre

S'il faut 8h à un programme pourprévoir la météo du lendemain, et que la prévision pour chaque joursupplémentaire double le temps decalcul (donc 16h pour la météo dusurlendemain), prévoir la météo à5 jours (120h) demandera 128h de calcul.Votre programme donnera une « prévision » pour le journal télé de 20h de ce que tout le monde aura pu constater à midi ! Pas très utile pour les téléspectateurs.

Page 42: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 42/50

Complexité Temps pris par un algorithme en fonction de sa

complexité

logaritmique : log n

linéaire : n

quasi-linéaire : n log n

polynomiale : nkexponentielle : kn

hype

r ex

pone

ntie

lle

taille des données

tem

ps d

'exé

cutio

n

Page 43: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 43/50

La machine de Turing (1936)

Il est nécessaire d'avoir des outils théoriques pour apprécier la décidabilité d'un problème, et estimer la complexité d'un algorithme

Pour résoudre ces questions, Alan Turing a défini un modèle abstrait d'ordinateur : la machinede Turing

Selon la thèse de Church-Turing, les problèmes résolubles par une machine de Turing universelle sont exactement ceux qui sont résolubles par un algorithme

Page 44: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 44/50

La machine de Turing (1936)

Principe de la machine de Turing Un ruban (infini) composé de cases dans lesquelles

peuvent être inscrits des symboles quelconques appartenant à un ensemble fini, par exemple {0, x, #}

D'une unité de contrôle qui peut prendre un nombre fini d'états (le processeur et son programme en quelque sorte)

D'une tête de lecture-écriture du ruban, commandée par l'unité de contrôle selon le programme

rubantête de lecture

unité de contrôle

... # # # x x # 0 0 # x x # # ...

Page 45: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 45/50

Une machine de Turing en Lego (CWI Amsterdam)

Page 46: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 46/50

Une autre machine de Turing en Lego (ENS Lyon)

Page 47: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 47/50

Exemple de machine de Turing

On associe à chaque état q1, q

2 ... de la machine et à chaque

symbole de l'alphabet un triplet (état suivant, symbole à écrire, déplacement de la tête)

Par exemple, avec pour symboles {_, |, #} et le programme : symbole lu

état | _ #en q

1, si le symbole lu est |

q1

(q2,#,▶) (q

5,#,▶) écrire #, avancer la tête

q2

(q2,|,▶) (q

2,_,▶) (q

3,#,◀) d'une case à droite

q3

(q4,#,◀) et aller en q

2, etc.

q4

(q4,|,◀) (q

4,_,◀) (q

1,#,▶)

q5

A partir du ruban initial, représentant les nombres 2 (||)et 3 (|||), et en partant de l'état q

1, on obtient le ruban suivant :

la machine a calculé 3 – 2 = 1

####||_|||#####

## # ## | | _ | | | # # #

# ## | # # ## # # # #

Page 48: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 48/50

Fonctionnement de la machine

Rappel du programme : état | _ #

q1

(q2,#,▶) (q

5,#,▶)

q2

(q2,|,▶) (q

2,_,▶) (q

3,#,◀)

q3

(q4,#,◀)

q4

(q4,|,◀) (q

4,_,◀) (q

1,#,▶)

état ruban q5

q1

q2

...q2

q3

q4

...q4

####||_|||#####

## | | || |_ ##

## # | || |_ ##

## # | || |_ ##

## # | || |_ ##

## # | || #_ ##

## # | || #_ ##

Dans cette séquence, le | le plus à gauche est effacé (q

1), puis on

cherche le | le plus à droite pour l'effacer aussi (boucle sur q

2).

On va ensuite chercher le | le plus à gauche (boucle sur q

4), puis on revient

en q1 avec la tête sur le | le plus à

gauche (même configuration qu'au début), et on recommence

Page 49: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 49/50

Fonctionnement de la machine (suite)

Rappel du programme : état | _ #

q1

(q2,#,▶) (q

5,#,▶)

q2

(q2,|,▶) (q

2,_,▶) (q

3,#,◀)

q3

(q4,#,◀)

q4

(q4,|,◀) (q

4,_,◀) (q

1,#,▶)

état ruban q5

q1

q2

...q2

q3...

q4

q1

q5

####||_|||#####

## # | || #_ ##

## # # || #_ ##

## # # || #_ ##

## # # #| #_ ##

## # # #| #_ ##

## # # #| #_ ##

Dans cette séquence, la machine efface de nouveau le | le plus à gauche et celui le plus à droite.

En q5, la machine n'a aucune action à

effectuer sur le symbole |, elle s'arrête. Donc, elle a éliminé autant de | à droite qu'il y en a à gauche, c'est bien une soustraction.

Vous pouvez vérifier que pour le ruban initial #_|||#, elle calcule bien 3 - 0.

## # # #| ## ##

Page 50: Histoires d'algorithmes et de machines - deptinfo.unice.frdeptinfo.unice.fr/~jf/InfoGene/4-algos.pdf · Algorithme : énoncé, dans un langage bien défini, ... compris le bit de

© Jacques Farré 2013 Informatique générale – algorithmes et machines 50/50

Petite leçon de modestie

Nous sommes des nains juchés sur des épaules de géants. Nous voyons ainsi davantage et plus loin qu'eux, non parce que notre vue est plus aigüe ou notre taille plus haute, mais parce qu'ils nous portent en l'air et nous élèvent de toute leur hauteur gigantesque.

Attribué à Bertrand de Chartres, 12e siècle,reprise plus tard par Newton (entre autres)