Aller au contenu

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