```{htmlonly}
``` (algo)= # Algorithmique ```{toctree} :maxdepth: 2 :hidden: :numbered: 2 algorithmes tri algo-progs principes recherche heuristiques tris recursivite conclusion ``` ## Quoi ? Un **{glo}`algo|algorithme`** permet de décrire la solution d'un problème étape par étape, afin qu'elle soit intelligible par une machine. Pour résoudre un problème informatique, il faut commencer par le décomposer en sous‑problèmes. Et pour chacun de ces sous‑problèmes, il faut décrire précisément les opérations à réaliser pour le résoudre. Il existe de nombreux algorithmes qui permettent de résoudre un problème, mais ils ne se valent pas tous. L’**algorithmique** étudie les propriétés des algorithmes, afin de nous aider à décider quel est le meilleur algorithme à utiliser. ```{figure} media/Shadok.jpeg --- alt: devise shadok width: 300px ``` ## Pourquoi ? Les algorithmes sont partout. Ils analysent vos photos, vos déplacements et votre activité sur des plateformes informatiques. Ils vous proposent des contenus à regarder et composent votre fil d'actualité. Il est important de comprendre ce qu'il y a derrière. ## Comment ? Dans un premier temps nous allons nous intéresser à la notion même d'**algorithme** : comment décomposer la solution d'un problème en étapes ? Dans un deuxième temps, nous allons aborder la notion de **complexité** qui permet de comparer différents algorithmes entre eux. Si plusieurs solutions existent, alors il faut choisir la plus rapide. Mais comment déterminer la vitesse d’un algorithme ? Et sera‑t‑elle la solution la plus rapide dans tous les cas ? Finalement, si vous le souhaitez, vous pouvez ouvrir la porte merveilleuse de la **récursivité**, à la manière des *Infinity Mirror Room* de Yayoi Kusama. ```{figure} media/Kusama.jpeg --- alt: Infinity Mirror Room de Yayoi Kusama width: 600px ``` ## Objectifs d'apprentissage À la fin de ce chapitre, vous saurez ce qu'est un algorithme et vous serez capable de transcrire des algorithmes en programmes. Vous saurez résoudre des problèmes, en décomposant leur solution en étapes à suivre. Vous verrez également que pour un même problème, on peut avoir plusieurs solutions avec des propriétés, avantages et désavantages différents.