Złożoność algorytmów

Często słyszy się o "złożoności algorytmu", "złożoności czasowej" lub "notacji duże-O" określając wydajność algorytmu, lecz czym tak naprawdę to jest?

Najprościej mówiąc, złożoność algorytmu to notacja, która określa jak jego czas wykonania rośnie zależnie od wielkości podanego zbioru (lub pojedynczego parametru, którego wartość ma wpływ na czas wykonania algorytmu).

Przyjęło się że tą wielkość określamy małą literką n. Gdy więcej niż jeden parametr lub wielkość ma wpływ na złożoność algorytmu, używa się innych małych liter z alfabetu angielskiego. 

Przykładowy zapis złożoności algorytmu: $O(n)$, $O(\log n)$, $O(n^2)$, $O(n * m)$

Kiedy dwa algorytmy mają tą samą złożoność, oznacza to tylko, że ich czas wykonania rośnie proporcjonalnie do siebie, ale nie znaczy to że są tak samo szybkie. O złożoności algorytmu można myśleć jak o mnożniku, który mnoży podstawowy czas wykonania. Łatwo można to zaobserwować w kodzie:

Złożoność łatwo zobrazować graficznie:

Zobrazowane w kalkulatorze graficznym Desmos.


Napisany przez MateuszAnt dnia 16.02.2024 • Ostatnia zmiana: 19.02 12:07