CHAPITRE 1. THÉORIE DE LA COMPLEXITÉ ET MESURE DE PERFORMANCE
3
Chapitre 1
THÉORIE DE LA COMPLEXITÉ ET
MESURE DE PERFORMANCE
CHAPITRE 1. THÉORIE DE LA COMPLEXITÉ ET MESURE DE PERFORMANCE
4
PARTIE 1.
COMPLEXITÉ D'UN ALGORITHME
La théorie de la complexi à pour but de classifier des problèmes en fonction de la
complexité du meilleur algorithme pour les résoudre.
Certains problèmes sont durs.
- Il peut ne pas exister d’algorithme ecace pour les réoudre,
Certains problèmes sont faciles.
- Connaît-on le meilleur algorithme?
Le domaine de l’analyse d’algorithmique permet de présenter un ensemble de
concepts de bases pour mesurer la complexité et les performances des algorithmes.
1. Généralités
L'objectif de ce chapitre est de présenter les grands principes de la complexité
algorithmique et les qualités peut-on demander à un algorithme ou à un programme.
Ceci nous amène à donner les outils permettant de répondre aux questions suivantes :
Le programme s’arrête-t-il de l’exécution?
Est-ce qu’il réalise effectivement la tâche qu’on lui a demandé? C’est à dire, est-il
correct?
Il faut qu'il soit bien écrit, compréhensible en vue d’une maintenance ou d’une
amélioration ce qui nous conduit à présenter le critère d’évaluation d’efficacité
entre les algorithmes suivant :
L’algorithme doit être performant, pour cela on distingue deux critères essentiels :
Le temps de calcul nécessaire, directement lié au nombre d’opérations
élémentaires qu’eectué l’algorithme.
La quantité d’occupation mémoire nécessaire.
Le premier principe s’appelle la terminaison de l’algorithme, le deuxième sa
correction et le dernier sa complexi. Nous donnons ces principes comme des critères
de qualités d’un bon algorithme.
CHAPITRE 1. THÉORIE DE LA COMPLEXITÉ ET MESURE DE PERFORMANCE
5
Pour décrire un algorithme, on lui donne en général un nom, on précise quels sont les
paramètres qu’il peut prendre en entrée et le résultat qu’il est sensé renvoyer. On Utilise
des spécification de l’algorithme (des modifications de la mémoire).
Si ces opérations s’exécutent en quence, on parle d’algorithme séquentiel. Si les
opérations s’exécutent sur plusieurs processeurs en parallèle, on parle d’algorithme
parallèle. Un algorithme est donc un moyen de calculer une solution au problème posé,
le calcul étant décomposé en un nombre fini d’instructions et devant être exécutable en
un temps fini, quelle que soit la donnée en entrée.
On décrit un algorithme souvent à l’aide d’un pseudo-langage naturel très simplifié, à
la fois lisible et formel. Les données, sultats, et variables intermédiaires sont
clairement déclas, chaque calcul est précisé de façon complète.
Définition 1. Un invariant de boucle est une propriété dépendant des variables de
l’algorithme, qui est vérifiée à chaque passage dans la boucle.
En fin, l’algorithme est traduit sous forme d’un langage de programmation adapté. Il
est clair que les ordinateurs ne savent faire que des opérations extrêmement
élémentaires : accès mémoire et arithmétique essentiellement. C’est donc le travail de
l’informaticien d’écrire une solution à un problème complexe sous forme d’une suite
d’instructions élémentaires.
Terminaison
Pour montrer qu’un algorithme termine quel que soit le paramètre passé en entrée
respectant la spécification, il faut montrer que chaque bloc élémentaire décrit ci-dessus
termine, les boucles pour (for) et les instructions conditionnelles terminent forcément.
Le seul souci pourrait venir d’une boucle tantque (while).
Un algorithme comporte :
- Une partie temporelle : quence d’instructions en principe savamment organisée,
- Une partie spatiale : ensemble de données plus ou moins structurées (nombres,
vecteurs, matrices, listes...).
Problème : donnée l’algorithme fournir (nombre fini d’étapes)→ réponse
programme doit finir par s’arrêter
Formellement
Un problème abstrait = l’ensemble < E, A, S >
E est une entrée (un des cas du problème),
A l’algorithme,
S la sortie (résultat ).
Un algorithme = < C entraînent → I >,
C : clauses (règles)
CHAPITRE 1. THÉORIE DE LA COMPLEXITÉ ET MESURE DE PERFORMANCE
6
I : instructions (traitements).
Ces règles forment une partition de l’univers:
- U des règles = tous les cas possibles.
-
L’algorithme ne doit pas oublier un cas, et on ne peut pas être dans deux cas à la fois.
Exemple 1 : trouver le maximum d’un tableau T
A. Façon abstraite d’un algorithme
Une fois qu’on a compris ce qu’on vient de faire, on peut l’abstraire :
- On considère le premier élément du tableau comme maximum,
- Si on trouve un élément plus grand que lui, c’est notre nouveau maximum
- Une fois que nous avons tout parcouru, nous renvoyons notre dernier maximum :
rien trouvé de plus grand
B. Les règles trouvées
- Max(T, n, i, max) = Max(T, |T|, 2, T[1]))}
- i ≤ n ^ T[i] > max → Max(T, n, i, max) = Max(T, n, i+1, T[i])
- Si je n’ai pas parcouru tout le tableau et que l’élément actuel est supérieur au max,
c’est le nouveau max.
- i ≤ n ^ T[i] ≤ max → Max(T, n, i, max) = Max(T, n, i+1, max)
- Si mon élément actuel n’est pas supérieur au max, alors je continue simplement de
parcourir.
- i > n → Max(T, n, i, max) = max Si j’ai parcouru tout le tableau, je renvoie le max.
C. Ces règles forment une partition de l’univers
- L’union de ces règles, donne tous les cas possible :
(i > n) (i ≤ n ^ T[i] > max) (i ≤ n ^ T[i] ≤ max) = {i, T[i]}
- L’intersection des règles deux à deux, donne l’ensemble vide :
(i n ^ T[i] > max) (i n ^ T[i] max) = {}, l’élément ne peut pas être à la fois plus
petit et plus grand.
- (i > n) (i n ^ T[i] max) = {}, on ne peut pas être à la fois dans le tableau et hors du
tableau.
Donc l’algorithme ne peut pas être dans deux cas à la fois.
1.1. Quelques problèmes algorithmiques classiques
Le problème de tri d’un ensemble d’éments selon une relation d’ordre (croissant ou
décroissant), avec un milliard d’éléments.
Le problème de la Recherche pertinente dans des grandes bases de données.
CHAPITRE 1. THÉORIE DE LA COMPLEXITÉ ET MESURE DE PERFORMANCE
7
Réalisation d’une Optimisation multi objectifs, trouver une combinaison des
meilleurs critères qui minimisent une fonction coût (temps de calcul et espace
mémoire).
1.2. Qualités d’un bon algorithme
Correct: Il faut que le programme exécute correctement les tâches pour lesquelles
il a été conçu.
Complet: Il faut que le programme considère tous les cas possibles et donne un
résultat dans chaque cas..
Efficace: Il faut que le programme exécute sa tâche avec efficacité c’est à dire avec
un coût minimal. Le coût pour un ordinateur se mesure en termes de temps de
calcul et d’espace mémoire nécessaire.
Pour chaque problème, nous trouvons des différentes variantes définis le corps de
l’algorithme. Ceci nous conduit à la nécessité d’estimer le coût d’un algorithme avant de
l’écrire et l’implémenter.
2. Analyse et notions de complexité
L'analyse d'algorithmes permet de donner un outil d'aide à la comparaison des
performances des algorithmes. Le mot complexité (latin : complexus enlacé, embrassé
signifiant un objet constitué de plusieurs éléments ou plusieurs parties).
Cet outil permet de mesurer les ressources critiques (coûteuses) utilisées par les
algorithmes.
Les ressources coûteuses :
- Le temps d'exécution
- Programmation
- La mémoire
- Les processeurs
- Les messages
- Les implémentations matérielles d'un algorithme
- La surface du circuit ou le nombre de portes logiques
- L'énergie consommée
- Les radiations émises.
La conception de certains ordinateurs mobiles permet de présenter le problème suivant :
Probme : l'énergie pour la conception de certains ordinateurs mobiles (la
consommation électrique) induite par l'émission réception.
1 / 16 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !