next up previous contents index
Next: Recherche d'un élément dans Up: Algorithmes Previous: Correction d'erreurs : le

Problèmes, algorithmes et structures de données

Les algorithmes résolvent des problèmes. Voici quelques exemples de problèmes et leur solution algorithmique :

Il n'existe pas, hélas, de méthode universelle pour construire des algorithmes. Il y a cependant quelques grandes méthodes :

La notion même d'algorithme suppose que les données d'un problème soient représentées de façon finie. Ceci marque la différence entre un entier et un nombre réel (élément de l'ensemble R) : un entier quelconque a une représentation finie, ce n'est pas le cas d'un nombre réel quelconque (mais certains nombres réels, aussi bien $\sqrt{2}$ que $\pi $, admettent une représentation finie par un programme qui les calcule). Il suffirait donc d'exiger que les données d'un problème soient représentées par une suite de 0 et de 1, ce qu'on appelle un mot binaire. Généralement, au terme d'une étape de modélisation, les données apparaissent sous une forme plus structurée : une matrice, un graphe, une table, etc.

La notion de structure de données est aussi importante en informatique que les structures des mathématiques (corps, espace vectoriel, espace de probabilités, variété différentielle, etc). En informatique comme en mathématiques, il s'agit d'un ensemble de données et de certaines opérations sur celles-ci. D'ailleurs certaines de ces structures sont autant étudiées de part et d'autre : les notions de monoïde, de graphe ou de matroïde figurent dans les cours de mathématiques discrètes. D'autres, les piles, files, tas ou tables sont plus particulièrement étudiées, et surtout utilisées, par les informaticiens. Les structures de données jouent un rôle central dans la conception et la formulation de certains algorithmes : les piles pour le parcours en profondeur d'un graphe, les files pour leur parcours en largeur, les tas pour le codage de Huffman, et les arbres pour le décodage.

En outre, certains problèmes ne peuvent pas être résolus par un algorithme. C'est le cas du problème consistant à déterminer si l'exécution d'un programme quelconque se termine : le plus simple est de l'exécuter, mais si elle ne termine pas, on ne saura jamais si elle termine ou non. Il existe d'autres problèmes, qui peuvent être résolus par des algorithmes, mais tels que tous les algorithmes connus à ce jour pour les résoudre ont un coût excessif (par exemple, un coût exponentiel) : on ne pourra donc les exécuter que sur des données de petite taille. Un exemple en est la détermination d'une tournée d'un voyageur de commerce de longueur minimale. On est donc amené à être moins exigeant : on cherchera un algorithme qui calcule des solutions approchées, ou alors on renoncera au caractère déterministe des algorithmes, et on introduira de l'aléa.


next up previous contents index
Next: Recherche d'un élément dans Up: Algorithmes Previous: Correction d'erreurs : le
R. Lalement
2000-10-23