
Introduction
L’algorithmique est la discipline de l’informatique traitant de la conception et l’analyse d’al-
gorithmes. A ce titre, l’algorithmique se concentre principalement sur des problèmes abstraits
dont la résolution permet de mettre en évidence de grands principes pouvant ensuite être décli-
nés pour la résolution de problèmes spécifiques issus d’applications pratiques. L’algorithmique se
distingue de la programmation au sens où l’algorithmique permet de concevoir des algorithmes
à un certain niveau d’abstraction, susceptibles ensuite d’être programmés dans n’importe quel
language de programmation. La traduction d’un algorithme en programme nécessite néanmoins
de tenir compte du language de programmation, de l’environnement d’exécution du programme,
de ses entrées, de ses sorties, etc., toutes choses qui ne sont pas au centre des intérêts de l’al-
gorithmique. L’exemple de l’algorithme PageRank, au cœur de nombreux moteurs de recherche,
illustre la différence entre algorithmique et programmation. En effet, autant il est relativement
aisé de comprendre les principes de base de PageRank, voire de décrire PageRank sous forme
d’un algorithme relativement compact, autant le passage de la description algorithmique de
PageRank à la conception d’un moteur de recherche nécessite un travail considérable.
Algorithmique Programmation Vérification
assistants
de preuves
théorie des graphes
combinatoire
logique
algèbre
Figure 1 – L’algorithmique au sein de la chaine de conception de logiciels
La figure 1 illustre la position de l’algorithmique au sein de la chaine de conception de logi-
ciels. La conception et l’analyse d’algorithmes se nourri de résultats et de concepts à l’interface
entre mathématique et informatique. Des concepts issus de l’algorithmique, il est possible de dé-
river des programmes, soit manuellement, soit via l’utilisation d’outils tels que les assistants de
preuves, ces derniers permettant à la fois de concevoir un programme et d’en générer une preuve
de correction. Une fois le programme conçu, il convient ensuite de le vérifier, soit statiquement,
soit à l’exécution.
L’algorithmique est donc essentielle à la conception de logiciels efficaces. Sans algorithmique,
point de PageRank, et donc point de Google. Ce document effectue un survol des résultats
algorithmiques les plus importants. Il débute par des rappels de calculabilité et de complexité,
et se poursuit par la description de techniques de conception et d’analyse d’algorithmes. Il aborde
les algorithmes d’approximation, les algorithmes paramétrés, et les algorithmes probabilistes.
1 Préambule : les graphes et PageRank de Google
1.1 Des objets au cœur de l’algorithmique : les graphes
Ce cours utilisera abondemment la notion de graphe, un des modèles les plus utilisés pour for-
maliser les problèmes réels. Par exemple, Internet peut être vu comme un graphe connectant des
routeurs, et le Web comme un graphe connectant des pages html. Les interactions moléculaires
se modèlent également comme un graphe, tout comme les relations entre concepts linguistiques
ou les relations entre les espèces dans la théorie de l’évolution, et caetera. On pourrait multiplier
les exemples à l’infini.
Rappelons donc qu’un graphe Gest défini comme une paire (V, E)où Vest l’ensemble
5