Académique Documents
Professionnel Documents
Culture Documents
𝑛 σ 𝑥𝑦 − σ 𝑥 σ 𝑦
𝑏=
𝑛 σ 𝑥 2 − (σ 𝑥)2
σ𝑦 − 𝑏σ𝑥
𝑎=
𝑛
où n est le nombre de points de données, et ∑ désigne la somme sur
tous les points.
CALCUL DE LA COMPLEXITE
En appliquant cette formule aux données fournies, on obtient :
y=-0,0005+4,999*10-6x
Cette fonction est cohérente avec la complexité théorique de l’algorithme de
recherche dichotomique, qui est O(log2n). En effet, le coefficient b est
proche de (1/log210)≈3.322×10−6, ce qui signifie que le temps d’exécution
augmente proportionnellement au logarithme de la taille du tableau.
On peut donc en conclure que
log10 𝑁
𝑓 𝑁 = −0.0005 + log 2 𝑁 (𝑐𝑎𝑟 log 2 𝑁 = )
log10 2
COMPLEXITE AU PIRE ET AU MEILLEUR
La complexité au pire et au meilleur d’un algorithme est la complexité
en temps ou en espace de l’algorithme pour les cas les plus
défavorables ou les plus favorables du problème. La complexité au pire
et au meilleur permet de mesurer les limites inférieures et supérieures
de la performance d’un algorithme, c’est-à-dire le temps ou l’espace
minimal et maximal nécessaires pour résoudre le problème.
COMPLEXITE AU PIRE ET AU MEILLEUR
La complexité au pire d’un algorithme est la complexité en temps ou en
espace de l’algorithme pour les cas les plus difficiles du problème, c’est-
à-dire ceux qui nécessitent le plus de temps ou d’espace pour être
résolus. La complexité au pire permet de garantir que l’algorithme ne
dépassera pas une certaine limite de temps ou d’espace, quelles que
soient les données du problème. La complexité au pire est souvent
utilisée pour évaluer la fiabilité et la robustesse d’un algorithme, car
elle indique le comportement le plus mauvais de l’algorithme.
COMPLEXITE AU PIRE ET AU MEILLEUR
La complexité au meilleur d’un algorithme est la complexité en temps
ou en espace de l’algorithme pour les cas les plus faciles du problème,
c’est-à-dire ceux qui nécessitent le moins de temps ou d’espace pour
être résolus. La complexité au meilleur permet d’indiquer que
l’algorithme peut être très rapide ou très économe en mémoire, dans
certaines situations favorables. La complexité au meilleur est souvent
utilisée pour comparer des algorithmes qui ont la même complexité au
pire, mais qui peuvent avoir des comportements différents selon les
données du problème.
EXEMPLE DE COMPLEXITE – RECHERCHE SEQUENTIELLE
La recherche séquentielle est un algorithme qui permet de
chercher un élément dans un tableau non trié. Il consiste à
parcourir le tableau du début à la fin, et à comparer chaque
élément avec l’élément recherché. Si on trouve l’élément, on
arrête le parcours et on renvoie sa position. Sinon, on renvoie -1.
EXEMPLE DE COMPLEXITE – RECHERCHE SEQUENTIELLE
Algorithme RechercheSequentielle(T[1..N], x) Tant que i ≤ N et pos = -1 faire // on parcourt
Variables le tableau tant qu'on n'a pas trouvé x
Si T[i] = x alors // si on trouve x
i : entier // indice de parcours du tableau
pos ← i // on met à jour la position
pos : entier // position de x dans T
Fin si
Début i ← i + 1 // on passe à l'élément suivant
i ← 1 // on commence par le premier Fin tant que
élément Renvoyer pos // on renvoie la position de x
pos ← -1 // on initialise la position à -1 Fin
EXEMPLE DE COMPLEXITE – RECHERCHE SEQUENTIELLE
La complexité en temps de la recherche séquentielle dépend du nombre d’éléments
à examiner avant de trouver l’élément recherché, ou de constater qu’il n’est pas
dans le tableau.
Au pire cas, si l’élément n’est pas dans le tableau, ou s’il est le dernier élément du
tableau, il faut examiner tous les N éléments du tableau. La complexité en temps
est donc O(N) au pire cas.
Au meilleur cas, si l’élément est le premier élément du tableau, il suffit d’examiner
un seul élément. La complexité en temps est donc O(1) au meilleur cas.
En moyenne, si on suppose que l’élément recherché a la même probabilité d’être à
n’importe quelle position du tableau, il faut examiner N/2 éléments en moyenne. La
complexité en temps est donc O(N) en moyenne.
EXEMPLE DE COMPLEXITE – RECHERCHE SEQUENTIELLE
La complexité en espace de la recherche séquentielle est
constante, car l’algorithme n’utilise pas de mémoire
supplémentaire, à part deux variables i et pos. La complexité en
espace est donc O(1).
EXEMPLE DE COMPLEXITE – RECHERCHE DICHOTOMIQUE
La recherche dichotomique est un algorithme qui permet de
chercher un élément dans un tableau trié. Il utilise le principe du
diviser pour régner. Il consiste à comparer l’élément recherché
avec celui du milieu du tableau. Si c’est le même, on renvoie sa
position. Sinon, on réduit le tableau à la moitié qui contient
l’élément recherché, et on recommence le processus.
EXEMPLE DE COMPLEXITE – RECHERCHE DICHOTOMIQUE
La recherche dichotomique est un algorithme qui permet de
chercher un élément dans un tableau trié. Il utilise le principe du
diviser pour régner. Il consiste à comparer l’élément recherché
avec celui du milieu du tableau. Si c’est le même, on renvoie sa
position. Sinon, on réduit le tableau à la moitié qui contient
l’élément recherché, et on recommence le processus.
EXEMPLE DE COMPLEXITE – RECHERCHE DICHOTOMIQUE
Algorithme RechercheDichotomique(T[1..N], x) Tant que debut ≤ fin et pos = -1 faire // on Sinon // si x est plus grand que l'élément du
Variables répète le processus tant qu'on n'a pas milieu
debut : entier // indice de début du sous-tableau trouvé x ou que le sous-tableau est vide debut ← milieu + 1 // on réduit le sous-
fin : entier // indice de fin du sous-tableau milieu ← (debut + fin) div 2 // on calcule tableau à la partie droite
l'indice du milieu Fin si
milieu : entier // indice du milieu du sous-tableau
Si T[milieu] = x alors // si on trouve x Fin tant que
pos : entier // position de x dans T
pos ← milieu // on met à jour la Renvoyer pos // on renvoie la position de x
Début
position
debut ← 1 // on initialise le début à 1 Fin
Sinon si T[milieu] > x alors // si x est plus
fin ← N // on initialise la fin à N petit que l'élément du milieu
pos ← -1 // on initialise la position à -1 fin ← milieu - 1 // on réduit le sous-
tableau à la partie gauche
EXEMPLE DE COMPLEXITE – RECHERCHE DICHOTOMIQUE
La complexité en temps de la recherche dichotomique dépend du
nombre d’étapes nécessaires pour trouver l’élément recherché, ou
pour constater qu’il n’est pas dans le tableau. A chaque étape, on
divise le problème par deux, en réduisant le sous-tableau à la
moitié qui contient l’élément recherché. Au pire cas, si l’élément
n’est pas dans le tableau, ou s’il est à une extrémité du tableau, il
faut répéter le processus jusqu’à ce que le sous-tableau soit vide.
Le nombre d’étapes est donc égal au nombre de fois qu’on peut
diviser N par 2, avant d’obtenir 1. Ce nombre est égal à log N.
EXEMPLE DE COMPLEXITE – RECHERCHE DICHOTOMIQUE
La complexité en temps est donc O(log N) au pire cas.
Au meilleur cas, si l’élément est le milieu du tableau, il suffit d’une
seule étape. La complexité en temps est donc O(1) au meilleur cas.
En moyenne, si on suppose que l’élément recherché a la même
probabilité d’être à n’importe quelle position du tableau, le nombre
d’étapes est égal à la moyenne des nombres d’étapes pour chaque
position. Ce nombre est égal à log N. La complexité en temps est donc
O(log N) en moyenne.
EXEMPLE DE COMPLEXITE – RECHERCHE DICHOTOMIQUE
La complexité en espace de la recherche dichotomique est constante,
car l’algorithme n’utilise pas de mémoire supplémentaire, à part quatre
variables debut, fin, milieu et pos. La complexité en espace est donc
O(1).
EXEMPLE DE COMPLEXITE – TRI PAR SELECTION
Le tri par sélection est un algorithme qui consiste à chercher le plus
petit (ou le plus grand) élément du tableau, et à l’échanger avec le
premier (ou le dernier) élément. Puis, on répète le processus sur le
reste du tableau, jusqu’à ce qu’il soit trié.
EXEMPLE DE COMPLEXITE – TRI PAR SELECTION
Algorithme TriSelection(T[1..N]) Si T[j] < T[min] alors // si on trouve un élément plus petit que le
plus petit élément
Variables
min ← j // on met à jour le plus petit élément
i : entier // indice de la sélection Fin si
j : entier // indice de parcours du tableau Fin pour
min : entier // indice du plus petit élément Si min ≠ i alors // si le plus petit élément n'est pas le premier
élément du sous-tableau
tmp : entier // variable temporaire pour l'échange
tmp ← T[i] // on échange le premier élément et le plus petit
Début élément