Introduction
Quels sont les problèmes susceptibles d’un traitement informatique ? Cette
interrogation est fondamentale pour l’Informatique. D’une certaine manière, elle
revient à demander quel est l’objet de cette discipline. De plus, elle revêt une di-
mension tout à fait pratique : l’informaticien appelé à écrire un programme doit
s’assurer que le traitement du problème qui l’occupe est effectivement automati-
sable. Ce point est plus litigieux qu’il n’y parait : on peut facilement exhiber deux
problèmes très voisins, dont l’un relève d’un algorithme standard, alors qu’on sait
de l’autre qu’aucun programme ne pourra jamais le résoudre. Mais l’approche de
cette question pratique nécessite le recours à des outils théoriques. Essentiellement
parce que pour identifier les problèmes qui acceptent un traitement algorithmique,
il nous faut définir rigoureusement les deux concepts en jeu : celui de problème
et celui d’algorithme. Le premier n’opposera pas grande résistance : nous lui ré-
glerons même son compte avant la fin de cette introduction ! Pour le deuxième, ce
sera une autre paire de manches. À dire vrai, nous n’auront pas de trop de ce cours
pour donner un premier aperçu de la manière dont les théoriciens l’ont formalisé.
Venons-en donc à la première interrogation : qu’est-ce qu’un problème ? On
distingue plusieurs grandes familles de problèmes : les problème d’évaluation,
d’optimisation, d’approximation, d’énumération, de comptage, de décision. Les
plus importantes sont sans doute celles des problème d’évaluation, pour lesquels
on cherche à calculer la valeur d’une fonction sur différentes entrées, et celle des
problèmes de décision, où l’on veut déterminer si les entrées vérifient une pro-
priété fixée. Par exemple, le calcul du pgcd de couples d’entiers pris en entrée
constitue un problème d’évaluation. A contrario, déterminer si un x∈IN pris en
entrée est premier est un problème de décision.
Quelle que soit la famille considérée, il est important de noter qu’un pro-
blème d’informatique comporte une infinité d’instances. C’est dans ce cadre
que prend sens la notion d’algorithme. Ainsi, il serait absurde d’imaginer un al-
5