Introduction IFT 436 - Algorithmes et structures de données Introduction Rachid Kadouche Université de Sherbrooke 30 avril 2013 1 Introduction Les origines de l’algorithmique Abu Ja’far Mohammed Ben Mussa Al-Khwarismi (783-850) 12e siècle, Adelard de Bath introduit le mot algorismus dérivé de Al Kwarizmi. Premiers algorithmes connues : - Euclide : PGCD - Archimède : approximer π - Grec et égyptiens : Calcules d’aires - ... 2 Introduction Qu’est-ce qu’un algorithme ? 3 Introduction Qu’est-ce qu’un algorithme ? Algorithme : Suite finie, séquentielle de règles que l’on applique à un nombre fini de données, permettant de résoudre des classes de problèmes semblables.(Le Petit Robert) entrées -> algo -> sorties 4 Introduction Qu’est-ce qu’un algorithme ? Algorithme : Suite finie, séquentielle de règles que l’on applique à un nombre fini de données, permettant de résoudre des classes de problèmes semblables.(Le Petit Robert) entrées -> algo -> sorties Algorithmique : Science qui étudie l’application des algorithmes à l’informatique.(Le Petit Robert) 5 Introduction Qu’est-ce qu’un algorithme ? Algorithme : Suite finie, séquentielle de règles que l’on applique à un nombre fini de données, permettant de résoudre des classes de problèmes semblables.(Le Petit Robert) entrées -> algo -> sorties Algorithmique : Science qui étudie l’application des algorithmes à l’informatique.(Le Petit Robert) Algorithmique et programmation : 1 2 3 4 6 Analyse du problème Conception d’une solution : algorithmique choix de la représentation des données choix de la méthode utilisée Développement : programmation choix du langage de programmation choix de la machine utilisée Tests Introduction Le rôle de l’algorithmique Tri : permet de réarranger et de classer des données. Exemple : Trier une liste Entrée : Une séquence de n nombre a1, a2, ..., an Sortie : Une permutation a10 , a20 , ..., an0 de la séquence d’entrée tel que : a10 6 a20 6 · · · 6 an0 . Recherche :chercher des données. Exemple :localiser des données dans un fichier. Traitement de chaines : manipulation de chaines de caractères. Exemple : recherche de motifs dans des chaines (pattern matching), compression de fichiers, cryptographie. Algorithmes sur graphes : résolution de problèmes complexes pouvant être représentés par une structure de données particulière (par exemple le problème du voyageur de commerce). Algorithmes mathématiques : Problèmes traitant de l’arithmétique des entiers, des polynômes, des matrices. 7 Introduction Applications pratiques de l’algorithmique Séquençage du génome humain Internet Chemin le plus court Table de Hachage Filtrage de chaı̂ne de caractère Commerce électronique Cryptographie Télécommunications Routage Domotique Assistance aux personnes âgées ou dépendantes . Minimisation des coûts 8 Introduction Avec quelles conventions écrit-on un algorithme ? Organigrammes : représentation graphique, avec des carrés, des losanges, etc. La fonction EstPremier (n) : 9 Introduction Avec quelles conventions écrit-on un algorithme ? Organigrammes : représentation graphique, avec des carrés, des losanges, etc. La fonction EstPremier (n) : Dès que l’algorithme commence à grossir, il devient illisible. 10 Introduction Avec quelles conventions écrit-on un algorithme ? Pseudo-code (langage de description d’algorithme : LDA) :plus rapide à écrire et plus facile à traduire en un langage de programmation. Algorithme : EstPremier( n :entier) :booléen if (n=1)or (n=2)or (n=3)or (n=5) then return true ; if ((n mod 2)= 0)or ((n mod 3)= 0) then return false ; div ← 3; while div ≤ rac(n) do if ((n mod div)= 0) then return false else div ← div + 2; return true ; 11 Introduction Coût des algorithmes Plusieurs algorithmes peuvent faire la même chose mais en effectuant un nombre d’opérations différent. Différencier leurs coûts : 12 Introduction Coût des algorithmes Plusieurs algorithmes peuvent faire la même chose mais en effectuant un nombre d’opérations différent. Différencier leurs coûts : coût en temps d’exécution 13 Introduction Coût des algorithmes Plusieurs algorithmes peuvent faire la même chose mais en effectuant un nombre d’opérations différent. Différencier leurs coûts : coût en temps d’exécution coût en place mémoire 14 Introduction Coût des algorithmes Plusieurs algorithmes peuvent faire la même chose mais en effectuant un nombre d’opérations différent. Différencier leurs coûts : coût en temps d’exécution coût en place mémoire nombre de transferts mémoire 15 Introduction L’efficacité Le tri insertion : c1 n2 opérations pour trier n nombres, Le tri fusion : c2 n lg (n) opérations pour trier n nombres, Ordinateur A : 1 milliard d’op/sec (1 Ghz) Ordinateur B : 10 millions d’op/sec (10 Mhz) 16 Introduction L’efficacité Le tri insertion : c1 n2 opérations pour trier n nombres, 2n2 Le tri fusion : c2 n lg (n) opérations pour trier n nombres, 50n lg (n) Ordinateur A : 1 milliard d’op/sec (1 Ghz) Ordinateur B : 10 millions d’op/sec (10 Mhz) 17 Introduction Références Thomas H. Cormen, Charles E. Leiserson et Ronald L. Rivest, Introduction à l’algorithmique, 2e edition 18