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 g≤cf(n) pour tout n> n0.
EXEMPLE : T(n) = 9n2∈O(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))
où
k
> 0 une constante
où
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%