Telechargé par Ange Dabié

algo, complexité, tris

publicité
Algorithmique: théorie, tris, complexité, en 2 heures.
Emily Clement
OOP - M1 Bio-Informatique
February 26, 2019
1 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Sommaire du cours
. C’est quoi l’algorithmique?
Définition et exemple d’algorithmes et de problèmes algorithmiques
Difficulté d’un problème algorithmique
. Complexité algorithmique
La complexité: définition
Calculer une complexité
Calculs pratiques et opérations
Exercices: séries d’exemples d’algorithmes
Cas des fonctions récursives
. Le problème du tris et ses algorithmes de résolution
Le problème du tris
Tris par insertion
Diviser pour régner et tris fusion
Complexité minimale d’un algorithme de tris
Complexité des algorithmes de tris classiques
2 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• C’est quoi un algorithme?
I
Ex: Algorithme de somme
Algorithme
1, 2, 3, 4, 5
15
Rentourner 1 + 2 + 3 + 4 + 5
3 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• C’est quoi un algorithme?
I
Ex: Algorithme de somme
Algorithme
1, 2, 3, 4, 5
15
Rentourner 1 + 2 + 3 + 4 + 5
I
Def: Algorithme
Méthode générale pour résoudre un problème
3 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• C’est quoi un algorithme?
I
Ex: Algorithme de somme
Algorithme
1, 2, 3, 4, 5
15
Rentourner 1 + 2 + 3 + 4 + 5
I
Def: Algorithme
Méthode générale pour résoudre un problème
I
"Def": Problème
• Entrée du problème
• Sortie du problème
3 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Exemple de problèmes
I
Sur des nombres
I
I
4 / 29
Entrée Sachant une suite de nombres n1 , , · · · , nN , trouver...
Quizz: Exemple du cours ?
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Exemple de problèmes
I
Sur des nombres
I
I
Entrée Sachant une suite de nombres n1 , , · · · , nN , trouver...
N
P
Sortie : la somme
ni
i=1
I
4 / 29
Quizz: Exemple du cours ?
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Exemple de problèmes
I
Sur des nombres
I
I
I
Entrée Sachant une suite de nombres n1 , , · · · , nN , trouver...
N
P
Sortie : la somme
ni
Sortie : le produit
i=1
N
Q
ni
i=1
I
4 / 29
Quizz: Exemple du cours ?
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Exemple de problèmes
I
Sur des nombres
I
I
I
Entrée Sachant une suite de nombres n1 , , · · · , nN , trouver...
N
P
Sortie : la somme
ni
Sortie : le produit
i=1
N
Q
ni
i=1
I
I
4 / 29
Sortie : une liste triée de n1 , · · · , nN
Quizz: Exemple du cours ?
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Exemple de problèmes
I
Sur des nombres
I
I
I
Entrée Sachant une suite de nombres n1 , , · · · , nN , trouver...
N
P
Sortie : la somme
ni
Sortie : le produit
i=1
N
Q
ni
i=1
I
4 / 29
Sortie : une liste triée de n1 , · · · , nN
I
Problème du plus court chemin
I
Quizz: Exemple du cours ?
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Réponse du quizz
I
Feuille 1: The next second
I
I
I
Feuille 1: Division euclidienne
I
I
5 / 29
Entrée :
Sortie :
Entrée :
Sortie :
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Réponse du quizz
I
Feuille 1: The next second
I
I
I
Feuille 1: Division euclidienne
I
I
5 / 29
Entrée : L’heure (h, m, s).
Sortie :
Entrée :
Sortie :
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Réponse du quizz
I
Feuille 1: The next second
I
I
I
Feuille 1: Division euclidienne
I
I
5 / 29
Entrée : L’heure (h, m, s).
Sortie : L’heure à la seconde suivante.
Entrée :
Sortie :
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Réponse du quizz
I
Feuille 1: The next second
I
I
I
Feuille 1: Division euclidienne
I
I
5 / 29
Entrée : L’heure (h, m, s).
Sortie : L’heure à la seconde suivante.
Entrée : Deux nombres a, b.
Sortie :
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Réponse du quizz
I
Feuille 1: The next second
I
I
I
Feuille 1: Division euclidienne
I
I
5 / 29
Entrée : L’heure (h, m, s).
Sortie : L’heure à la seconde suivante.
Entrée : Deux nombres a, b.
Sortie : Le reste r et le quotient q de la division euclidienne de a par b.
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Réponse du quizz
I
Feuille 1: The next second
I
I
I
Feuille 1: Division euclidienne
I
I
I
Entrée : Deux nombres a, b.
Sortie : Le reste r et le quotient q de la division euclidienne de a par b.
Exemples: Chez le docteur
I
I
5 / 29
Entrée : L’heure (h, m, s).
Sortie : L’heure à la seconde suivante.
Entrée : Un patient.
Sortie : Retourner Vrai si il est malade, Faux sinon.
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Réponse du quizz
I
Feuille 1: The next second
I
I
I
Feuille 1: Division euclidienne
I
I
I
I
Entrée : Un patient.
Sortie : Retourner Vrai si il est malade, Faux sinon.
Le problème de la plus courte sur-séquence commune (SSC)
I
I
I
5 / 29
Entrée : Deux nombres a, b.
Sortie : Le reste r et le quotient q de la division euclidienne de a par b.
Exemples: Chez le docteur
I
I
Entrée : L’heure (h, m, s).
Sortie : L’heure à la seconde suivante.
Entrée : une collection F de mots sur l’alphabet {A, C , G , T }.
Sortie : Un mot S de longueur minimale, telle que tout mot f de F soit un
facteur de S. i.e la plus courte sur-séquence commune de F .
Exemple: F = {CTA, ACT , AGT }, alors S =?.
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Réponse du quizz
I
Feuille 1: The next second
I
I
I
Feuille 1: Division euclidienne
I
I
I
I
Entrée : Un patient.
Sortie : Retourner Vrai si il est malade, Faux sinon.
Le problème de la plus courte sur-séquence commune (SSC)
I
I
I
5 / 29
Entrée : Deux nombres a, b.
Sortie : Le reste r et le quotient q de la division euclidienne de a par b.
Exemples: Chez le docteur
I
I
Entrée : L’heure (h, m, s).
Sortie : L’heure à la seconde suivante.
Entrée : une collection F de mots sur l’alphabet {A, C , G , T }.
Sortie : Un mot S de longueur minimale, telle que tout mot f de F soit un
facteur de S. i.e la plus courte sur-séquence commune de F .
Exemple: F = {CTA, ACT , AGT }, alors S = ACTAGT .
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Quelques définitions formelles
. Problème
. L’entrée d’un problème
Entrée
I
Une instance d’un problème est
une entrée satisfaisant les
contraintes imposées dans le
problème requise par le calcul
d’une solution.
I
Ex: Contraintes de type.
Sortie
Remarque: Il peut ne pas exister
d’algorithmes...
6 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Quelques définitions formelles
. Problème
. L’entrée d’un problème
Entrée
I
Une instance d’un problème est
une entrée satisfaisant les
contraintes imposées dans le
problème requise par le calcul
d’une solution.
I
Ex: Contraintes de type.
des algorithmes
Sortie
Remarque: Il peut ne pas exister
d’algorithmes...
6 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Quelques définitions formelles
. Problème
. L’entrée d’un problème
Entrée
I
Une instance d’un problème est
une entrée satisfaisant les
contraintes imposées dans le
problème requise par le calcul
d’une solution.
I
Ex: Contraintes de type.
des algorithmes
Sortie
Remarque: Il peut ne pas exister
d’algorithmes...
. Type de problèmes
6 / 29
. Algorithme correct
I
Sortie = Oui/Non. C’est un
problème de décision.
I
Sinon, c’est un problème
d’évaluation.
I
Ex: Malade/Pas Malade =/=
"Vous avez la nom de
maladie".
Emily Clement
I
Algorithme correct: Pour
chaque instance en entrée, il se
termine en produisant la bonne
sortie.
I
Sinon: Algorithme incorrect.
I
Ex: quizz!
Algorithmique: théorie, tris, complexité, en 2 heures.
• C’est quoi un problème difficile?
I
C’est parfois plus compliqué qu’on ne le pensait...
xkcd about algorithms
1
7 / 29
Alan turing, 1936
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• C’est quoi un problème difficile?
I
C’est parfois plus compliqué qu’on ne le pensait...
xkcd about algorithms
I
Décidabilité algorithmique
I
I
1
7 / 29
Un problème de décision est dit décidable s’il existe un algorithme correct
pour ce problème, qui se termine en un nombre fini d’étapes.
Si il n’en existe pas, le problème est dit indécidable.
Alan turing, 1936
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• C’est quoi un problème difficile?
I
C’est parfois plus compliqué qu’on ne le pensait...
xkcd about algorithms
I
Décidabilité algorithmique
I
I
I
Un problème de décision est dit décidable s’il existe un algorithme correct
pour ce problème, qui se termine en un nombre fini d’étapes.
Si il n’en existe pas, le problème est dit indécidable.
Problème de l’arrêt
I
I
Entrée : Un programme informatique pour un problème P, une entrée de P.
Sortie : Vrai si le programme termine, Non sinon.
Le problème de l’arrêt est indécidable1 .
1
7 / 29
Alan turing, 1936
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Pause
Pause!
8 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Complexité? C’est quoi?
. La théorie de la complexité
Espace mémoire
Consommation ?
Consommation ?
Temps
9 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Complexité? C’est quoi?
. La théorie de la complexité
Espace mémoire
Consommation ?
. Complexité (en temps) d’un
problème/algorithme
I
Quelle efficacité (en temps) a
mon algorithme?
I
On "compte" les opérations
effectuées.
I
Mon problème peut-il être
résolu en au plus/environ/au
moins X opérations?
Consommation ?
Temps
9 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Complexité? C’est quoi?
. La théorie de la complexité
Espace mémoire
Consommation ?
. Complexité (en temps) d’un
problème/algorithme
I
Quelle efficacité (en temps) a
mon algorithme?
I
On "compte" les opérations
effectuées.
I
Mon problème peut-il être
résolu en au plus/environ/au
moins X opérations?
. Mots-clés
Consommation ?
Temps
9 / 29
Emily Clement
Pire cas, Moyen cas, Nombre
d’opérations élémentaires
Algorithmique: théorie, tris, complexité, en 2 heures.
• Comment on calcule une complexité d’un algorithme?
. Analyser un algorithme
I
n : taille des données
I
Unité: nombres d’opérations
grandeur
élémentaires. On notera le coût
I T (n) = O (f (n)): Majoré
total T (n).
asymptotiquement à une cste
On va considérer le pire ou le
près.
moyen cas.
I
. Exemple: révision.
. Comparer: les ordres de
. Classe de complexité
Géométrie,
Analyse,
Probabilité,
Statistique
Géométrie,
Analyse
10 / 29
Probabilité,
Statistique
Analyse,
Statistique
Géométrie,
Analyse
Pire cas
Moyen cas
Meilleur cas
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Comment on calcule une complexité d’un algorithme?
. Analyser un algorithme
. Comparer: les ordres de
grandeur
I
n : taille des données
I
Unité: nombres d’opérations
élémentaires. On notera le coût
total T (n).
I
On va considérer le pire ou le
moyen cas.
I
T (n) = O (f (n)): Majoré
asymptotiquement à une cste
près.
. Classe de complexité
. Pire cas/Moyen cas.
10 / 29
I
Complexité dans le pire cas:
temps d’exécution le plus long
possible de l’algorithme.
I
Complexité dans le moyen cas:
Moyenne des complexités.
(Raffinements possibles, cf
Wikipédia)
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Opération pour calculer la complexité
. Séquences d’opérations: Somme
Op 1
Op 1
11 / 29
Coût T1 (n)
Coût T2 (n)
⇒ T (n) = T1 (n) + T2 (n)
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Opération pour calculer la complexité
. Séquences d’opérations: Somme
Op 1
Op 1
Coût T1 (n)
Coût T2 (n)
⇒ T (n) = T1 (n) + T2 (n)
. Embranchement (If): Maximum
Si (Condition) alors:
Op 1
Sinon:
Op 2
11 / 29
Coût T1 (n)




Coût T2 (n)



Emily Clement
⇒ T (n) = max [T1 (n) , T2 (n)]
Algorithmique: théorie, tris, complexité, en 2 heures.
Opération pour calculer la complexité
. Séquences d’opérations: Somme
Op 1
Op 1
Coût T1 (n)
Coût T2 (n)
⇒ T (n) = T1 (n) + T2 (n)
. Embranchement (If): Maximum
Si (Condition) alors:
Op 1
Sinon:
Op 2
Coût T1 (n)




Coût T2 (n)



⇒ T (n) = max [T1 (n) , T2 (n)]
. Boucle While: Somme
Tant que (Condition) faire:
Operation
11 / 29
Coût Ti (n)
⇒ T (n) = T1 (n) + · · · + TK (n)
I
Ti (n): cours de la i−ème itération de la boucle.
I
On doit déterminer K , le nombre d’opérations faite par la boucle while.
I
Même raisonnement pour les boucles For, sauf qu’on connaît K !
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Opération pour calculer la complexité (suite)
. Fonction récursive F (N)
Si (N > 1) faire:
F (N/2)
Operation
F (N/2)
12 / 29




Coût T (n/2)
⇒ T (n) = 2 · T (n/2) + C (n)
Coût C (n)



Coût T (n/2)
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Opération pour calculer la complexité (suite)
. Fonction récursive F (N)
Si (N > 1) faire:
F (N/2)
Operation
F (N/2)




Coût T (n/2)
⇒ T (n) = 2 · T (n/2) + C (n)
Coût C (n)



Coût T (n/2)
. Classes de complexité
12 / 29
O (1)
O (log n)
O (n)
O (n log
n)
O n2
O (P) , P ∈ R [X ]
Temps constant
Logarithmique
Temps linéaire
Temps quasi-linéaire
Temps quadratique
Temps polynomial
O (2n )
Exponentiel
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple : Conversion d’un entier en chaine de caractère
. TP - Jeu
Conversion d’un entier en chaine de caractère
1: procedure Conversion(n)
2:
int ← n
3:
Str ← String.valueOf(n)
4:
return Str
5: end procedure
13 / 29
Emily Clement
. Coût O (1)
. Coût O (log (n))
. Coût O (1)
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple : Conversion d’un entier en chaine de caractère
. TP - Jeu
Conversion d’un entier en chaine de caractère
1: procedure Conversion(n)
2:
int ← n
3:
Str ← String.valueOf(n)
4:
return Str
5: end procedure
. Coût O (1)
. Coût O (log (n))
. Coût O (1)
. Coût total
T (n) =?
13 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple : Conversion d’un entier en chaine de caractère
. TP - Jeu
Conversion d’un entier en chaine de caractère
1: procedure Conversion(n)
2:
int ← n
3:
Str ← String.valueOf(n)
4:
return Str
5: end procedure
. Coût O (1)
. Coût O (log (n))
. Coût O (1)
. Coût total
T (n) = O (1) + O (log (n)) + O (1) = O (log (n))
13 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple : Recherche dans une liste quelconque
. Recherche d’un élément dans une liste
Recherche d’un élément elt dans une liste L
1: procedure Recherche(elt, L, n)
2:
i ←0
3:
while i < n − 1 AND L [i] 6= elt do
4:
i ←i +1
5:
end while
6:
return L [i] elt
7: end procedure
14 / 29
Emily Clement
. Coût O (1)
. Coût O (1), X fois
. Coût O (1)
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple : Recherche dans une liste quelconque
. Recherche d’un élément dans une liste
Recherche d’un élément elt dans une liste L
1: procedure Recherche(elt, L, n)
2:
i ←0
3:
while i < n − 1 AND L [i] 6= elt do
4:
i ←i +1
5:
end while
6:
return L [i] elt
7: end procedure
. Coût O (1)
. Coût O (1), X fois
. Coût O (1)
. Coût total dans le pire cas
T (n) =?
14 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple : Recherche dans une liste quelconque
. Recherche d’un élément dans une liste
Recherche d’un élément elt dans une liste L
1: procedure Recherche(elt, L, n)
2:
i ←0
3:
while i < n − 1 AND L [i] 6= elt do
4:
i ←i +1
5:
end while
6:
return L [i] elt
7: end procedure
. Coût O (1)
. Coût O (1), X fois
. Coût O (1)
. Coût total dans le pire cas
T (n) = O (1) + n · O (1) + O (1) = O (n)
14 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple : Recherche dichotomique
. Recherche dichotomique dans un tableau trié L hL1 , · · · , Ln i
Recherche d’un élément elt dans un tableau trié L
1: procedure Recherche(elt, L = hL0 , · · · , Ln i)
2:
i ←0
3:
result ← n + 1
4:
while i < result − 1 do
5:
if elt > L(i+result)/2 then
6:
i ← (i + result) /2
7:
else
8:
result = (i + result) /2
9:
end if
10:
end while
11:
return result
12: end procedure
15 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple : Recherche dichotomique
. Recherche dichotomique dans un tableau trié L hL1 , · · · , Ln i
Recherche d’un élément elt dans un tableau trié L
1: procedure Recherche(elt, L = hL0 , · · · , Ln i)
2:
i ←0
3:
result ← n + 1
4:
while i < result − 1 do
5:
if elt > L(i+result)/2 then
6:
i ← (i + result) /2
7:
else
8:
result = (i + result) /2
9:
end if
10:
end while
11:
return result
12: end procedure
. Coût total en fonction de T (n/2)
T (n) =?
15 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple : Recherche dichotomique
. Recherche dichotomique dans un tableau trié L hL1 , · · · , Ln i
Recherche d’un élément elt dans un tableau trié L
1: procedure Recherche(elt, L = hL0 , · · · , Ln i)
2:
i ←0
3:
result ← n + 1
4:
while i < result − 1 do
5:
if elt > L(i+result)/2 then
6:
i ← (i + result) /2
7:
else
8:
result = (i + result) /2
9:
end if
10:
end while
11:
return result
12: end procedure
. Coût total en fonction de T (n/2)
T (n) = 1 + T (n/2)
15 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple :Recherche dichotomique (suite)
. Comment trouver la complexité?
T (n) = 1 + T (n/2) et T (1) = 1
On voudrait dire que T (n) = O (log2 n), comment faire?
16 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple :Recherche dichotomique (suite)
. Comment trouver la complexité?
T (n) = 1 + T (n/2) et T (1) = 1
On voudrait dire que T (n) = O (log2 n), comment faire?
. Substitution
16 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple :Recherche dichotomique (suite)
. Comment trouver la complexité?
T (n) = 1 + T (n/2) et T (1) = 1
On voudrait dire que T (n) = O (log2 n), comment faire?
. Substitution
I
16 / 29
Hyp: T (n) = a · log2 n + c
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple :Recherche dichotomique (suite)
. Comment trouver la complexité?
T (n) = 1 + T (n/2) et T (1) = 1
On voudrait dire que T (n) = O (log2 n), comment faire?
. Substitution
16 / 29
I
Hyp: T (n) = a · log2 n + c
I
Remettre ça dans T (n/2) = a · log2 n − a + c
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple :Recherche dichotomique (suite)
. Comment trouver la complexité?
T (n) = 1 + T (n/2) et T (1) = 1
On voudrait dire que T (n) = O (log2 n), comment faire?
. Substitution
16 / 29
I
Hyp: T (n) = a · log2 n + c
I
Remettre ça dans T (n/2) = a · log2 n − a + c
I
Résoudre: a log2 n + c − 1 = a log2 n − a + c et conclure, a = 1 et c = 1.
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Exemple :Recherche dichotomique (suite)
. Comment trouver la complexité?
T (n) = 1 + T (n/2) et T (1) = 1
On voudrait dire que T (n) = O (log2 n), comment faire?
. Substitution
I
Hyp: T (n) = a · log2 n + c
I
Remettre ça dans T (n/2) = a · log2 n − a + c
I
Résoudre: a log2 n + c − 1 = a log2 n − a + c et conclure, a = 1 et c = 1.
Méthode générales
I
16 / 29
D’autres méthodes existent
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Pause
Pause !
17 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Problème du tris
. Problème du tris d’un tableau de nombres
I
18 / 29
Entrée Une suite de n nombres ha1 , · · · , an i, qu’on peut noter a
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Problème du tris
. Problème du tris d’un tableau de nombres
18 / 29
I
Entrée Une suite de n nombres ha1 , · · · , an i, qu’on peut noter a
I
Sortie Une permutation (réorganisation) ha10 , · · · , an0 i de la suite a de
façon que a10 ≤ a20 ≤ · · · ≤ an0 .
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Problème du tris
. Problème du tris d’un tableau de nombres
I
Entrée Une suite de n nombres ha1 , · · · , an i, qu’on peut noter a
I
Sortie Une permutation (réorganisation) ha10 , · · · , an0 i de la suite a de
façon que a10 ≤ a20 ≤ · · · ≤ an0 .
. Exemple
I
18 / 29
Entrée :
1
5
10
−3
Emily Clement
101
0
Algorithmique: théorie, tris, complexité, en 2 heures.
• Problème du tris
. Problème du tris d’un tableau de nombres
I
Entrée Une suite de n nombres ha1 , · · · , an i, qu’on peut noter a
I
Sortie Une permutation (réorganisation) ha10 , · · · , an0 i de la suite a de
façon que a10 ≤ a20 ≤ · · · ≤ an0 .
. Exemple
18 / 29
I
Entrée :
1
I
Sortie :
−3
5
10
0
1
−3
5
Emily Clement
101
10
0
101
Algorithmique: théorie, tris, complexité, en 2 heures.
• Problème du tris
. Problème du tris d’un tableau de nombres
I
Entrée Une suite de n nombres ha1 , · · · , an i, qu’on peut noter a
I
Sortie Une permutation (réorganisation) ha10 , · · · , an0 i de la suite a de
façon que a10 ≤ a20 ≤ · · · ≤ an0 .
. Exemple
I
Entrée :
1
I
Sortie :
−3
5
10
0
1
−3
5
101
10
0
101
. Algorithmes de tris
I
18 / 29
Beaucoup d’algorithmes de tris différents existent
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Problème du tris
. Problème du tris d’un tableau de nombres
I
Entrée Une suite de n nombres ha1 , · · · , an i, qu’on peut noter a
I
Sortie Une permutation (réorganisation) ha10 , · · · , an0 i de la suite a de
façon que a10 ≤ a20 ≤ · · · ≤ an0 .
. Exemple
I
Entrée :
1
I
Sortie :
−3
5
10
0
1
−3
5
101
10
0
101
. Algorithmes de tris
18 / 29
I
Beaucoup d’algorithmes de tris différents existent
I
On verra le tri pas insertion et le tri fusion.
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Problème du tris
. Problème du tris d’un tableau de nombres
I
Entrée Une suite de n nombres ha1 , · · · , an i, qu’on peut noter a
I
Sortie Une permutation (réorganisation) ha10 , · · · , an0 i de la suite a de
façon que a10 ≤ a20 ≤ · · · ≤ an0 .
. Exemple
I
Entrée :
1
I
Sortie :
−3
5
10
0
1
−3
5
101
10
0
101
. Algorithmes de tris
18 / 29
I
Beaucoup d’algorithmes de tris différents existent
I
On verra le tri pas insertion et le tri fusion.
I
Dans le cas moyen, on ne peut pas trier plus rapidement qu’en O (n log n)
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Problème du tris
. Problème du tris d’un tableau de nombres
I
Entrée Une suite de n nombres ha1 , · · · , an i, qu’on peut noter a
I
Sortie Une permutation (réorganisation) ha10 , · · · , an0 i de la suite a de
façon que a10 ≤ a20 ≤ · · · ≤ an0 .
. Exemple
I
Entrée :
1
I
Sortie :
−3
5
10
0
1
−3
5
101
10
0
101
. Algorithmes de tris
18 / 29
I
Beaucoup d’algorithmes de tris différents existent
I
On verra le tri pas insertion et le tri fusion.
I
Dans le cas moyen, on ne peut pas trier plus rapidement qu’en O (n log n)
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Problème du tris
. Problème du tris d’un tableau de nombres
I
Entrée Une suite de n nombres ha1 , · · · , an i, qu’on peut noter a
I
Sortie Une permutation (réorganisation) ha10 , · · · , an0 i de la suite a de
façon que a10 ≤ a20 ≤ · · · ≤ an0 .
. Exemple
I
Entrée :
1
I
Sortie :
−3
5
10
0
1
−3
5
101
10
0
101
. Algorithmes de tris
18 / 29
I
Beaucoup d’algorithmes de tris différents existent
I
On verra le tri pas insertion et le tri fusion.
I
Dans le cas moyen, on ne peut pas trier plus rapidement qu’en O (n log n)
I
Certains tris sont mieux que d’autres selon la situation!
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tris par insertion: Intuition
. Le tri par insertion
19 / 29
I
Intuition: Le tris de carte. Voici une animation !
I
Complexité: pas optimal...
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tris par insertion: Intuition
. Le tri par insertion
I
Intuition: Le tris de carte. Voici une animation !
I
Complexité: pas optimal...
. Présentation du tri par insertion
Tris par insertion d’un tableau L de longueur n
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
19 / 29
procedure triInsertion(L, n)
for j from 2 to n do
clé ← L[j]
i ←j −1
while i > 0 AND L[i] > clé do
L[1, · · · , j − 1]
L[i + 1] ← L[i]
i ←i −1
end while
L[i + 1] ← clé
end for
return L
end procedure
Emily Clement
. Insère L[j] dans la séquence triée
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tris par insertions: Complexité
. Complexité de l’algorithme dans le pire cas
Tris par insertion d’un tableau L de longueur n
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
20 / 29
procedure triInsertion(L, n)
for j from 1 to n − 1 do
clé ← L[j]
i ←j −1
while i > 0 AND L[i] > clé do
L[i + 1] ← L[i]
i ←i −1
end while
L[i + 1] ← clé
end for
return L
end procedure
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tris par insertions: Complexité
. Complexité de l’algorithme dans le pire cas
Tris par insertion d’un tableau L de longueur n
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
20 / 29
procedure triInsertion(L, n)
for j from 1 to n − 1 do
clé ← L[j]
i ←j −1
while i > 0 AND L[i] > clé do
L[i + 1] ← L[i]
i ←i −1
end while
L[i + 1] ← clé
end for
return L
end procedure
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
. n − 1 fois
• Tris par insertions: Complexité
. Complexité de l’algorithme dans le pire cas
Tris par insertion d’un tableau L de longueur n
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
20 / 29
procedure triInsertion(L, n)
for j from 1 to n − 1 do
clé ← L[j]
i ←j −1
while i > 0 AND L[i] > clé do
L[i + 1] ← L[i]
i ←i −1
end while
L[i + 1] ← clé
end for
return L
end procedure
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
. n − 1 fois
. O (1)
• Tris par insertions: Complexité
. Complexité de l’algorithme dans le pire cas
Tris par insertion d’un tableau L de longueur n
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
20 / 29
procedure triInsertion(L, n)
for j from 1 to n − 1 do
clé ← L[j]
i ←j −1
while i > 0 AND L[i] > clé do
L[i + 1] ← L[i]
i ←i −1
end while
L[i + 1] ← clé
end for
return L
end procedure
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
. n − 1 fois
. O (1)
. O (1)
• Tris par insertions: Complexité
. Complexité de l’algorithme dans le pire cas
Tris par insertion d’un tableau L de longueur n
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
20 / 29
procedure triInsertion(L, n)
for j from 1 to n − 1 do
clé ← L[j]
i ←j −1
while i > 0 AND L[i] > clé do
L[i + 1] ← L[i]
i ←i −1
end while
L[i + 1] ← clé
end for
return L
end procedure
Emily Clement
. n − 1 fois
. O (1)
. O (1)
. Pire cas: j − 1 fois
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tris par insertions: Complexité
. Complexité de l’algorithme dans le pire cas
Tris par insertion d’un tableau L de longueur n
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
20 / 29
procedure triInsertion(L, n)
for j from 1 to n − 1 do
clé ← L[j]
i ←j −1
while i > 0 AND L[i] > clé do
L[i + 1] ← L[i]
i ←i −1
end while
L[i + 1] ← clé
end for
return L
end procedure
Emily Clement
. n − 1 fois
. O (1)
. O (1)
. Pire cas: j − 1 fois
. O (1)
. O (1)
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tris par insertions: Complexité
. Complexité de l’algorithme dans le pire cas
Tris par insertion d’un tableau L de longueur n
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
20 / 29
procedure triInsertion(L, n)
for j from 1 to n − 1 do
clé ← L[j]
i ←j −1
while i > 0 AND L[i] > clé do
L[i + 1] ← L[i]
i ←i −1
end while
L[i + 1] ← clé
end for
return L
end procedure
Emily Clement
. n − 1 fois
. O (1)
. O (1)
. Pire cas: j − 1 fois
. O (1)
. O (1)
Algorithmique: théorie, tris, complexité, en 2 heures.
. O (1)
• Tris par insertions: Complexité
. Complexité de l’algorithme dans le pire cas
Tris par insertion d’un tableau L de longueur n
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure triInsertion(L, n)
for j from 1 to n − 1 do
clé ← L[j]
i ←j −1
while i > 0 AND L[i] > clé do
L[i + 1] ← L[i]
i ←i −1
end while
L[i + 1] ← clé
end for
return L
end procedure
. Coût final(pire cas)
T (n) =
n−1
P
j=1
20 / 29
O (1) +
j−1
P
. n − 1 fois
. O (1)
. O (1)
. Pire cas: j − 1 fois
. O (1)
. O (1)
O (1) = n + n · O (n) = O n2
i=1
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
. O (1)
• Diviser pour mieux régner
. Concept général
Problème
21 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Diviser pour mieux régner
. Concept général
Problème
Diviser
Sous-Problème
21 / 29
Emily Clement
Sous-Problème
Algorithmique: théorie, tris, complexité, en 2 heures.
• Diviser pour mieux régner
. Concept général
Problème
Diviser
Sous-Problème
Sous-Problème
Régner
Solution
21 / 29
Emily Clement
Solution
Algorithmique: théorie, tris, complexité, en 2 heures.
• Diviser pour mieux régner
. Concept général
Problème
Diviser
Sous-Problème
Sous-Problème
Régner
Solution
Solution
Combiner
Solution au problème
21 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Diviser pour mieux régner
. Concept général
Problème
Diviser
Sous-Problème
Sous-Problème
Régner
Solution
Solution
Combiner
Solution au problème
I
21 / 29
DIVISER: Les sous-problèmes sont des plus petites instances du même
problème général
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Diviser pour mieux régner
. Concept général
Problème
Diviser
Sous-Problème
Sous-Problème
Régner
Solution
Solution
Combiner
Solution au problème
21 / 29
I
DIVISER: Les sous-problèmes sont des plus petites instances du même
problème général
I
REGNER: Si on réduit suffisamment les sous-problèmes, on arrive à les
résoudre directement
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Diviser pour mieux régner
. Concept général
Problème
Diviser
Sous-Problème
Sous-Problème
Régner
Solution
Solution
Combiner
Solution au problème
21 / 29
I
DIVISER: Les sous-problèmes sont des plus petites instances du même
problème général
I
REGNER: Si on réduit suffisamment les sous-problèmes, on arrive à les
résoudre directement
I
COMBINER: On combine ensuite les solutions des sous-problèmes pour
résoudre le problème général
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Diviser pour mieux régner : Exemple
. Trier une liste
Pb initial: Trier [1, 10, 4, 2, 5, 3, 9, 8]
22 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Diviser pour mieux régner : Exemple
. Trier une liste
Pb initial: Trier [1, 10, 4, 2, 5, 3, 9, 8]
Diviser
Pb 1: Trier [1, 10, 4, 2]
Pb 2: Trier [5, 3, 9, 8]
22 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Diviser pour mieux régner : Exemple
. Trier une liste
Pb initial: Trier [1, 10, 4, 2, 5, 3, 9, 8]
Diviser
Pb 1: Trier [1, 10, 4, 2]
Pb 2: Trier [5, 3, 9, 8]
Régner
[1, 2, 4, 10]
22 / 29
Emily Clement
[3, 5, 8, 9]
Algorithmique: théorie, tris, complexité, en 2 heures.
• Diviser pour mieux régner : Exemple
. Trier une liste
Pb initial: Trier [1, 10, 4, 2, 5, 3, 9, 8]
Diviser
Pb 1: Trier [1, 10, 4, 2]
Pb 2: Trier [5, 3, 9, 8]
Régner
[1, 2, 4, 10]
[3, 5, 8, 9]
Combiner
[1, 2, 3, 4, 5, 8, 9, 10]
22 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Diviser pour mieux régner : Exemple
. Trier une liste
Pb initial: Trier [1, 10, 4, 2, 5, 3, 9, 8]
Diviser
Pb 1: Trier [1, 10, 4, 2]
Pb 2: Trier [5, 3, 9, 8]
Régner
[1, 2, 4, 10]
[3, 5, 8, 9]
Combiner
[1, 2, 3, 4, 5, 8, 9, 10]
. Application: le tri fusion
I
22 / 29
Un algorithme très efficace (optimal dans le cas moyen)
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Diviser pour mieux régner : Exemple
. Trier une liste
Pb initial: Trier [1, 10, 4, 2, 5, 3, 9, 8]
Diviser
Pb 1: Trier [1, 10, 4, 2]
Pb 2: Trier [5, 3, 9, 8]
Régner
[1, 2, 4, 10]
[3, 5, 8, 9]
Combiner
[1, 2, 3, 4, 5, 8, 9, 10]
. Application: le tri fusion
22 / 29
I
Un algorithme très efficace (optimal dans le cas moyen)
I
Des appels récursifs
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tris fusion: Exemple
9
23 / 29
7
8
Emily Clement
1
2
10
5
3
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tris fusion: Exemple
9
9
23 / 29
7
7
8
8
1
Emily Clement
1
2
10
2
5
3
10
5
3
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tris fusion: Exemple
9
9
9
23 / 29
7
7
7
8
8
1
2
10
1
8
Emily Clement
2
1
2
5
3
10
5
10
3
5
3
Régner
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tris fusion: Exemple
9
9
23 / 29
7
7
8
8
1
2
10
1
2
5
3
10
5
3
9
7
8
1
2
10
5
3
9
7
8
1
2
10
5
3
Emily Clement
Régner
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tris fusion: Exemple
9
9
8
8
1
2
10
1
2
5
3
10
5
3
9
7
8
1
2
10
5
3
9
7
8
1
2
10
5
3
7
9
1
8
2
10
3
5
1
23 / 29
7
7
7
8
9
Emily Clement
2
3
5
Régner
10
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tris fusion: Exemple
9
9
7
8
8
1
2
10
1
2
5
3
10
5
3
9
7
8
1
2
10
5
3
9
7
8
1
2
10
5
3
7
9
1
8
2
10
3
5
1
7
1
23 / 29
7
8
2
9
3
Emily Clement
5
7
2
3
5
8
9
10
10
Régner
Fusion!
Algorithmique: théorie, tris, complexité, en 2 heures.
Pause
24 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tri fusion: Formalisation
. Tri fusion
Tri fusion sur un tableau L
1: procedure triFusion(L[0, · · · , n])
2:
if n ≤ 0 then
3:
return L
4:
else
5:
return fusion(triFusion(L [0, · · · , n/2]), triFusion(L [n/2 + 1, · · · , n]
)
6:
end if
7: end procedure
. Explications
.
25 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tri fusion: Formalisation
. Tri fusion
Tri fusion sur un tableau L
1: procedure triFusion(L[0, · · · , n])
2:
if n ≤ 0 then
3:
return L
4:
else
5:
return fusion(triFusion(L [0, · · · , n/2]), triFusion(L [n/2 + 1, · · · , n]
)
6:
end if
7: end procedure
. Explications
I
Si le tableau n’a qu’un élément: déjà trié.
.
25 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tri fusion: Formalisation
. Tri fusion
Tri fusion sur un tableau L
1: procedure triFusion(L[0, · · · , n])
2:
if n ≤ 0 then
3:
return L
4:
else
5:
return
fusion(triFusion(L [1, · · · , n/2]),
L [n/2 + 1, · · · , n])
6:
end if
7: end procedure
. Explications
I
Si le tableau n’a qu’un élément: déjà trié.
I
Sinon, séparer le tableau en 2 parties, à peu près égales.
.
25 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
triFusion(
• Tri fusion: Formalisation
. Tri fusion
Tri fusion sur un tableau L
1: procedure triFusion(L[0, · · · , n])
2:
if n ≤ 0 then
3:
return L
4:
else
5:
return
fusion(triFusion(L [1, · · · , n/2]),
L [n/2 + 1, · · · , n])
6:
end if
7: end procedure
. Explications
I
Si le tableau n’a qu’un élément: déjà trié.
I
Sinon, séparer le tableau en 2 parties, à peu près égales.
I
Trier récursivement les 2 parties avec l’algorithme du tri fusion.
.
25 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
triFusion(
• Tri fusion: Formalisation
. Tri fusion
Tri fusion sur un tableau L
1: procedure triFusion(L[0, · · · , n])
2:
if n ≤ 0 then
3:
return L
4:
else
5:
return
fusion(triFusion(L [1, · · · , n/2]),
L [n/2 + 1, · · · , n])
6:
end if
7: end procedure
triFusion(
. Explications
I
25 / 29
Si le tableau n’a qu’un élément: déjà trié.
I
Sinon, séparer le tableau en 2 parties, à peu près égales.
I
Trier récursivement les 2 parties avec l’algorithme du tri fusion.
I
Puis, fusionner les deux tableaux triés en un seul tableau trié (slide
suivante).
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tri fusion: Formalisation
. Tri fusion
Tri fusion sur un tableau L
1: procedure triFusion(L[0, · · · , n])
2:
if n ≤ 0 then
3:
return L
4:
else
5:
return
fusion(triFusion(L [1, · · · , n/2]),
L [n/2 + 1, · · · , n])
6:
end if
7: end procedure
triFusion(
. Explications
I
25 / 29
Si le tableau n’a qu’un élément: déjà trié.
I
Sinon, séparer le tableau en 2 parties, à peu près égales.
I
Trier récursivement les 2 parties avec l’algorithme du tri fusion.
I
Puis, fusionner les deux tableaux triés en un seul tableau trié (slide
suivante). Coût total: O (n log n)
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tri fusion: la fusion
. Fusion de deux tableau triés
Fusion de deux tableau triés A et B
1: procedure fusion(A [0, · · · , a − 1] , B [0, · · · , b − 1])
2:
if A est le tableau vide then
3:
return B
4:
else if B est le tableau vide then
5:
return A
6:
else if thenA[0] ≤ B[0]
7:
return A [0] :: fusion(A [1, · · · , a − 1] , B)
8:
else
9:
return B [1] :: fusion(A, B [1, · · · , b − 1])
10:
end if
11: end procedure
26 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tri fusion: la fusion
. Fusion de deux tableau triés
Fusion de deux tableau triés A et B
1: procedure fusion(A [0, · · · , a − 1] , B [0, · · · , b − 1])
2:
if A est le tableau vide then
3:
return B
4:
else if B est le tableau vide then
5:
return A
6:
else if thenA[0] ≤ B[0]
7:
return A [0] :: fusion(A [1, · · · , a − 1] , B)
8:
else
9:
return B [1] :: fusion(A, B [1, · · · , b − 1])
10:
end if
11: end procedure
Coût de la fusion
26 / 29
I
Taille de l’entrée:
I
Coût total:
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tri fusion: la fusion
. Fusion de deux tableau triés
Fusion de deux tableau triés A et B
1: procedure fusion(A [0, · · · , a − 1] , B [0, · · · , b − 1])
2:
if A est le tableau vide then
3:
return B
4:
else if B est le tableau vide then
5:
return A
6:
else if thenA[0] ≤ B[0]
7:
return A [0] :: fusion(A [1, · · · , a − 1] , B)
8:
else
9:
return B [1] :: fusion(A, B [1, · · · , b − 1])
10:
end if
11: end procedure
Coût de la fusion
26 / 29
I
Taille de l’entrée: taille du tableau A, a et du tableau B, b.
I
Coût total:
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Tri fusion: la fusion
. Fusion de deux tableau triés
Fusion de deux tableau triés A et B
1: procedure fusion(A [0, · · · , a − 1] , B [0, · · · , b − 1])
2:
if A est le tableau vide then
3:
return B
4:
else if B est le tableau vide then
5:
return A
6:
else if thenA[0] ≤ B[0]
7:
return A [0] :: fusion(A [1, · · · , a − 1] , B)
8:
else
9:
return B [1] :: fusion(A, B [1, · · · , b − 1])
10:
end if
11: end procedure
Coût de la fusion
26 / 29
I
Taille de l’entrée: taille du tableau A, a et du tableau B, b.
I
Coût total: O (a + b)
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Théorème sur la complexité de l’algorithme de tris dans le cas
moyen
. Tris par comparaison
27 / 29
I
On assimile la complexité dans le temps au nombre de comparaisons
nécessaires.
I
On ne peut faire mieux (moyen cas) que O (n log n) où n est la taille du
tableau.
I
Le tri fusion est un tri asymptotiquement optimal.
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
• Théorème sur la complexité de l’algorithme de tris dans le cas
moyen
. Tris par comparaison
I
On assimile la complexité dans le temps au nombre de comparaisons
nécessaires.
I
On ne peut faire mieux (moyen cas) que O (n log n) où n est la taille du
tableau.
I
Le tri fusion est un tri asymptotiquement optimal.
. Tableau de comparaison (temps asymptotique
27 / 29
nom
tri rapide
cas optimal
n log n
cas moyen
n log n
pire cas
n2
tri fusion
tri par tas
tri par insertion
tri à bulles
tri stupide
n log n
n log n
n
n
n
n log n
n log n
n2
n2
n!
n log n
n log n
n2
n2
n!
Emily Clement
)
complexité spatiale
log n (moyen cas)
n (pire cas)
n
1
1
1
1
Algorithmique: théorie, tris, complexité, en 2 heures.
• UFC que choisir?
. Tri lents
I
Tri par insertion: Le plus rapide pour les entrées de petites tailles, ou déjà
presque triées car très simple.
I
Tri à bulles: Peu efficace. Intérêt pédagogique.
I
Tri par tas: lent en comparaison des autres algorithmes car la constante
devant n log n est très grande, mais efficace asymptotiquement... Il est
utilisé quand le temps prime moins que l’espace. (tri "en place").
I
Tri stupide: Tester des permutations ... à ne pas faire.
. Tris rapides
I
Tri fusion: Rapide, demande de la place en espace mémoire.
I
Tri rapide: Complexité quasi-indépendante des données avec quelques
optimisations ...
. Tri fusion vs tri insertion
On va voir la différence entre tri fusion et tri insertion pour une distribution
aléatoire de nombres.
tri fusion vs tri insertion
28 / 29
Emily Clement
Algorithmique: théorie, tris, complexité, en 2 heures.
Pour finir: Une référence
. Algorithmique de Cormen, Leiserson, Rivest, Stein.
29 / 29
Emily Clement
I
Algorithmiques générales
I
Complexité, algorithmiques
probabiliste
I
Tri et rangs
I
Structure de donnés
I
Algorithmique avancée et
analyse
I
Algorithmique des graphes
I
etc...
Algorithmique: théorie, tris, complexité, en 2 heures.
Téléchargement