- Définition d'un algorithme
- Abstraction des ordinateurs : machine de Türing, modèle RAM, architecture de Von Neumann
- Correction et terminaison d'un algorithme
- Exemples de base : recherches et tris
Ce cours introduit la notion de complexité des algorithmes de manière pratique.
Après avoir introduit les définitions et les notations nécessaires, on étudie les solutions des problèmes classiques de l'informatique du point de vue de leur coût en temps et en mémoire.
On donne aussi des outils pour résoudre (pas forcèment de manière optimale) des problèmes d'optimisation combinatoire complexes et on discute de la qualité des solutions.
Le cours se conclut avec une étude de cas pratique.
Dans cette dernière partie on verra comment il est possible de combiner les techniques énoncées précedemment pour donner des solutions (sans garantie d'optimalité) à d'autres problèmes algorithmiques classiques comme le voyageur de commerce ou à des problèmes plus complexes issus de l'industrie, de l'économie ou de la société.
En particulier on fera le lien avec les techniques de résolution de problème utilisées en IA qui font l'objet de plusieurs ECUE du parcours L3 IA.