Uploaded by Анна Штрейх

Сложность алгоритмов

advertisement
Сложность
алгоритмов
Алгоритм
• Алгоритм — это последовательность действий для
исполнителя, записанная на формальном языке и
приводящая к заданной цели за конечное время.
• Основные свойства, присущие любому алгоритму:
• • массовость — алгоритм предназначен для решения
задачи с
некоторым множеством допустимых входных данных;
• • конечность — алгоритм должен завершаться за конечное
число шагов.
Какая бывает сложность?
Сложность алгоритма – это количественная характеристика ресурсов,
необходимых алгоритму для успешного решения поставленной задачи.
ПО ВРЕМЕНИ
ПО ПАМЯТИ
Временная сложность
алгоритма Т(n)
Каждому размеру задачи n эта функция ставит в соответствие
максимальное количество элементарных операций выполненных в
ходе выполнения алгоритма
Как лучше вычислить
значение
многочлена?
Что за О?
В теоретической информатике при сравнении алгоритмов
используется их асимптотическая сложность O() , т. е. скорость
роста количества операций при больших значениях n.
Функция T(n) = n2/2 + 3n/2 + 1
• возрастает приблизительно как n2
Отбрасываем:
- сравнительно медленно растущие слагаемые (3n/2+1)
- константные множители 1/2
Получаем асимптотическую оценку сложности для алгоритма 1: O(n2) (О –
нотация)
Читается как "О большое от эн квадрат".
Каждый получит ту функцию, которую
заслуживает
Все зависит от объема набора
данных
В большинстве случаев временная
сложность алгоритма не может
быть определена точно.
Поэтому чаще используется
понятие асимптотической
сложности алгоритма, когда
подразумевается анализ времени,
которое потребуется для
обработки очень большого набора
данных
Классы алгоритмов по
временной сложности
Линейный
• Линейный –O(n) Порядок роста O(n) означает,
что сложность алгоритма линейно растет с
увеличением входного массива.
• Такие алгоритмы содержат циклы по каждому
элементу входного массива
Логарифмический
• Порядок роста O(log n) означает, что время
выполнения алгоритма растет логарифмически
с увеличением размера входного массива.
• Большинство алгоритмов, работающих по
принципу «деления пополам», имеют
логарифмическую сложность.
Download