Vous avez sans doute déjà entendu ce mot quelque part, peut être au lycée, ou encore sur des forums de programmation, mais les algorithmes ont un champ d'application bien plus large que vous ne l'imaginez. Ces derniers sont présents partout, dans tous les domaines, et ont traversé toutes les époques. Aujourd'hui, on entend d'autant plus parler d'eux avec Internet, mais savez-vous réellement ce qu'est un algorithme ? Connaissez-vous les enjeux de cette discipline si présente de nos jours ? Cette courte introduction aux algorithmes vous permettra de vous donner une idée de l'importance et de l'envergure de ce domaine dans notre monde.
Un algorithme peut être défini comme une suite d'instructions spécifiques, établie dans un ordre précis, permettant de transformer une entrée en une sortie.
On peut voir un algorithme comme une recette de cuisine :
Cette définition est assez large car un algorithme peut s'appliquer partout, par exemple lorsque vous donnez le chemin à un passant vous indiquez dans un ordre précis les directions à prendre et vous lui communiquez donc des instructions à suivre. Lorsque vous programmez, vous donnez des ordres à l'ordinateur à l'aide de commandes et d'instructions qu'il comprend, et ces dernières doivent être dans le bon ordre pour avoir la sortie voulue. Il existe des milliers d'exemples possibles, et sans même le savoir vous utilisez des algorithmes tous les jours. La plupart des objets autour de vous ont été construits grâce à des algorithmes, une grande partie a été fabriquée depuis une usine qui reçoit en entrée des composants et constitue en différentes étapes bien définies un produit final.
De manière générale, on peut dire qu'un algorithme est un outil qui résout un problème donné, et ce problème peut être de tout type :
Tous ces problèmes nécessitent des algorithmes plus ou moins complexes pour fonctionner, cela peut aller d'un simple message "Bonjour" sur un écran à la création d'un jeu vidéo en ligne multijoueur contenant un environnement 3D par exemple.
Un programmeur est une personne qui résout des problèmes à l'aide de programmes informatiques. Cependant différentes manières existent pour résoudre un problème, et on cherche souvent celle qui prendra le moins de place en mémoire, ou qui sera la plus rapide en temps. Il est donc nécessaire pour un programmeur d'avoir un minimum de notions en algorithmie afin de produire un code de qualité (en termes d'efficacité). Les algorithmes sont des outils comme un autre et il est fondamental de savoir les utiliser correctement lorsque vous programmez.
Les algorithmes sont donc un domaine incontournable aujourd'hui, et d'autant plus si vous programmez. Connaître une base en algorithmie, savoir comment les algorithmes fonctionnent, comment les analyser vont vous permettre de devenir un meilleur programmeur. Cette série d'articles sur les algorithmes peut vous servir de base afin de vous donner une idée concrète sur le sujet, mais si vous souhaitez réellement progresser dans cette discipline il faudra s'entraîner et pratiquer régulièrement. Mais l'entraînement ne peut être réellement efficace que si vous utilisez une méthode de résolution adaptée qui vous permettra de développer votre raisonnement logique. De plus, lorsqu'on cherche à comprendre un algorithme (ou même à le trouver), il est nécessaire de savoir analyser sa complexité en temps et en mémoire pour s'assurer de son efficacité ou pour le comparer à d'autres solutions. Enfin, de nombreuses approches existent pour résoudre un problème donné, et en connaître quelques-unes comme la récursivité, la programmation dynamique, ou encore l'approche gloutonne est un avantage non négligeable car on les retrouve régulièrement dans des algorithmes.