diff --git a/cours algorithmique et complexité.md b/cours algorithmique et complexité.md index baf3ded9..cf2560a2 100644 --- a/cours algorithmique et complexité.md +++ b/cours algorithmique et complexité.md @@ -19,8 +19,10 @@ number headings: auto, first-level 1, max 3, 1.1 - # 1 - Algorithmes de tris +Pdf du cours : [[M1_algo_chap1_algos_de_tri.pdf]] -[[M1_algo_chap1_algos_de_tri.pdf]] - -[[démonstration complexité minimale algorithme de tri par comparaison]] +- les [[algorithme de tri par comparaison]] ont une complexité d'au moins $O(n \log(n))$ [[démonstration complexité minimale algorithme de tri par comparaison|(démonstration)]] + - démonstration par invariant de boucle (exemple sur le [[tri par sélection]]) + - on choisit une propriétée que l'on veut montrer vraie, et on la montre par récurrence sur la variable de boucle + - ! ne pas se tromper sur la propriété invariante. Pour le tri par sélection, la propriété doit être "les $i$ premier éléments sont à leur place définitive", et pas simplement "les $i$ premiers éléments sont triés", car on veut pouvoir faire la réccurence : il faut que les $i$ premiers soient *les plus petits du tableau* et pas simplement *des éléments triés parmi ceux du tableau* diff --git a/démonstration complexité minimale algorithme de tri par comparaison.md b/démonstration complexité minimale algorithme de tri par comparaison.md index 6d70b77a..dae3f440 100644 --- a/démonstration complexité minimale algorithme de tri par comparaison.md +++ b/démonstration complexité minimale algorithme de tri par comparaison.md @@ -7,7 +7,7 @@ tags: --- Pour une liste de $n$ éléments, on a un espace de $n!$ permutations possible, dont on cherche celle qui corresponde à une liste triée. -En partant de notre liste de départ, on fait des comparaisons qui nous donnent chaque fois un résultat booléen. Il faut donc que l'algorithme puisse atteindre toutes les $n!$ permutations avec des décisions binaires. Le nombre minimum de comparaisons sera donc la profondeur du plus petit arbre binaire à $n$ +En partant de notre liste de départ, on fait des comparaisons qui nous donnent chaque fois un résultat booléen. Il faut donc que l'algorithme puisse atteindre toutes les $n!$ permutations avec des décisions binaires. Le nombre minimum de comparaisons sera donc la profondeur du plus petit arbre binaire à $n!$ feuille d'où on déduit la complexité $O(n \log(n))$