#compsci **Вычислительная сложность** (computational complexity) - зависимость объёма работа от размера входных данных Проблема: иногда число операций зависит еще от значений данных, например, сортировка уже упорядоченного набора чисел быстрее. Поэтому два варианта изучения числа операций: в среднем случае, когда оно усредняется по ансамблю всех возможных входных параметров, и в худшем случае, когда оно изучается для такого набора данных, с которым [[алгоритм]] будет работать дольше всего Рассматривается асимптотическое поведение зависимости объема работы от размера входных данных. ![[Pasted image 20260224002837.png]] В информатике вычислительная сложность O(g(x)) понимается в смысле $\LARGE \Theta(g(x))$ >[!Примеры] >Алгоритм сортировки слияниями - вычислительная сложность $\LARGE O(N \log{N})$ в худшем случае >Алгоритм пузырьковой сортировки - $\LARGE O(N^2)$ в худшем случае (основание логарифма не ставится, так как не имеет смысла под знаком асимптотики) ![[Pasted image 20260224003137.png]] Стоит помнить, что определение вычислительной сложности для $\LARGE N \rightarrow \infty$, поэтому лучшая асимптотика нее всегда означает лучший алгоритм Пример: перемножение двух квадратных [[Matrix|матриц]] размера $\LARGE N$ ![[Pasted image 20260224003432.png]] ## Улучшение алгоритмов Можно ли придумать новый алгоритм, который будет лучше старых в смысле асимптотической вычислительной сложности? Для некоторых задач есть ответ на этот вопрос в виде соответствующих теорем Например: ![[Pasted image 20260224003825.png]] ![[Pasted image 20260224004005.png]]