Algorithmique et optimisation¶
Complexité, structures de données et algorithmes fondamentaux — des bases théoriques aux structures distribuées et aux problèmes d'ordonnancement.
graph LR
A["Complexite"] --> B["Structures"]
B --> C["Tri et recherche"]
C --> D["Prog. dynamique"]
D --> E["Hachage distribue"]
E --> F["Consensus"]
F --> G["Optimisation"] Ce que vous allez apprendre¶
À la fin de ce tutoriel, vous serez capable de :
- Évaluer la complexité d'un algorithme et choisir la bonne structure de données
- Reconnaitre les algorithmes de tri et de parcours adaptés à chaque contexte
- Appliquer la programmation dynamique et les approches gloutonnes
- Comprendre le hachage consistant, les Bloom filters et les CRDTs
- Expliquer Raft et les mécanismes de consensus distribué
- Résoudre des problèmes d'ordonnancement et d'allocation de ressources
- Relier chaque concept a un cas d'usage réel (Kubernetes, Kafka, Redis)
Prérequis¶
| Prérequis | Détail |
|---|---|
| Mathématiques pour l'informatique | Section précédente (recommande, pas obligatoire) |
| Un langage maîtrise | Python, Java, Go ou TypeScript |
Parcours¶
| Section | Contenu |
|---|---|
| Complexité algorithmique | O, Omega, Theta, P/NP, évaluer un choix technique |
| Structures de données | Tableaux, arbres, tables de hachage, heaps, critères de choix |
| Tri, recherche et parcours | Quicksort, mergesort, recherche dichotomique, parcours de graphes |
| Programmation dynamique et gloutonne | Memoisation, tabulation, gloutons, sac a dos, Huffman |
| Hachage et structures distribuees | Consistent hashing, Bloom filters, HyperLogLog, CRDTs |
| Consensus et algorithmes repartis | Paxos, Raft, horloges vectorielles, détection de pannes |
| Optimisation et ordonnancement | Programmation lineaire, scheduling, bin packing, Kubernetes |