04/11/2008
1
Algorithmes et
structures de données
(avancées)
Cours 7
Patrick Reuter
http://www.labri.fr/~preuter/asd2008
Déroulement
CM mardi de 8h à 9h (salle 33)
•TD
- Groupe 1 : mardi, 13h30 – 15h00 (salle 51D)
- Groupe 2 : mardi, 15h15 – 16h45 (salle 51D)
(en alternance: salle TD et salle machine)
(rendre la feuille à la prochaine séance)
•TP 4
• Complexité
• Fonctions
Complexité
Exigences à un programme
• Lisibilité
• Extensibilité
• Portabilité
• Réutilisable
• Fiabilité
Efficacité (faible complexité)
Complexité
Quel est le temps d’éxécution du programme?
ÆComplexité temporelle
De combien de mémoire le programme a-t-il besoin?
ÆComplexité de mémoire (ou Complexité spatiale)
Comment déterminer ces complexités ?
Æméthode empirique
Æméthode mathématique
Complexité
Méthode mathématique
Théorie de la complexité
– Temporelle
– Spatiale
Basée sur une machine abstraite
Random-access memory (RAM)
Instructions de base (affectation, boucle, appel de
fonctions …)
longueur des données d’entrée n
Ce temps est une fonction T(n) où nest la
longueur des données d’entrée.
04/11/2008
2
Complexité : T(n) – Exemple 1
•Calculer
somme =0;
i=1;
TANT QUE i <= n FAIRE
DEBUT
somme = somme + i;
i=i+1;
FIN
Affectations : 2 +2*n
Comparaisons : n+1
ÆT(n) = 3n+3
Théorie de la complexité –
Changement de la fonction
2ème solution
changer la fonction
•T
1(n) = log2n
logarithmique
•T
2(n) = n
linéaire
•T
3(n) = n log2n
Quasi-linéaire
•T
4(n) = n2
quadratique
•T
5(n) = n3
cubique
•T
6(n) = 2n
exponentiel
Théorie de la complexité
Classes de Grand-O
O(1) complexité constante
O(log n) complexité logarithmique
O(n) complexité linéaire
O(n log n) complexité quasi-linéaire
•O(n
a) complexité polynomiale
–O(n
2) complexité quadratique
–O(n
3) complexité cubique
•O(a
n) complexité exponentielle
O(log n) O(n) O(n log n) O(n2) O(n3) O(2n)
Théorie de la complexité
Notation Grand-O
Exemple : (Exemple de T(n) = 3n+3)
Si
T(n) cn
pour une constante cet toutes les valeurs de n>n0, on dit
« T(n) est dans O(n) » ou bien
T(n) O(n) ou, par abus d’écriture,
T(n) = O(n)
Théorie de la complexité
En général :
O(f) = {g | c > 0 : n
0
> 0 : n n
0
: g(n) c f(n)}
0
0
Soit gune fonction non négative.
gest dans O(f) s’il existe deux constantes positives cet n0
tellesque gcf(n) pour tout n> n0.
EXEMPLE : T(n) = 9n2O(n2) f = n2, g = 9n2
Retour sur TP (1)
04/11/2008
3
Question : est-ce qu'il faut inclure le tri dans
le chronométrage ?
--> en info, nous traitons souvent les données
en un préprocès, et après on en profite ….
3 courbes
O(n) recherche linéaire
O(log n) recherche dichotomique
O(n log n) tri
Théorie de la complexité –
Changement de la fonction
2ème solution
changer la fonction
•T
1(n) = log2n
logarithmique
•T
2(n) = n
linéaire
•T
3(n) = n log2n
Quasi-linéaire
•T
4(n) = n2
quadratique
•T
5(n) = n3
cubique
•T
6(n) = 2n
exponentiel
Algorithme A1 en O(n)
A2 : Exécuter 4 fois l’algorithme A1
Quel est sa complexité ?
Elimination des constantes
Si
T(n) O(kf(n))
k
> 0 une constante
k
>
0
,
une
constante
alors
T(n) O(f(n)).
Les constantes sont ignorées!
Algorithme A1 en O(n)
A3 : Exécuter 4n2fois l’algorithme A1
Quel est sa complexité ?
04/11/2008
4
Règle des produits
Si
T1(n) O(f(n))
et
T2(n) O(g(n))
alors
T1(n)T2(n) = O(f(n) g(n))
Algorithme A1 en O(n)
Algorithme A2 en O(n2)
A4: Exécution successive de A1 et A2
Quel est sa complexité ?
Règle des sommes
Si
T1(n) O(f(n))
et
T2(n) O(g(n)),
alors
T1(n) + T2(n) O(max(f(n), g(n)))
Transitivité
Si
f(n) O(g(n))
et
g(
n
)
O
(
h
(
n
,
g(
)
((
alors
f(n) O(h(n)).
La notation Grand-O est transitive
Algorithme A1 avec T1(n) = log2n
Algorithme A2 avec T2(n) = log10n
Quelle algorithme a la meilleure
complexité asymptotique ?
La base du logarithme
logbn
logan = _____
logba
04/11/2008
5
La base du logarithme
logbn
logan = _____
logba
< == >
logbn = logba * logan
La base du logarithme
logbn
logan = _____
logba
< == >
logbn = logba * logan = c * logan
La base du logarithme
logbn
logan = _____
logba
< == >
logbn= log
ba * logan = c * logan
Avec c = logba
(ne dépend pas de n)
Æc peut être considéré
comme une constante
Fonctions
Déclaration de fonctions
Appel de fonction : Passage de paramètres
Appel par valeur
Al éfé
A
ppe
l
par r
éfé
rence
Ne pas confondre : afficher et retourner
(return !)
1 / 8 100%