Title: Efficacit
1Efficacité des algorithmes
- Comment choisir parmi les différentes approches
pour résoudre un problème? - Exemple Liste chaînée ou tableau?
- 2 objectifs à atteindre
- Concevoir un algorithme facile à comprendre,
coder et déboguer. - Concevoir un algorithme qui utilise de façon
efficace les ressources de lordinateur.
2Efficacité des algorithmes(suite)
- Objectif (1) concerne le génie logiciel
- Objectif (2) Algorithmes et structures de
données. - Lorsque lobjectif (2) est important, comment
peut-on mesurer lefficacité dun algorithme?
3Comment mesurer lefficacité?
- Comparaison empirique (exécuter le programme)
- Analyse assymptotique dalgorithmes
- Ressources critiques temps, espace mémoire,...
- Facteurs affectant le temps dexécution
- machine, language, programmeur, compilateur,
algorithme et structure de données. - En général, le temps dexécution dépend de la
longueur de lentrée. - Ce temps est une fonction T(n) où n est la
longueur de lentrée.
4Exemples
- Exemple 1.
- // Retourne lindice du plus grand élément
- int PlusGrand(int T, int n)
- int max 0
- for (int i1 iltn i)
- if (Tmax lt Ti)
- max i
- return max
-
5Exemples (suite)
- Exemple 2 x3
- Exemple 3
- sum 0
- for (i1 iltn i)
- for (j1 jltn j)
- sum
6Meilleur algorithme ou ordinateur?
On suppose que lordinateur utilisé peut
effectuer 106 opérations à la seconde
7Taux de croissance
8Analyse assymptotique Grand O
- Définition T(n) est dans O(f(n)) sil existe
deux constantes positives c et n0 t.q. - T(n) ? cf(n) pour tout n gt n0.
- Utilité Simplifie l'analyse
- Signification Pour toutes les grandes entrées
(i.e., n?n0), on est assuré que lalgorithme ne
prend pas plus de cf(n) étapes. - ? Borne supérieure.
9Notation grand-O (suite)
- La notation grand-O indique une borne supérieure
sur le temps dexécution. - Exemple Si T(n) 3n2 2
- alors T(n) ? O(n2).
- On désire le plus de précision possible
- Bien que T(n) 3n2 2 ? O(n3),
- on préfère O(n2).
10Grand-O Exemples
- Exemple 1 Initialiser un tableau dentiers
- for (int i0 iltn i) Tabi0
- Il y a n itérations
- Chaque itération nécessite un temps ? c,
- où c est une constante.
- Le temps est donc T(n) ? cn
- Donc T(n) ? O(n)
11Grand-O Exemples
- Exemple 2 T(n) c2n2 c1n c0 .
- c2n2 c1n c0 ? c2n2 c1n2 c0n2
- (c2 c1 c0)n2
- pour tout n ? 1.
- T(n) ? cn2 où c c2 c1 c0
- Donc, T(n) est dans O(n2).
12Grand-O Exemples
- Exemple 3
- Lorsque T(n) c, où c est une constante,
- on écrit T(n) ? O(1).
13Grand-Omega
- Definition On a T(n) ? ?(g(n)) s'il existe deux
constantes positives c et n0 telles que T(n) ?
cg(n) pour tout n gt n0. - Signification Pour de grandes entrées,
lexécution de lalgorithme nécessite au moins
cg(n) étapes. - ? Borne inférieure.
14Grand-Omega Exemple
- T(n) 3n2 2n 5
- 3n2 2n 5 ? 3n2 pour tout n gt 0.
- T(n) ? cn2 pour c 3 et ngt0.
- Donc, T(n) ? ?(n2) par la définition.
15La notation Theta
- Lorsque le grand-O et le grand-omega dune
fonction coïncident, on utilise alors la notation
grand-theta. - Définition Le temps dexécution dun algorithme
est dans ?(h(n)) sil est à la fois dans O(h(n))
et dans ?(h(n)).
16Exemple
?(n) ?(n2) ?(n3) ?(2n) ?(lg n)
?(lg n) ? ?(n) ? ?(n2) ? ?(n3) ? ?(2n)
17Pire cas, meilleur cas et cas moyen
- Toutes les entrées dune longueur donnée ne
nécessitent pas le même temps dexécution. - Exemple Recherche séquentielle dans un tableau
de taille n - Commencer au début du tableau et considérer
chaque élément jusquà ce que lélément cherché
soit trouvé. - Meilleur cas ?(1)
- Pire cas ?(n)
- Cas moyen ?(n)
18(No Transcript)
19Une erreur fréquente
- Le meilleur cas pour mon algorithme est n1 car
cest le plus rapide. FAUX! - On utilise la notation grand-O parce quon
sintéresse au comportement de lalgorithme
lorsque n augmente. - Meilleur cas on considère toutes les entrées de
longueur n.
20Règles de simplification 1
- Si
- f(n)? O(g(n))
- et
- g(n) ? O(h(n)),
- alors
- f(n) ? O(h(n)).
21Règles de simplification 2
- Si
- f(n) ? O(kg(n))
- où k gt0 est une constante
- alors
- f(n) ? O(g(n)).
22Règles de simplification 3
- Si
- f1(n) ? O(g1(n))
- et
- f2(n) ? O(g2(n)),
- alors
- f1(n) f2(n) ? O(max(g1(n), g2(n))).
- Exemple n nlog n ? O(nlog n)
23Règles de simplification 4
- Si
- f1(n) ? O(g1(n))
- et
- f2(n) ? O(g2(n))
- alors
- f1(n)f2(n) ? O(g1(n) g2(n))
- Exemple (3n2 3)(n25nlog n) ? O(n4)
24Règles de simplification 5
- Si p(n) est un polynôme de degré k
- alors p(n) ? ?(nk)
25Règles de simplification 6
- logk n ? O(n?)
- pour toutes constantes kgt0 et ?gt0
26Exemples
- Exemple 1 a b
- Temps constant ?(1).
- Exemple 2
- somme 0
- for (i1 iltn i)
- somme n
- Temps ?(n)
27Exemples
- Exemple 3
- somme 0
- for (i1 iltn i)
- for (j1 jlti j)
- somme
- Temps ?(1) O(n2) O(n2)
- On peut montrer ?(n2)
28Exemples
- Exemple 4
- somme 0
- for (j1 jltn j)
- for (i1 iltn i)
- somme
- for (k0 kltn k)
- Ak k
- Temps ?(1) ?(n2) ?(n) ?(n2)
29Exemples
- Example 5
- somme 0
- for (k1 kltn k2)
- for (j1 jltn j)
- somme
- Temps ?(nlog n)
30Recherche dychotomique
- // Retourne la position de lélément K
- // dans un tableau trié de taille n
- int dycho(int tab, int n, int K)
- int l 0
- int r n-1
- while (l lt r)
- int m (lr)/2
- if (tabm lt K) lm1
- else if (tabm gt K) rm-1
- else return m
-
- return n // K n'est pas dans tab
31Recherche dychotomique
- Combien déléments sont examinés dans le pire cas?
32Autres exemples
- Instruction if maximum entre le if et le then
- switch maximum entre les différents cas
- Appels de fonction Temps dexécution de la
fonction
33Analyse de problèmes
- Borne supérieure Borne supérieur sur le meilleur
algorithme connu. - Borne inférieure Borne inférieure sur tous les
algorithmes possibles. - Exemple Trier un tableau de taille n nécessite
O(n) étapes et peut se faire en O(nlog n) étapes.
34Espace mémoire
- La quantité despace mémoire utilisé peut aussi
être étudiée à laide de lanalyse assymptotique. - En général
- Temps Algorithme manipulant les
structures de données. - Espace Structure de données
35Le principe du compromis espace/temps
- Il est souvent possible de réduire le temps
dexécution au prix daugmenter lespace mémoire
et vice versa. - Fichiers compressés
- Table des valeurs dune fonctions
- Espace disque Un programme sera dautant plus
rapide quil requiert peu daccès disque.