Fiche à trous · Première · NSI
Algorithmique — Complexité et algorithmes fondamentaux
Complétez de mémoire, puis vérifiez avec la page de corrigé.
Sur mille éléments, un algorithme quadratique fait un million d'opérations là où une recherche dichotomique en fait dix. L'écart n'est pas une question de machine rapide ou lente : c'est une loi de croissance, et aucun processeur ne la rattrape. Savoir la calculer, c'est savoir quel programme tiendra quand les données grossiront.
Ce que mesure la complexité
Règle
2Piège
Comparer deux algorithmes par leur temps mesuré sur un petit jeu de données.
Comparer des lois de croissance, pas des mesures ponctuelles.
Exemple
Comparer le nombre d'opérations d'un algorithme en O(n²) et d'une recherche par dichotomie, pour n = 1 000.
- 3.
- 4.
- 5.
- 6.
Résultat :
La recherche dichotomique
Règle
9Piège
Appliquer une recherche dichotomie à un tableau qui n'a pas été trié au préalable.
Avant toute dichotomie, vérifier — ou établir — que le tableau est trié.
Les tris
Propriété
Le tri fusion illustre ce qu'apporte la récursivité : la fusion de deux listes déjà triées est facile, et c'est cette facilité qu'on obtient en découpant. Il a un coût que le tri par insertion n'a pas : il utilise de la mémoire supplémentaire pour la fusion. Choisir un tri, c'est donc arbitrer entre temps et mémoire, et non désigner un vainqueur absolu.
Les graphes
Propriété
Évaluer la complexité d'un algorithme
- 12.
- 13.
- 14.
- 15.
- 16.
- Ai-je identifié la taille de l'entrée avant de compter ?
- Ai-je compté l'imbrication des boucles, et non leur nombre ?
- Ai-je ignoré les constantes dans ma notation ?
- Ai-je précisé le cas — favorable, moyen, défavorable ?
- Mon tableau est-il trié avant toute dichotomie ?
- Ai-je vérifié que les poids sont positifs avant d'appliquer Dijkstra ?