La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Information, Communication, Calcul

Présentations similaires


Présentation au sujet: "Information, Communication, Calcul"— Transcription de la présentation:

1 Information, Communication, Calcul
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne fait partie du cours d’introduction à l’information, à la communication, et au calcul. Il est le 6e de 7 videoclips portant sur les notions de calcul et d’information. Information, Communication, Calcul Module 1: Calcul & Information – Leçon 1: Algorithmes – Clip 6: Complexité R. Guerraoui, J. Sam, J-C. Chappelier, R. Boulic, commentaire: P. Janson

2 Plan de la leçon Qu’est-ce qu’un algorithme?
Quelles structures existent pour contrôler un algorithme? Quelques grandes familles d’algorithms Recherche Exemple: recherche par dichotomie Comment quantifier et exprimer la complexité d’un algorithme Tri Plus court chemin Plus spécifiquement il effleure le thème de la mesure et de la représentation de la complexité d’un algorithme.

3 Complexité: la notation O(…)
Pour comparer des algorithmes selon leur complexité on doit comparer leur comportement sur des données de grande taille A cet effet on s’intéresse aux ordres de grandeur asymptotiques de la complexité Ces ordres de grandeur sont conventionnellement exprimés selon la notation de Landau O(…) Pour deux fonctions f et g de R dans R, on écrit : f ∈ O(g) si et seulement si ∃x0, c>0 : ∀x>x0 |f(x)| ≤ c・|g(x)| Dans ce cas on dit que f est de l’ordre O de g Pour comparer des algorithmes selon leur complexité on doit comparer leur comportement sur des données de grande taille. En effet des algorithmes ne sont intéressants que pour traiter des données volumineuses et leurs complexités respectives se distinguent surtout lors du traitement de grands volumes de données. - On s’intéresse donc aux ordres de grandeur asymptotiques de la complexité. Ces ordres de grandeur asymptotiques sont conventionnellement exprimés en utilisant la notation de Landau O(qqch) qui veut dire de l’ordre de (qqch). Pour deux fonctions f et g de R dans R, on écrit que f «∈» O(g) si et seulement si il existe une valeur x0 et une constante c positive telles que pour tout x supérieur à x0 la grandeur absolue de f(x) est toujours inférieure ou égale à cette constante fois la grandeur absolue de g(x). On lit une telle expression en disant que f est de l’ordre de g.

4 Exemples de notation O(…)
f (x) = x x + log x x F(x) x2 100 x Log x 1000 valeur % Pour bien mesurer le sens asymptotique de cette notation, prenons un exemple. - Considérons la fonction f (x) = x x + log x … … et voyons comment elle évolue en fonction de la valeur de x. Prenons par exemple des valeurs de x variant de 1 à 10’000. 1000, le 4e terme de la fonction est évidemment constant … Le 3e terme log x varie évidemment de 0 pour x=1 à 4 pour x=10’000. Le 2e terme, 100 x, varie clairement de 100 à 1 million quand x varie de 1 à 10’000. Enfin le 1er terme, x2, varie de 1 à 100 millions pour x variant de 1 à 10’000. On peut donc aisément calculer que la fonction f(x) varie de 1’101 à 101’001’004. Mais voyons à présent le poids relatif que représentent dans ces valeurs les différents termes de la fonction, en commençant par le dernier. La constante 1000 représente un pourcentage décroissant de la valeur totale de f(x). Le pourcentage du terme log x dans la valeur de f(x) reste, lui, toujours nul ou négligeable. Le poids relatif du terme 100 x dans f(x) commence par croître jusqu’à atteindre celui du 4e terme puis celui de 1er terme avant de décroître rapidement au point de venir lui aussi négligeable. Asymptotiquement parlant c’est en effet le poids relatif du 1er terme, x2, qui domine la valeur de f(x). On peut donc dire que f(x) est d’ordre O(x2) vu qu’il existe une valeur x0=10’000 et une constante c=2 par exemple telles que pour tout x supérieur à 10’000 la valeur de f(x) ne dépasse plus jamais 2 fois la valeur de x2. 1 10 100 1’000 10’000 1’101 2’101 21’002 1’101’003 101’001’004 1 102 104 106 108 0.1 4.8 47.6 90.8 99.0 102 103 104 105 106 9.1 47.6 1.0 1 2 3 4 1000 90.82 47.6 4.8 0.1 0.0

5 Vision graphique d’un exemple O(…)
f (x) = x x + log x Complexité Taille x des données traitées L’alignement asymptotique de f(x) sur la valeur dominante de x2 est en effet flagrant sur ce graphique donnant l’évolution des différents termes et de f(x) en fonction de x.

6 Comparaison d’algorithmes en complexité
On exprime la complexité d’un algorithme par le plus petit des O(…) possibles Exemple: la fonction f(n) = n est évidemment O(n2) mais aussi O(n) la fonction f(n) = 12 est évidemment O(n2) mais aussi O(n) et surtout O(1) Différentes classes de complexité permettent alors de caractériser des algorithmes en fonction de la taille des données traitées Complexité fixe O(1) = constante quelle que soit la taille des données traitées Complexité logarithmique O(log n) Complexité linéaire O(n) Complexité quasi-linéaire O(n log(n)) Complexité polynomiale O(n2), ... O(nk ) Complexité exponentielle O(2n) Voir à ce sujet l’excellent vidéoclip - Pour mesurer la complexité et donc l’efficacité d’un algorithme on l’exprime par le plus petit des ordres de grandeur qui le caractérise. Par exemple la fonction f(n)=n est évidemment d’ordre O(n2) mais O(n2) n’est pas le plus petit ordre qui la caractérise. Le plus petit est O(n). De la même façon, la fonction f(n)=12 est évidemment d’ordre O(n2) mais ni O(n2) ni même O(n) ne sont pas le plus petit ordre qui la caractérise. Le plus petit est O(1) puisque la fonction ne contient même pas de variable n. O(1), O(n), O(n2) définissent ainsi autant de classes de fonctions de complexité différentes. O(1) inclut toutes les fonctions de complexité asymptotique fixe, constante. O(log n) définit une classe de fonctions en fait plus efficaces que O(n) qui inclut toutes les fonctions présentant une complexité logarithmique en fonction de la taille n des données traitées. O(n) inclut toutes les fonctions de complexité linéaire en n. O(n log n) inclut toutes les fonctions de complexité dite quasi-linéaire O(n2) ou en général O(nk), où k est une constante, inclut toutes les fonctions de complexité polynomiale. Enfin O(2n) inclut toutes les fonctions de complexité exponentielle. Sur ce thème nous vous recommandons vivement le videoclip renseigné ici.

7 Comparaison graphique d’algorithmes en complexité
Taille x des données traitées Le présent graphique illustre la complexité asymptotique de quelques fonctions simples, log x, x, 2x, et x3.

8 Exemple concret Si la police devrait contrôler les papiers de tous les N habitants de Lausanne, cela causerait une file de 175 km de Lausanne presque jusque Zürich ! Si elle ne devait au hasard que log2 des N habitants … … cela ne ferait plus que 18 De telles différences de complexité et donc d’efficacité sont essentielles en pratique. - Si une règle imposait à la police de contrôler tous les N habitants de Lausanne cela causerait une file de 175 km, pratiquement ininterrompue de Lausanne presque jusque Zürich ! Si par contre une règle n’imposait de contrôler que log2 des N habitants, il n’y aurait plus que 18 personnes à contrôler!

9 Rétrospective sur la complexité d’une recherche
Si l’espace de recherche n’est pas ordonné Recherche exhaustive comparant élément après élément Complexité linéaire O(n), où n est la taille de la liste Par contre si l’espace de recherche est une liste ordonnée Recherche possible par dichotomie Complexité logarithmique O(log n) => Importance de la modélisation des données Si l’espace de recherche est une liste pré-triée solution moins complexe en temps Mais alors quelle est la complexité et donc le coût du pré-triage ?... C’est le sujet du vidéoclip suivant ! Notez cependant que ce coût / cette complexité du tri peuvent être amortis sur plusieurs recherches Pour en revenir à la complexité relative des algorithme de recherche décrits dans le vidéoclip précédent, - Si l’ensemble de données dans lequel on recherche un élément spécifique n’est pas ordonné, il est nécessaire de procéder à une recherche exhaustive comparant chacun des N éléments de l’ensemble à celui recherché. La complexité résultante est donc au mieux linéaire d’ordre O(N). Par contre si l’espace de recherche est une liste ordonnée une recherche est possible par dichotomie et dans ce cas la complexité n’est que logarithmique d’ordre O(log N) La modélisation des données traitées est donc d’une importance capitale. Si l’espace de recherche peut être pré-trié en une liste il existe une solution beaucoup moins complexe et donc moins coûteuse en temps. Mais alors se pose immédiatement la question de la complexité et du coût du pré-triage ?... C’est tout le sujet du vidéoclip suivant ! Notez cependant en passant que le coût ou la complexité d’un tel tri peut être amorti sur un grand nombre de recherches ultérieures.


Télécharger ppt "Information, Communication, Calcul"

Présentations similaires


Annonces Google