1 Introduction
L’objectif de ce cours est de vous faire d couvrir les techniques permettant d’impl´ementer
des syst`emes «intelligents »sur la base d’une conception orient´ee vers la r´esolution de
probl`emes particuliers (Algorithmes ad-hoc : plus court chemin, flots, ordonnancement...).
2 Algorithmes
Selon le dictionnaire de l’informatique, on appelle algorithme
Un jeu de r`egles ou de proc´edures bien d´efini qu’il faut suivre pour obte-
nir la solution d’un probl`eme dans un nombre fini d’´etapes. Un algorithme
peut comprendre des proc´edures et instructions alg´ebriques, arithm´etiques,
et logiques, et autres. Un algorithme peut ˆetre simple ou compliqu´e. Cepen-
dant un algorithme doit obtenir une solution en un nombre fini d’´etapes. Les
algorithmes sont fondamentaux dans la recherche d’une solution par voie d’or-
dinateur, parce que l’on doit donner `a un ordinateur une s´erie d’instructions
claires pour conduire `a une solution dans un temps raisonnable.
Cette d´efinition ´etant pos´ee, on arrive naturellement `a la notion de complexit´e algorith-
mique.
2.1 Notion de complexit´e algorithmique
Les questions qui sous-tendent la notion de complexit´e algorithmiques sont les suivantes :
– Comment qualifier un algorithme ?
– Combien de temps prend il ?
– Cet algorithme est il meilleur que cet autre ?
– Cet algorithme est-il applicable ?
– A-t’on un probl`eme d’explosion combinatoire ? (probl`emes NP-complets)
– Aura t’on un probl`eme de ressources ?
2.1.1 Introduction : exemple du tri par insertion
Ce type tri consiste `a ins´erer `a la bonne place dans un tableau rang´e les valeurs que l’on
veut trier. Si, de plus, le tri se fait sur place, l’algorithme correspondant au tri du tableau
A est donc le suivant :
1. pour j←2 `a longueur[A]
(a) faire cle ←A[j]
(b) i←j−1
(c) tant que i > 0 et A[i]> cle
i. faire A[i+ 1] ←A[i]
2