Un algorithme est une procédure structurée dédiée à la résolution d'un problème. Tout ce que vous faites avec un ordinateur ou un téléphone portable repose sur des algorithmes, même l'application la plus simple ne serait pas possible sans algorithmes.

En fait, les logiciels (même les Intelligence Artificielle les plus avancées) ne sont qu'un regroupement d'algorithmes et de structures données, ils se résument seuleument à ça :
Algorithmes + Structures de Données = Programmes.

Les algorithmes définissent ce qu'il faut faire pas-à-pas pour résoudre un problème. L'apprentissage des algorithmes ne nécessite la connaissance d'aucun langage de programmation, il nécessite seulement de comprendre les étapes à suivre.
Si nous faisons le lien avec les mathématiques ou la physique, cela signifie par exexmple de connaitre les étapes de résolution d'une équation (e.g. Robot résolvant une équation du 1er degré).

Les algorithmes sont indépendants des langages de programmation utilisés (les algorithmes restent les mêmes quelque soit le langage, seule la syntaxe peut changer). Il est toutefois vivement recommandé d'en connaître un si vous souhaitez implémenter vos propres algorithmes et les voir fonctionner.

Pourquoi les algorithmes sont-ils si importants ?

Différents types d'algorithmes résolvent différents types de problèmes. Sans les comprendre, il est difficile de voir les choses d'un point de vue global.
De même, qu'il soit presque impossible de construire un pont solide en plaçant simplement des briques les unes après les autres; il doit y avoir une compréhension plus profonde de ce que l'on fait: quel problème résout un algorithme et pourquoi est-il construit de cette façon ?
De la programmation à tous vos dispositifs électroniques, voir les algorithmes vous donne une vision profonde de ce qui vous entoure numériquement.

Dans la programmation en particulier, comprendre les détails des algorithmes impliqués vous permet de prédire rapidement s’il existe des cas particuliers dans lesquels ils ne fonctionneront pas ou ne produiront pas de résultats acceptables. La compréhension des algorithmes est indispensable pour gérer la précision et la rapidité d'éxécution des programmes (pour devenir Hacker c'est indispensable).

Bien sûr vous rencontrerez, au jour le jour, des problèmes qui n'ont pas encore été résolus. Dans ces cas, vous devrez créer un nouvel algorithme ou appliquer un ancien algorithme d'une nouvelle manière. Plus vous en saurez sur les algorithmes, meilleures seront vos chances de trouver un moyen efficace de résoudre le problème. Dans la plupart des cas, un problème peut être reformulé ou adapté au résultat d'un ancien; il reste donc toujours important d'avoir une compréhension des vieux problèmes.

En développant une bonne compréhension d’un grand nombre d’algorithmes, vous pourrez choisir le bon et l’appliquer correctement. De plus, résoudre des problèmes comme ceux-là vous aidera à perfectionner vos compétences à cet égard. Beaucoup de problèmes, bien qu’ils ne semblent pas réalistes ici, nécessitent le même ensemble de connaissances algorithmiques rencontrées dans le monde professionnel.

Ne perdez pas de temps à les mémoriser

Essayez plutôt de les comprendre. Il vaut mieux se concentrer sur des techniques telles que la récursivité, division du règne, programmation dynamique, théorie des graphes, complexité ... Voyez ce qui ralentit une approche lorsque que l'autre est plus rapide et apprenez quels en sont les compromis.

La clé est de comprendre comment les ordinateurs agissent !

L'algorithmie est beaucoup plus simple que vous ne pouvez l'imaginer

Les algorithmes sont presques toujours associés aux mathématiques et à l'obscurantisme qu'elles inspirent. Connaitre le calcul est utile mais vous n'en aurez pas forcément besoin. Vous n'avez pas besoin de manipuler les mathématiques ou de maîtriser la programmation pour tout comprendre des algorithmes et des structures de données.

L'utilisation de H.urna Explorer en association avec ce wiki permettra de vous donner une route amusante pour visualiser et comprendre tous les algorithmes énumérés ci-dessous.

Générateurs de Fractales

Générateurs de Labyrinthes

Recherche

Tri