Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подготовка к экзамену.docx
Скачиваний:
0
Добавлен:
06.10.2025
Размер:
600.54 Кб
Скачать

1. Алгоритмическая сложность. Понятие алгоритма. Формы записи. Асимптотический анализ.

Алгоритмическая (Вычислительная) сложность – это параметр для определения быстродействия алгоритмов, описывающий их поведение (время исполнения и объём необходимой памяти) в зависимости от размера входных данных.

Алгоритм — это корректно определенная вычислительная процедура, представляющая собой конечную последовательность действий.

Временная сложность алгоритма — это функция от размера входных данных, равная максимальному количеству элементарных операций, проделываемых алгоритмом для решения задачи указанного размера.

Оценка роста функции (оценка сложности) – это оценка алгоритма (по времени выполнения или по памяти) некоторой функцией от n (количество входной информации), характеризующего изменение времени работы алгоритма с увеличением параметра.

Оценка в среднем – это оценка работы алгоритма в среднем случае, когда невозможно посчитать работу алгоритма в лучшем и худшем случае (например для сортировки – частично отсортированная последовательность). Для выполнения подсчёта в среднем используется вероятностный анализ алгоритма. Суть которого заключается в определении всех вероятностей получить на вход какие-то входные значения заданного размера n, после чего рассчитывается математическое ожидание соответствующей случайной величины, как сумма произведения времени работы определённого набора величин на его вероятность.

Асимптотический анализ – представление о верхней и нижней границе целевой функции Т(n).

Рост целевой функции T(n) имеет различные названия:

  1. Константное (время работы не зависит от n)

  2. Логарифмическое (log n: двоичный поиск)

  3. Линейное (n: поиск максимального значения)

  4. Квазилинейное (n log n: большинство эффективных сортировок)

  5. Квадратичное (n2: обход значений матрицы)

  6. Полиномиальное (nc для c>1)

  7. Экспоненциальное (cn для c>1)

  8. Факториальное (n!: задача коммивояжёра)

Θ(g(n)) — асимптотически точная граница. Тогда для такой функции g(n) это обозначение будет означать множество таких функций, что:

Оценка сверху – это оценка работы алгоритма в худшем случае (например для сортировки – обратно сортированная последовательность).

Ο(g(n)) — асимптотически верхняя граница, для которой все функции будут находиться ниже. ТОЧНАЯ ВЕРХНЯЯ ГРАНИЦА

Оценка снизу – это оценка работы алгоритма в лучшем случае (например для сортировки – уже отсортированная последовательность).

Ω(g(n)) — асимптотически нижняя граница, для которой все функции будут находиться выше. ТОЧНАЯ НИЖНЯЯ ГРАНИЦА

2. Алгоритмы поиска. Линейный и бинарный поиск

Алгоритм поиска – последовательность операций сравнения, с искомым экземпляром данных, где очередные элементы в структуре данных (где выполняется поиск) выбираются, исходя от алгоритма поиска. Если после завершения алгоритма искомым экземпляром данных не был обнаружен в структуре данных, алгоритм завершает работу.

Линейный, последовательный поиск (сложность - О(n)) — алгоритм нахождения заданного значения в произвольной структуре данных. Данный алгоритм является простейшим алгоритмом поиска и работает за линейное время – с увеличением данных время выполнения увеличивается прямо-пропорционально. ''Метод поиска в лоб'' – перебирать все элементы в структуре данных начиная с первого (или с последнего) элемента и сравнить с искомым значением.

Двоичный (бинарный) поиск (сложность - О(log n)) – классический алгоритм поиска элемента в отсортированном массиве (векторе), использующий дробление массива на половины. В каждой итерации работы алгоритма в массиве данных выбирается средний элемент и сравнивается с искомым элементом, исходя из того, будет элемент больше или меньше искомого, поиск продолжается в соответствующей половине.

Соседние файлы в предмете Алгоритмы и системы данных