(a) Un cadre de comparaison vitesse/taille
(b) Notations O, Ω, Θ
(c) Complexit´e des algorithmes pr´esent´es
6. Structures relationnelles Graphes, digraphes
1 G´en´eralit´es
1.1 Qu’est-ce qu’un algorithme ?
Des probl`emes aux programmes.
1. Identifier le probl`eme `a r´esoudre. Ce n’est toujours ´evident, surtout quand la personne soumet-
tant le probl`eme n’est pas informaticienne. Il faut aussi v´erifier que le probl`eme peut ˆetre r´esolu
`a l’aide d’un ordinateur.
Exemples : Savoir dans un groupe qui est le “meilleur” 6=Savoir dans un groupe qui a en moyenne les
meilleures notes.
Quelle est la meilleure formation 6=Quelle est la formation avec le meilleur pourcentage de diplˆom´e 6=
Quelle est la formation avec la meilleure insertion professionnelle.
2. Formaliser le probl`eme. Une fois le probl`eme bien identifi´e, on utilise des mod`eles formels (en
g´en´eral bien ´etudi´es) pour exprimer le probl`eme sous une forme bien d´efinie et bien sp´ecifi´ee.
Exemples : Les syst`emes d’´equations lin´eaires (circuits, r´esistance des mat´eriaux, g´eom´etrie)
Les ´equations aux d´eriv´ees partielles (EDP) (m´ecanique des fluides, ´electromagn´etisme, etc)
Les grammaires et autres outils de math´ematiques discr`etes (reconnaissance de texte, logique et satis-
faction de contraintes)
Les syst`emes d’information, les IHM sont repr´esent´ees sous forme relationnelle et les processus avec des
diagrammes adapt´es (MERISE, UML)
3. Trouver une solution dans le cadre du mod`ele choisi, `a l’aide d’une succession d’op´erations
´el´ementaires. On parle d’algorithme.
D´efinition 1 (Algorithme (inspir´e de Wikipedia)) Un algorithme est un ´enonc´e d’une suite
d’op´erations permettant de donner la r´eponse `a un probl`eme (´enonc´e en terme de : j’ai telles
donn´ees en entr´ees, je veux telles donn´ees en sortie). Si ces op´erations s’ex´ecutent en s´equence,
on parle d’algorithme s´equentiel. Si les op´erations s’ex´ecutent sur plusieurs processeurs en par-
all`ele, on parle d’algorithme parall`ele.
Exemples : Pour les EDP, il existent des sch´emas classiques pour transformer toute EDP en une succes-
sion de calculs qui approchent la solution r´eelle de plus en plus pr´ecis´ement.
Pour les ´equations lin´eaires, elles sont souvent mises sous forme matricielles, puis r´esolues avec des
algorithmes d’inversion de matrices.
Pour la reconnaissance de texte, on utilisera souvent des structures de donn´ees auxiliaires dans lesquelles
on r´eduit consid´erablement l’espace de recherche.
Un algorithme est donc un moyen de calculer une solution au probl`eme pos´e, le calcul ´etant
d´ecompos´e en un nombre fini d’instructions et devant ˆetre ex´ecutable en un temps fini, quelle
que soit la donn´ee en entr´ee (probl`eme dit de la terminaison).
On d´ecrit un algorithme souvent `a l’aide d’un pseudo-langage naturel tr`es simplifi´e, `a la fois
lisible et formel. Les donn´ees, r´esultats, et variables interm´ediaires sont clairement d´eclar´es,
chaque calcul est pr´ecis´e de fa¸con compl`ete, etc.
4. L’algorithme est enfin traduit sous forme d’un langage de programmation adapt´e, parfois d´ependant
aussi du syst`eme d’exploitation.
Il est clair que les ordinateurs ne savent faire que des op´erations extrˆemement ´el´ementaires :
acc`es m´emoire et arithm´etique essentiellement. C’est donc le travail de l’informaticien d’´ecrire
une solution `a un probl`eme complexe sous forme d’une suite d’instructions ´el´ementaires.
2