Cours Algoritnmique Avancée
Cours Algoritnmique Avancée
Cours Algoritnmique Avancée
Algorithmique Avancée et
calcule haute performance HPC
Plan du cours d’ Algorithmique
Avancée
Introduction Général
Les algorithmes itératifs et récursifs
La notion de complexité algorithmique
Etudes d’algorithmes et analyse de complexité
Algorithme itératif
Algorithme récursif <diviser pour régner>
Autres algorithmes
Exemple [5;2;4;6;1;3] :
Algorithme:
T(n) peut ici être écrit sous la forme T(n) = an2 +bn +c.
Avec a, b et c des constantes, et T(n) est donc une fonction
quadratique O(n2).
COMBINAISON (n, p)
Début
Si p = 0 ou p = n alors renvoyer 1
sinon renvoyer COMBINAISON (n-1, p) + COMBINAISON (n-1, p-1)
Fin Si
Fin
Algo. Avancée, Master SER(S3),
12/01/2021 FSTH 25
La récursivité et le paradigme
« diviser pour régner »
Récursivité mutuelle
Des définitions sont dites mutuellement récursives si elles
dépendent les unes des autres. Ça peut être le cas pour la
définition de la parité :
ACKERMANN(m, n)
si m = 0
alors renvoyer n+1
sinon si n = 0 alors renvoyer ACKERMANN (m-1, 1)
sinon renvoyer ACKERMANN(m-1, ACKERMANN(m, n-1))
En résumé on peut utiliser la récursivité comme l’on veut, à peu près
n’importe comment.
12/01/2021 Algo. Avancée, Master SER(S3), FSTH 27
La récursivité
et le paradigme « diviser pour régner »
Principe et dangers de la récursivité
Principe et intérêt : ce sont les mêmes que ceux de la
démonstration par récurrence en mathématiques. On doit
avoir :
– un certain nombre de cas dont la résolution est connue, ces «
cas simples » formeront les cas d’arrêt de la récursion;
– un moyen de se ramener d’un cas « compliqué » à un cas «
plus simple ».
La récursivité permet d’écrire des algorithmes concis et
élégants.
Algo. Avancée, Master SER(S3),
12/01/2021 FSTH 28
La récursivité
et le paradigme « diviser pour régner »
Difficultés :
– la définition peut être dénuée de sens :
Algorithme A(n)
renvoyer A(n)
– il faut être certains que l’on retombera toujours sur un cas
connu, c’est-à-dire sur un cas d’arrêt ; il nous faut nous
assurer que la fonction est complètement définie.