Algorithmique Fondamentale et Bases de...

56
Algorithmique Fondamentale et Bases de Programmation L3 Informatique de Gestion (MIAGE) Pr. Jenny Benois-Pineau 1

Transcript of Algorithmique Fondamentale et Bases de...

Algorithmique Fondamentale et Bases de Programmation

L3 Informatique de Gestion

(MIAGE)

Pr. Jenny Benois-Pineau

1

Chapitre introductif

Excursion dans l’histoire de l’informatique

2

Sommaire

•  1. Introduction •  2. A l’origine du terme « algorithme » •  3. Excursion dans le passé: Babylon •  4. Grèce Antique •  5. Ancêtres des ordinateurs •  6. Alan Turing •  7. Machine de von Neuman •  8. Où sont les limites? : la complexité •  9. Conclusion

3

1. Introduction

•  Informatique aujourd’hui : •  Organisation, stockage et traitement de l’information •  recherche de l’information sous forme numérique, •  analyse de données, •  contrôle-commande temps réel, •  jeux et automates programmables, •  transmission optimales de l’information, •  cryptage de l’information, •  Algorithmique : la base fondamentale de

l’informatique •  Avant d’écrire un programme il faut en concevoir un algorithme. •  Histoire fascinante de l’algorithmique et de ses

implantations !

4

2. A l’origine du terme « algorithme » •  Avant d’être des programme

informatiques les algorithmes sont des objets mathématiques.

•  Ils sont nés bien avant l’informatique : l’algorithme d’Euclide date de 2000 ans.

•  Le mot « algorithme » provient du nom d’un savant arabe du IX siècle Muhammad al-Khwarizmi

•  Mohammed ibn Musa est né en 788 à Khiva, en Asie centrale, il doit son nom à sa contrée natale Khwarezm Septembre 6, 1983

5

D’al-Khwarizmi à l’algortihme

•  Deux ouvrages fondamentaux sont connus de ce mathématicien •  « Livre de l’explication du calcul de la remise en place de la

simplification » - a donné sont nom à l’algèbre « al-jabr », la remise en place.

•  « dixit Algorizmi » - ainsi disait al-Khwarizmi: son deuxième ouvrage ou « Algoritmi de numero Indorum » - al-Khwarizmi au sujet des nombres indiens. Cet ouvrage n’est connu que par sa traduction latine, efectuée probablement par Adélard de Bath au XII siècle.

•  A partir du XIII on appelle algorisme le calcul utilisant les chiffres arabes et « algoristes » ceux qui s’adonnent.

•  Influence grecque « arithmos » - nombre ce mot devient « algorithme »

•  Il ne prend son sens actuel qu’au XIX siècle

6

Qu’est ce qu’un algorithme?

•  Il n’existe pas de définition universellement admise du mot algorithme

•  Donald Knuth(né en 1938), l’auteur de LaTex et Metafont, de l’ouvrage « The Art of Computer Programming », docteur « honoris causa » de l’Université de Bordeaux propose 5 propriétés

7

Donald Knuth

Robert Cori, Prof. Université de Bordeaux

8

Qu’est ce qu’un algorithme?

•  (1) Finitude : Un algorithme doit toujours se terminer après un nombre fini des étapes

•  (2)Précision : Chaque étape d’un algorithme doit être définie précisément; les actions à transposer doivent être spécifiées rigoureusement et sans ambiguïté pour chaque cas.

•  (3) Entrées : Quantités, prises dans un ensemble d’objets spécifié, qui sont données à l’algorithme avant qu’il ne commence.

•  (4)Sorties: Quantités qui ont une relation spécifiée avec les entrées. •  (5)Rendement: Toutes les opérations que l’algorithme doit

accomplir doivent être suffisamment élémentaires pour pouvoir être en principe réalisées dans une durée finie par un homme utilisant du papier et un crayon.

9

Qu’est ce qu’un algorithme?

•  Un algorithme est une méthode qui sert à résoudre un problème en un nombre fini d’étapes.

10

Algorithme de Babylon: calcul des racines carrées 2000 av

J-C

3. Excursion dans le passé: Babylon

Relief du musée Britannique

Tablette d'argile (2 400 ans av. J.-C.) en écriture cunéiforme où figurent clous et chevrons qui serons les chiffres de cette numération. www.math93.com

11

L’Algorithme de Babylon

•  Soit A un entier positif. Trouver une valeur approchée de qui soit aussi proche qu’on veut de ce nombre

•  1er ciècle de n.è. La méthode de calcul a été reprise par Héron d’Alexandrie et décrite dans son ouvrage « Les métriques ».

A

12

L’algorithme de Babylone

exxAxxn

nn =⎟⎟⎠

⎞⎜⎜⎝

⎛+=+ 01 ,

21

http://it.stlawu.edu/~dmelvill/mesomath/tablets/YBC7289.html Babiloniens : racine de 2 13

Algorithme de Babylone

•  Choisir une première estimation e de •  Calculer une deuxième estimation e’ en

faisant la moyenne arithmétique de e et de A/e;

•  Remplacer e par e’ et recommencer pour avoir une troisième estimation e’’

•  Continuer ainsi autant de fois que nécessaire pour obtenir la précision souhaitée.

A

14

Algorithme de Babylone. Exemple

•  A= 50, •  x1=25 •  x2=(50/25+25)/2=13,5 •  x3=8,601.. •  x4=7,207 •  x5=7,072 •  x6=7,071 •  x7=7,071 – c’est la réponse à la précision 0,001 •  Convergence : on démontre que l’erreur absolue

d’estimation nnnn eexAe

21: 1 <−= +

15

4. Grèce Antique

•  Plusieurs algorithmes sont connus de ce jour provenant de la Grèce antique : Algorithme d’Euclide, multiplication d’Hépathie, ….

•  Test de primalité : algorithme d’Eratosthène •  Problème : étant donnée un Nombre N établir si

il est premier

16

Algorithme d’Eratosthène

•  Principes : •  (1) Basique : essayer de diviser par tous

les entiers strictement positifs qui lui sont inférieurs

•  (2) Amélioration : se limiter au nombres inférieurs à la

•  (3) Méthode d’Eratosthène •  Diviser successivement par tous les

nombres premiers < et exclure leur multiples

N

N

17

Algorithme d’Eratosthène

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15…N

Crible

18

5. Ancêtres des ordinateurs

•  Plusieurs outils de calcul sont connus depuis l’antiquité :

•  les baguettes à calculer, •  boulier chinois(IX a.c.) et ses variations

postérieures •  Pascaline •  Machine de Leibnitz •  Machine de Babbage •  Machine de Von Neuman

19

Pascaline

•  L’Histoire de Pascaline: •  Pascal décide de construire •  Une machine à calculer •  Pour aider à son père dont le métier exige beaucoup de calculs.

http://fr.wikipedia.org/wiki/Pascaline et d’autres sources Internet

né le 19 juin 1623 à Clairmont (aujourd'hui Clermont-Ferrand), en Auvergne et mort le 19 août 1662 à Paris

20

Pascaline

•  Développement 1642-1645

21

•  Opérations de base : additions et soustractions •  Multiplication : additions successives •  Division : soustractions successives

Pascaline

Une fenêtre de lecture faite de petites lucarnes : résultats

22

Pascaline •  Mécanisme interne : Engrenages couplant les entrées et

les sorties

Principe du mécanisme interne · Le cadran est solidaire d'une roue horizontale à picots · Elle entraîne une autre roue verticale à picots · Laquelle est solidaire du tambour d'affichage · Sa partie supérieure est visible à travers une lucarne chaque cadran est relié au tambour : affichage

23

Pascaline

•  Principe de téléphone ancien: les chiffres sont marqués sur la partie fixe, seul le cadrant tourne.

•  Algorithme pour composer le numéro: •  Placer le doigt dans le trou n et tourner jusqu’au 0

•  A+b – composer « a » ensuite « b » - sur le même cadrant : le tambour progresse et la lucarne montre a+b.

•  232323 + 323232 = 555555 •  Gestion du retenu? 7+4=1 •  Encore un étage d’engrenage

24

Pascaline

•  Soustraction : elle s’effectuer en utilisant le complément à 9 et le double affichage :

La somme verticale = 9 Grâce à une réglette mobile, Pascal fait apparaître le résultat du calcul comme étant soit les chiffres du bas ADDITION soit les chiffres du haut SOUSTRACTION

25

Pascaline

•  Algorithme : (ex. 146- 65) •  1. Compléter chaque chiffre du premier nombre à 9 ainsi 146 donne 853

2. Ajouter au complément (853), le deuxième nombre : (65). ainsi 853 + 65 = 918. 3. Compléter chaque chiffre du résultat à 9 pour obtenir le résultat demandé : (081) En effet 146 - 65 = 999 - ( 999 - 146 + 65 ) = 999 - ( 999 -146 + 65 ) = 999 - ( 853 + 65 ) = 999 - 918 = 081

http://therese.eveilleau.pagesperso-orange.fr/pages/truc_mat/textes/pascaline.htm

26

Versions de Pascaline

•  versions ont été fabriquées : •  avec des roues de 10 dents pour compter les toises ou

les livres, •  avec des roues de 20 dents pour compter les sols (20

sols dans une livre), •  avec des roues de 12 dents (12 deniers dans un sol ou

12 pouces dans un pied ou 12 lignes dans un pouce ou 12 points dans une ligne, ou 12 onces dans une livre-poids),

•  avec des roues de 6 dents (6 pieds dans une toise) •  ou toute combinaison de ces roues suivant l'utilisation de

la machine

27

Machine de Charles Babbage

•  né le 26 décembre 1791 à Teignmouths, Devonshire, Angleterre, mort le 18 octobre 1871 mathématicien britannique

Charles Babbage a été le premier à énoncer le principe de l’ordinateur 28

Machine à différences finies

•  Il présente un modèle de sa machine à différences à la Société Royale d'Astronomie en 1821. Le but de la machine est de calculer les polynômes en utilisant une méthode de calcul dite méthode différentielle. 29

Architecture •  Version 1 (1821) •  un dispositif d'entrée et de sortie ; •  un organe de commande gérant le

transfert des nombres et leur mise en ordre pour le traitement ;

•  un magasin permettant de stocker les résultats intermédiaires ou finaux ;

•  un moulin chargé d'exécuter les opérations sur les nombres ;

•  un dispositif d'impression •  Version 2 (1847 – 1849) •  contient des registres qui

comportent les valeurs intermédiaires de calcul 30

Calcul

1 3 2 2 5 2 3 7 2 4 9 2 5 11 2

x )(xF 1Diff

12)( += xxF

Limites de calcul Polynomes de 7ème degré, 31 digits.

31

La vie moderne de la machine de Babbage

•  En 1985, le Musée des Sciences de Londres entrepris de construire un exemplaire de la machine à différence n°2, afin de célébrer le 200e anniversaire de Babbage en 1991.

•  Le module de calcul fut terminé à temps en 1991, et c'est finalement en 2002 que la machine fut totalement achevée.

•  Elle est composée de 8000 pièces, pèse 5 tonnes, mesure 3 mètres de large, 2 mètres de haut et 45 cm de profondeur. Cet exemplaire est aujourd'hui exposé au Musée des Sciences de Londres.

•  Un autre exemplaire commandité par un des donateurs du projet, Nathan Myhrvold a été exposé au Computer History Museum de Californie jusqu'en mai 2009, il a rejoint ensuite la collection privée de M. Myhrvold

•  http://www.youtube.com/watch?v=0anIyVGeWOI 32

Première Informaticienne •  Ada Byron-Lovelace •  Londres le 10.12.1815-Londres le

27.11.1852 •  - Fille de Lord Byron, célèbre

poète anglais •  - Elle a traduit du français en

1843, pour Babbage, le mémoire du mathématicien italien Federico Luigi, comte de Menabrea sur la machine analytique

•  . - Elle ajouta à cet article plusieurs notes qui mentionnaient une méthode très détaillée pour calculer les nombres de Bernoulli avec la machine.

•  Ces notes sont considérées par les historiens comme le premier programme informatique au monde

33

Des notions au langage

•  Ada Byron a proposé les notions de l’informatique/programmation •  -registre d’indexation •  -sous-programme (procédure, fonction) •  -boucle •  -modification des commandes, … •  de nombreux développeurs connaissent le langage Ada nommé en

son honneur •  Ada est un langage de programmation conçu par l’équipe de

CII-Honeywell Bull dirigée par Jean Ichbiah en réponse à un cahier des charges établi par le département de la Défense des États-Unis (DoD).

•  Son développement a commencé au début des années 1980 pour donner Ada 83.

•  Ada 95 a été le premier langage objet normalisé de manière internationale.

34

6. Alan Turing

•  Comment définir de façon rigoureuse ce qui est calculable et ce qui ne l’est pas?

•  Alan Turing (1912 – 1954) a répondu à la question en créant des machines (abstraites) ~1930 qui portent son nom 2012 – année d’Alan Turing

35

Machine de Turing

Elle travaille sur un ruban illimitée dans les deux sens

La tête de lecture/écriture est capable de

- Lire le symbole contenu dans la case

- Y écrire un symbole (éventuellement un blanc)

- La machine est caractérisée par ces états : ordinaire, final, terminal, …

36

Machine de Turing

•  De manière formelle, une machine de Turing M est un septuplet (Q, Σ, Γ, E, q0, F, #) où

•  Q –  est l'ensemble des états de contrôle. C'est un ensemble fini { q0, …, qn }.

•  Σ –  est l'alphabet d'entrée. C'est un ensemble fini de symboles qui ne contient pas le symbole

blanc #. Cet alphabet est utilisé pour écrire la donnée initiale sur la bande. •  Γ

–  est l'alphabet de bande. C'est un ensemble fini qui comprend tous les symboles qui peuvent être écrits sur la bande. Ceci inclut bien sûr l'alphabet d'entrée Σ et le symbole blanc #.

•  E –  est un ensemble fini de transitions de la forme (p, a, q, b, x) où p et q sont des états, a et b

sont des symboles de bande et x est un élément de {L, R}. Une transition (p, a, q, b, x) est aussi notée p, a → q, b, x.

•  q0 –  est l'état initial. C'est un état particulier de Q dans lequel se trouve machine au début d'un

calcul. •  F

–  est l'ensemble des états finaux appelés aussi états d'acceptation •  #

–  est le symbole blanc qui, au départ, remplit toutes les positions de la bande autres que celles contenant la donnée initiale.

37

Machine de Turing

•  Un calcul d'une machine de Turing se décompose en étapes. Une étape d'un calcul consiste à passer d'une configuration à une autre configuration en appliquant une des transitions de l'ensemble E. Une étape de calcul comprend les trois actions suivantes.

•  changer l'état de contrôle •  écrire un symbole à la place du symbole sous la

tête de lecture •  déplacer sa tête de lecture d'une position vers la

gauche ou la droite

38

Machine de Turing

•  La machine de Turing a permis de classifier les problèmes : les calculables et les non-calculables.

•  Il en existe du deuxième type, par exemple le problème d’arrêt d’une machine de Turing : si une machine de Turing atteint à un moment donné un état d'arrêt ou ne l'atteint jamais pour une entrée particulière, ou pour toutes les entrées possibles

•  Le modèle de la machine où sur le même ruban elle contient le programme et les données sur lesquelles elle opère est le modèle de l’ordinateur.

39

7. Machine de von Neuman

•  La guerre fait naître l’ordinateur électronique •  1945 John von Neuman J. Presper Eckert,

John William Mauchly travaillent sur l’ordinateur électronique EDVAC(Electronic Discrete Variable Automatic Computer).

•  Ils proposent l’architecture des ordinateurs modèrenes.

40

Test de Turing

•  En 1950, il créa le célèbre « Test de Turing » •  A. M. Turing (1950) Computing Machinery and Intelligence. Mind 49:

433-460.

•  « I propose to consider the question, "Can machines think?"

•  un ordinateur est intelligent si celui-ci est capable lors d’une conversation avec un humain de convaincre ce dernier qu’il parle à un autre humain.

•  « l’intelligence artificielle »

41

Architecture de Von Neumann

Mémoire

UAL UContrôle

Accumulateur

Programme

Entrées Sorties

42

Architecture de von Neumann (2)

•  l’unité arithmétique et logique (UAL) ou unité de traitement, qui effectue les opérations de base ;

•  l’unité de contrôle, qui est chargée du séquençage des opérations ;

•  la mémoire, qui contient à la fois les données et le programme qui indique à l’unité de contrôle quels calculs faire sur ces données. La mémoire se divise en mémoire vive (programmes et données en cours de fonctionnement) et mémoire de masse (programmes et données de base de la machine) ;

•  les dispositifs d’entrée-sortie, qui permettent de communiquer avec le monde extérieur.

43

ENIAC

1946 : Création de l'ENIAC (Electronic Numerical Integrator and Computer) par P. Eckert et J. Mauchly. Von Neuman écrit le premier générateur des nombres pseudo-aléatoires pour ENIAC 44

Fonctionnement des machines électroniques

•  Lampes électroniques, ensuite semi-conducteurs - diodes et transistors implantent les opérations logiques, algèbre de Boole

•  opérations logiques permettant concevoir les circuits logiques

45

George Bool et son algèbre

•  (2 novembre 1815 à Lincoln Royaume-Uni - 8 décembre 1864 à Ballintemple, Irlande)

46

Fonctions logiques

•  Conjonction « and », « et »

a b s

0 0 0

0 1 0

1 0 1

1 1 1

47

Fonctions logiques

•  Disjonction, «or », •  « ou »

a b s

0 0 0

0 1 1

1 0 1

1 1 1

48

Fonctions logiques

•  Négation « not » a ã

0 1

1 0

XOR, Lois de De Morgan (27 juin 1806 à Madurai (Tamil Nadu) - 18 mars 1871)

49

Exemple d’additionneur à 1 bit

a b r s

0 0 0 0

1 0 0 1

0 1 0 1

1 1 1 0

bar ∧=

Additionner les nombres écrits en binaire

( )babas ¬∧∨∧¬=

50

8. Où sont les limites? : la complexité

•  La Loi de Moore (1965 )dans « Electronics Magazine » par Gordon Moore, ingénieur de Fairchild Semiconductor, un des trois fondateurs d'Intel. Constatant que la complexité des semiconducteurs proposés en entrée de gamme doublait tous les ans à coût constant depuis 1959, date de leur invention, il postulait la poursuite de cette croissance (en 1965, le circuit le plus performant comportait 64 transistors). Cette augmentation exponentielle fut rapidement nommée Loi de Moore ou, compte tenu de l'ajustement ultérieur, Première loi de Moore[1].

•  En 1975, Moore réévalua sa prédiction en posant que le nombre de transistors des microprocesseurs (et non plus de simples circuits intégrés) sur une puce de silicium double tous les deux ans.

•  Entre 1971 et 2001, la densité des transistors a doublé chaque 1,96 année. En conséquence, les machines électroniques sont devenues de moins en moins coûteuses et de plus en plus puissantes.

•  Une version commune, variable et sans lien avec les énoncés réels de Moore est : « quelque chose » double tous les dix-huit mois, cette chose étant « la puissance », « la capacité », « la vitesse » et bien d'autres variantes mais très rarement la densité des transistors sur une puce

•  .

Wikipedia 51

Complexité

52

Complexité

•  Malgré l’augmentation de la complexité des circuits intégrés, l’augmentation des volumes de données et des besoins de calcul engendre la nécessité d’évaluation de la complexité théorique des algorithmes.

•  Ces questions seront traitées dans le cours •  « Algorithmique fondamentale »

53

Pourquoi les ordinateurs ne restent pas réservés aux mathématiciens

•  Grace Hooper (1906 – 1992)

•  Un programme doit être écrit dans un langage proche du langage naturel plutôt qu’en langage machine.

•  De cette idée naîtront les compilateurs et le langage Cobol à la fin des années 50 grâce auquel l’informatique se répandra dans les entreprises.

« First actual case of bug being found » : une mite qui s’est prise dans un relais.

Le bug informatique est né! 54

Conclusion

•  Langages objets, calcul massivement parallèle, codage des masses d’information visuelle, systèmes de recherche d’information l’informatique d’aujourd’hui ne peut pas se reposer sur ces résultats;

•  La quantité de données augmente, les appétits de la société aussi: quel champ passionnant de bataille!

55

Références Bibliographiques du cours

•  1. Th. Cormen, Ch. Leiserson, R. Rivest, •  « Introduction à l’algorithmique », DUNOD,

Paris, 1994, (2002) •  2. Ch. Froidevaux, M.-C. Gaudel et M. Soria

Types de données et algorithmes, McGraw-Hill, Collection Informatique,1990

•  3. A. Aho, J. Ulman, « Concepts fondamentaux de l’informatique », DUNOD, 1996

•  4. M. Quercia, « Algorithmique », Vuibert , 2002 •  5. D. Knuth, « Algorithmes », University of

Chicago Press, 2011