Knoledge_v0

This commit is contained in:
lambehorn
2025-12-19 13:39:24 +05:00
parent e97ecdf4dc
commit 422861cb0b
165 changed files with 2282 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
Это определение асимптотической сложности — того, как растут время или объём памяти при увеличении размера входных данных. Эта оценка используется для подсчета сложности выполнения функций в [языках программирования](Язык%20программирования).
Функция временной сложности в некоторых случаях может быть определена точно, но в большинстве своем это бессмысленно. Поэтому входные данные всегда $n\ ->\infty$.
## Время выполнение задачи
#### Полиномиальное время
Алгоритм типа: $O(n^k)$
Алгоритмы которые решаются за полиномиальное время. Практически решаемые задачи с реальными данным, сложность.
###### Характеристики:
- Рост времени - умеренный
- Предсказуемое и стабильное время работы
- Большинство классических алгоритмов работают за это время
- Не требуют перебора всех вариантов
- Можно применять оптимизации, динамическое программирование, жадные стратегии.
###### Примеры задач:
- Сортировка массива - $O(nlog(n))$
- Поиск кратчайшего пути - $O(n+m)$
- Умножение матриц - $O(n^3)$
- Проверка простаты - полиномиальный тест
#### Экспоненциальное время
Алгоритм типа $O(k^n),O(n!)$
Алгоритмы которые решаются за экспоненциальное время. Такие алгоритмы практически не решаемые с реальными данными.
###### Характеристики:
- Рост времени - взрывной
- Алгоритм часто основан на полном переборе вариантов
###### Примеры задач
- Перебор всех подмножеств $O(2^n)$
- Задача коммивояжера перебором - $O(n!)$
- Раскрытие графа brut force
- SAT полный перебор