Accès Rapide
Introduction
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.
Cela se résume simplement à :
Algorithmes + Structures de Données = Programmes.
En d'autres termes, c'est une liste d'instructions, de procédures ou de formule qui résout un problème… Ce peut être un code pour trier efficacement les résultats de la recherche, une formule pour trouver le chemin le plus court entre A et B sur une carte, un code pour crypter et décrypter les informations sensibles, etc.
Les algorithmes définissent ce qu'il faut faire pas-à-pas pour résoudre un problème. 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é).
L'apprentissage des algorithmes ne nécessite la connaissance d'aucun langage de programmation, il nécessite seulement de comprendre les étapes à suivre. Il est toutefois recommandé d'en connaître un si vous souhaitez pouvoir implémenter vos propres algorithmes et les voir fonctionner.
Objectifs
Nous allons apprendre à developper d'utiles et puissants algorithmes. Nous aborderons des concept de programmation tels que : la complexité algorithimque, les stratégies diviser pour régner, la récursion, la fusion de données, les optimisations, les systèmes de réécriture de chaînes, les méthodes de partition...
Et ensuite?
Lorsque nous aurons maitrisé certains concepts de bases, nous allons pouvoir aller plus loin avec des structures de données plus complexes, la maitrise d'outils de développement ou directement la création de notre propre logiciel (Hurna-Core C++ pourra être utilisé comme base).
Pourquoi les algorithmes sont-ils importants ?
De la programmation à tous vos dispositifs électroniques, comprendre les algorithmes nous donne une vision plus profonde de ce qui nous entoure numériquement. Dans la programmation en particulier, cela nous permet de prédire rapidement si il existe des cas particuliers qui ne produiront pas de résultats acceptables : cela est indispensable pour gérer la précision et la rapidité d'éxécution des programmes (e.g. impossible de devenir Hacker sans ça).
Plus nous en saurons sur les algorithmes, meilleures seront nos chances de trouver un moyen efficace de résoudre nos problèmes. 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 problèmes déjà résolus.
Beaucoup de problèmes, bien qu’ils pourraient ne pas sembler réalistes ici, nécessitent le même ensemble de connaissances rencontrées dans le monde professionnel.
Créer un algorithme est beaucoup plus simple que nous ne pouvons l'imaginer
Les algorithmes sont presques toujours associés aux mathématiques et à l'obscurantisme qu'elles inspirent. Connaitre le calcul est utile mais nous n'en aurons pas forcément besoin.
Ne perdons pas de temps à les mémoriser
Essayons plutôt de les comprendre et de savoir les utiliser pour réaliser nos développements. La clé est de comprendre comment les ordinateurs agissent !