Title: Les algorithmes: complexit et notation asymptotique
1Les algorithmes complexité et notation
asymptotique
2Analyse d'algorithmes
- Notation O( )
- Comparer deux algorithmes
- Soient deux algorithmes A1 et A2
- Base de comparaison
- Mesure indépendante de l'implémentation TAILLE
D'UN PROBLÈME (n) - Temps d'exécution d'un algorithme
fonction(taille du problème) i.e. f(n) - Exemples
- Taille d'une liste (recherche d'un élément dans
une liste) - Nombre de nuds d'un arbre (impression d'un
arbre) - Taille d'un tableau (tri)
3Analyse d'algorithmes
4Analyse d'algorithmes
5Analyse d'algorithmes
- Notation O( )
- Exemple évaluer le temps d exécution
dalgorithme suivant -
Boucle externe
void TriSelection(int tabMAXTAB, int n) int
PositionMin, temp,i,j for (i n-1 i gt 0
i--) PositionMin i for (j 0 j
lt i j) if (tabj lt
tabPositionMin) PositionMin j
temp tabi tabi
tabPositionMin tabPositionMin
temp
Boucle interne
6Analyse d'algorithmes
- Notation O( )
- Exemple (suite)
-
Boucle externe
for (i n-1 igt0 i--) Coût b1 /
PositionMin i / Coût ia / pour exécuter
la boucle interne/ Coût b2 / pour l'échange
de tabi et tabPositionMin /
7Analyse d'algorithmes
- Notation O( )
- Exemple (suite)
-
bb1 b2 n-1 S ? (ai b) i1
(n-1)n S a (n-1)b
2 a a S n2
(b )n - b 2 2
8Analyse d'algorithmes
- Notation O( )
- Définition du O( )
- Nous dirons que f(n) est O(g(n)) s'il existe deux
constantes positives K et n0 tel que f(n) lt K
g(n) pour tout ngtn0 - Conclusion
- Évaluer le coût d'un algorithme Rechercher la
fonction g(n) qui est la plus proche au dessus ou
égale a f(n) -
9Analyse d'algorithmes
- La recherche séquentielle
- Données pas triées
- recherche(3) 1 comparaison
- recherche(10) 11 comparaisons
- recherche(12) 7 comparaisons
- recherche(13) 11 comparaisons
- meilleur cas O(1)
- pire cas O(n)
- en moyenne O(n/2)
- absences O(n)
10Analyse d'algorithmes
- La recherche séquentielle
- Données triées
- recherche(1) 1 comparaison
- recherche(14) 11 comparaisons
- recherche(8) 6 comparaisons
- recherche(13) 11 comparaisons
- meilleur cas O(1)
- pire cas O(n)
- en moyenne O(n/2)
- absences O(n/2)
11(No Transcript)
12(No Transcript)
13Analyse d'algorithmes
- La recherche binaire
- implantation en tableau accès direct Ã
nimporte quel élément - en regardant tout de suite au milieu, on peut
éliminer la moitié des données
14Analyse d'algorithmes
1 2 3 4 6 8 9 10
11 12 14
11 n
9 10 11 12 14
5 n/2
9 10
2 n/4
1 n/8
10
15Analyse d'algorithmes
- Algorithme récursif
- récursion ?
- conditions darrêt ?
- convergence ?
1 2 3 4 6 8 9 10
11 12 14
16Analyse d'algorithmes
- Algorithme récursif - récursion
- X ? tabdebut..fin
- si x tabmilieu (condition darrêt)
- si x lt tabmilieu et x ? tabdebut..milieu-1
- si x gt tabmilieu et x ? tabmilieu1..fin
1 2 3 4 6 8 9 10
11 12 14
17Analyse d'algorithmes
- Algorithme récursif - conditions darrêt
- X tabdebut..fin si debut gt fin
- X ? tabdebut..fin si x tabmilieu
1 2 3 4 6 8 9 10
11 12 14
18Analyse d'algorithmes
- Algorithme récursif - convergence
1 2 3 4 6 8 9 10
11 12 14
9 10 11 12 14
9 10
10
19Analyse d'algorithmes
1 2 3 4 6 8 9 10
11 12 14
int rechercheBinRec(int tab , int val, int
debut, int fin) int milieu if (debut gt fin)
return -1 else milieu (debut fin)/2
if( val tabmilieu) return milieu
else if( val lt tabmilieu) return(rec
hercheBinRec(tab,val,debut, milieu-1)) else
return(rechercheBinRec(tab,val,milieu1,fin))
20Analyse d'algorithmes
- Algorithme récursif
- Recherche séquentielle (données triées)
- Données présentes O(n/2)
- Données absentes O(n/2)
- Recherche binaire (données triées)
- Données présentes O(log n)
- Données absentes O(log n)
21Analyse d'algorithmes
- Algorithme récursif
- Il vaut bien mieux implanter cet algorithme de
manière itérative, car - la fonction se rappelle jusqu'à trouver la
position désirée, puis seulement on effectue les
dépilages, alors que l'on n'a plus besoin des
états intermédiaires qui ont été mémorisés par la
récursivité puisque le problème est résolu.