Algorithme
Un algorithme est une suite finie et non ambiguë d’opérations ou d'instructions permettant de résoudre un problème ou d'obtenir un résultat donné[1].
Le mot algorithme vient du nom latinisé du mathématicien perse Al-Khawarizmi, écrivant en langue arabe, surnommé « le père de l'algèbre »[2]. Le domaine qui étudie les algorithmes est appelé l'algorithmique. On retrouve aujourd'hui des algorithmes dans de nombreuses applications telles que la cryptographie, le routage d'informations, la planification et l'utilisation optimale des ressources, la bio-informatique, etc.
Définition générale
Un algorithme est alors une méthode générale pour résoudre un ensemble de problèmes. Il est dit correct lorsque, pour chaque instance du problème, il se termine en produisant la bonne sortie, c'est-à-dire qu'il résout le problème posé. On mesure l'efficacité d'un algorithme notamment par sa durée de calcul, par sa consommation de mémoire RAM (en partant du principe que chaque instruction a un temps d'exécution constant), par la précision des résultats obtenus (par exemple avec l'utilisation de méthodes probabilistes, comme la méthode de Monte-Carlo), sa scalabilité (son aptitude à être efficacement parallélisé), etc. Les ordinateurs sur lesquels s'exécutent ces algorithmes ne sont pas infiniment rapides : le temps de machine reste une ressource limitée, malgré une augmentation constante des performances des ordinateurs. Un algorithme sera donc dit performant s'il utilise avec parcimonie les ressources dont il dispose, c'est-à-dire le temps CPU et la mémoire RAM ou plus récemment sa consommation électrique. L’analyse de la complexité algorithmique permet de prédire l'évolution en temps calcul nécessaire pour amener un algorithme à son terme, en fonction de la quantité de données à traiter.
Quelques définitions connexes
Donald Knuth (1938‒), également professeur à l'université Stanford lista les cinq propriétés suivantes comme étant les prérequis d'un algorithme :
- la finitude : « Un algorithme doit toujours se terminer après un nombre fini d’étapes. »
- définition précise : « 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. »
- entrées : « … des quantités qui lui sont données avant qu'un algorithme ne commence. Ces entrées sont prises dans un ensemble d'objets spécifié. »
- sorties : « … des quantités ayant une relation spécifiées avec les entrées. »
- rendement : « … toutes les opérations que l'algorithme doit accomplir doivent être suffisamment basiques pour pouvoir être en principe réalisées dans une durée finie par un homme utilisant un papier et un crayon. »
George Boolos (1940‒1996), philosophe et mathématicien, proposa la définition suivante :
- « Des instructions explicites pour déterminer le nième membre d'un ensemble, pour n un entier arbitrairement grand. De telles instructions sont données de façon bien explicite, sous une forme qui puisse être utilisée par une machine à calculer ou par un humain qui est capable de transposer des opérations très élémentaires en symboles. »
Gérard Berry (1948‒), chercheur en science informatique en donne la définition grand public suivante[3]:
- « Un algorithme, c’est tout simplement une façon de décrire dans ses moindres détails comment procéder pour faire quelque chose[4]. Il se trouve que beaucoup d’actions mécaniques, toutes probablement, se prêtent bien à une telle décortication. Le but est d’évacuer la pensée du calcul, afin de le rendre exécutable par une machine numérique (ordinateur, …). On ne travaille donc qu’avec un reflet numérique du système réel avec qui l’algorithme interagit. »
Algorithmes mathématiques
Les algorithmes mathématiques sont des objets historiquement dédiés à la résolution de certains problèmes, comme la multiplication de deux nombres. Ils ont été formalisés et définis plus précisément bien plus tard à la suite de la crise des fondements des mathématiques et à l'avènement des machines qui permettaient de les mettre en œuvre automatiquement, les ordinateurs, grâce à des modèles formels comme la machine de Turing, l'équivalent mathématique de nos ordinateurs actuels.
Algorithmes non mathématiques
La plupart des algorithmes ne sont pas au sens strict mathématiques mais rattachés aux sciences informatiques au sens où il s'appliquent à des objets numériques.
On peut distinguer :
- des algorithmes universels qui s'appliquent à toutes données numériques : par exemple les algorithmes liées au chiffrement, ou qui permettent de les mémoriser ou de les transmettre ;
- des algorithmes dédiés à un type de données particulier (par exemple ceux liés au traitement d'images).
Voir aussi : Liste de sujets généraux sur les algorithmes (en)
Algorithmes dans la vie quotidienne
- Une recette de cuisine peut être réduite à un algorithme, si on peut réduire sa spécification aux éléments constitutifs :
- des entrées (les ingrédients, le matériel utilisé) ;
- des instructions élémentaires simples, dont l'exécution amène au résultat voulu ;
- un résultat : le plat préparé.
- Cependant, les recettes de cuisine ne sont en général pas présentées rigoureusement sous forme non ambiguë : il est d'usage d'y employer des termes vagues laissant une liberté d'appréciation à l'exécutant alors qu'un algorithme stricto sensu doit être précis et sans ambiguïté.
- Le tissage, surtout tel qu'il a été automatisé par le métier Jacquard est une activité que l'on peut dire algorithmique.
- Un casse-tête, tel le Rubik's Cube, peut être résolu de façon systématique par un algorithme qui mécanise sa résolution.
- En sport, l'exécution de séquences répondant à des finalités d'attaque, de défense, de progression, correspond à des algorithmes.
Notes et références
- ↑ La notion de problème peut être vu dans un sens large, il peut s'agir d'une tâche à effectuer, comme trier des objets, assigner des ressources, transmettre des informations, traduire un texte etc. Il reçoit des données (les entrées), par exemple les objets à trier, la description des ressources à assigner, des besoins à couvrir, un texte à traduire, les informations à transmettre et l'adresse du destinataire, etc., et fournit éventuellement des données (la sortie), par exemple les objets triés, les associations ressource-besoin, un compte-rendu de transmission, la traduction du texte etc.
- ↑ Ce mot peut donc être considéré comme étant un onomastisme.
- ↑ Un petit condensé d'histoire de l'informatique, web-serie didactique
- ↑ Qu'est ce qu'un algorithme ? Philippe Flajolet, Étienne Parizot, interstices.fr, 2004
Annexes
Articles connexes
- Algorithmique
- Correction d'un algorithme
Liens externes
- Qu’est-ce qu'un algorithme ? par Philippe Flajolet et Étienne Parizot sur la revue en ligne Interstices
- Définition du terme algorithme par les auteurs
- La page de l'algorithme