Informatique

Disponible uniquement sur Etudier
  • Pages : 9 (2080 mots )
  • Téléchargement(s) : 0
  • Publié le : 30 mai 2010
Lire le document complet
Aperçu du document
Notion d'algorithme et de complexité Un bref apperçu du cours
1 Notion d’algorithme et d’espace mémoire L’objectif initial de l’informatique est de fournir des algorithmes permettant de résoudre un problème donné. • Algorithme : ensemble de règles opératoires dont l’application permet de résoudre le problème au moyen d’un nombre fini d’opérations → problème : temps d’exécution des traitements àminimiser • Espace mémoire : taille des données utilisées dans le traitement et la représentation du problème → problème : espace mémoire occupé à minimiser Les notions de traitements et d’espace mémoire sont liés. Ces deux critères doivent servir de guide au choix d'une représentation de donnée. 2 Approche intuitive de la complexité Exemple de problème: le voyageur de commerce. Ce voyageur doittrouver le chemin le plus court pour visiter tous ses clients, localisés chacun dans une ville différente, et en passant une et une seule fois par chaque ville. On peut imaginer un algorithme naïf : 1. on envisage tous les chemins possibles, 2. on calcule la longueur pour chacun d'eux, 3. on conserve celui donnant la plus petite longueur. Cette méthode « brutale » conduit à calculer un nombre dechemin «exponentiel» par rapport au nombre de villes. Il existe des algoritmes plus « fins » permettant de réduire le nombre de chemins à calculer et l’espace mémoire utilisé. Mais on ne connaît pas d'algorithme exact qui ait une complexité (temps de résolution) acceptable pour ce problème. Pour les problèmes qui sont aussi «difficile», on cherche des méthodes approchées, appelées heuristiques.

1 3 Complexité en temps (et mémoire) Si l’on souhaite comparer les performances d’algorithmes, on peut considérer une mesure basée sur leur temps d’exécution. Cette mesure est appelée la complexité en temps de l’algorithme. On utilise la notion dite « de Landau » qui traite de l’ordre de grandeur du nombre d’opérations effectuées par un algorithme donné. → on utilise la notation « O » qui donneune majoration de l’ordre de grandeur du nombre d’opérations. Pour déterminer cette majoration, il faut • connaître la taille n de la donnée en entrée du problème (ex. nombre de données à traiter, le degré d’un polynôme, taille d’un fichier, le codage d’un entier, le nombre de sommets d’un graphe, etc. ) • déterminer les opérations fondamentales qui interviennent dans ces algorithmes et qui sonttelles que les temps d'exécution seront directement proportionnels au nombre de ces opérations. Exemple : calculer la puissance n-ième d’un entier (n étant positif) en C : int puissance (int a, int n) { int i, x ; x=1 ; for (i = 0; i < n; i=i+1) x=x*a; return x ; } La complexité de cet algorithme est en temps linéaire O(n) Remarque 1 : les performances de la machine n’interviennent pas directementdans l’ordre de grandeur de la complexité.

// boucle de n iterations // opération fondamentale de multiplication

2

Remarque 2 : la théorie de la complexité a pour but de donner un contenu formel à la notion intuitive de difficulté de résolution d’un problème.

3

Type de complexité algorithmique On considère désormais un algorithme dont le temps maximal d’exécution pour une donnéede taille n en entrée est noté T(n). Chercher la complexité au pire – dans la situation la plus défavorable – c’est exactement exprimer T(n) en général en notation O. Par exemple : • T(n) = O(1), temps constant : temps d’exécution indépendant de la taille des données à traiter. • T(n) = O(log(n)), temps logarithmique : on rencontre généralement une telle complexité lorsque l’algorithme casse ungros problème en plusieurs petits, de sorte que la résolution d’un seul de ces problèmes conduit à la solution du problème initial. • T(n) = O(n), temps linéaire : cette complexité est généralement obtenue lorsqu’un travail en temps constant est effectué sur chaque donnée en entrée. • T(n) = O(n.log(n)) : l’algorithme scinde le problème en plusieurs sousproblèmes plus petits qui sont résolus de...
tracking img