Accueil > Structures de données et algorithmes >
đ Analyse de la complexitĂ© algorithmique
Survol et attentes
Quelle option préférerez-vous?
- Faire des allers-retours Ă vĂ©lo plusieurs fois Ă lâĂ©picerie avec un seul sac ou une seule fois mais en traĂźnant une grande remorque Ă vĂ©lo
- Trouver votre chemin vers la maison dâun nouvel ami en prenant des virages au hasard aux intersections de la route jusquâĂ ce que vous arriviez (peut-ĂȘtre des annĂ©es plus tard) ou en prenant le virage qui vous mĂšne dans la direction gĂ©nĂ©rale et en revenant sur vos pas si nĂ©cessaire jusquâĂ ce que vous arriviez
Définitions
- Analyse algorithmique
- DĂ©crire la complexitĂ© des algorithmes - combien de temps ou combien dâespace ils prennent pour accomplir la tĂąche. Certains algorithmes sont beaucoup plus efficaces avec les opĂ©rations ou la mĂ©moire que dâautres. Certains sont tellement inefficaces quâils ne sont pas du tout pratiques!
- Ordre de grandeur
- Nombre dâĂ©tapes ou de la quantitĂ© de mĂ©moire requise en fonction de la taille des donnĂ©es Ă traiter, dĂ©crit selon le terme le plus important dans la relation. Lâordre de grandeur nâest donc pas une relation exacte entre lâeffort et le nombre de donnĂ©es Ă traiter mais donne un portrait de la progression globale de lâeffort selon ce nombre.
- Notation âgrand Oâ
- ReprĂ©sentation de lâordre de grandeur au format
O(f(n))oĂčf(n)est une fonction qui dĂ©crit la complexitĂ© de lâalgorithme en fonction de la taille des donnĂ©es Ă traiter. Par exemple,O(n)signifie que lâeffort est proportionnel Ă la taille des donnĂ©es,n, tandis queO(nÂČ)signifie que lâeffort est proportionnel au carrĂ© de la taille des donnĂ©es.
Objectifs dâapprentissage
Ă la fin de cette leçon vous devrez ĂȘtre en mesure de :
- DĂ©finir la complexitĂ© algorithmique, lâefficacitĂ© temporelle, lâefficacitĂ© spatiale et les problĂšmes P/NP
- DĂ©finir les niveaux de complexitĂ© algorithmique courants dans la notation âgrand Oâ : constant, logarithmique, linĂ©aire, log-linĂ©aire, quadratique et exponentiel
- Identifier les strutures algorithmiques qui conduisent à une complexité constante, linéaire, logarithmique, quadratique ou exponentielle
CritĂšres de succĂšs
- Je peux reconnaĂźtre la complexitĂ© âgrand Oâ dâun algorithme en fonction de son graphique dâopĂ©rations (ou dâutilisation de la mĂ©moire) en fonction de la taille de lâentrĂ©e
- Je peux identifier la complexité de la recherche séquentielle et binaire ainsi que celle de quelques algorithmes de tri courants
- Je peux analyser un algorithme inconnu pour dĂ©terminer sa complexitĂ© algorithmique en fonction des structures observĂ©es dans lâalgorithme