CHAPITRE VIII Algorithme, correction, complexite All is well that ends well. William Shakespeare Objectifs Un des objectifs de ce cours est de developper une notion de plus en plus precise de complexite de calcul. Pour ceci il faut preciser la methode utilisee. Afin de choisir parmi les methodes admises il faut d'abord une specification. On est ainsi mene a regarder de plus pres la notion d'algorithme. Ce chapitre discutera ce concept, en soulignant les trois points cles : terminaison, correction, complexite. Sommaire 1. Qu'est-ce qu'un algorithme ? 1.1. Algorithme = specification + methode. 1.2. Preuve de cor- rection. 1.3. Le probleme de terminaison. 2. La notion de complexite et le fameux « grand O » . 2.1. Le cout d'un algorithme. 2.2. Le cout moyen, dans le pire et dans le meilleur des cas. 2.3. Complexite asymptotique. 2.4. Les principales classes de complexite. 2.5. A la recherche du temps perdu. 1. Qu'est-ce qu'un algorithme ? Exemple 1.1. En utilisant l'arithmetique des entiers, on veut calculer le coefficient binomial ( n k ) : Specification VIII.1 Calcul du coefficient binomial ( n k ) Entree: deux entiers n et k Sortie: le coefficient binomial ( n k ) En voici quatre methodes candidates a resoudre ce probleme.
- analyse de complexite
- cout moyen
- recherche dichotomique
- preconditions
- meme sans connaıtre
- preuves dans le code source
- preuve de correction