Similar presentations:
Анализ алгоритмов и их сложности
1. Структуры и алгоритмы обработки данных
Лекция 5Анализ алгоритмов и
их сложности
2. Сложность алгоритма
Для практики недостаточно знать, что задачаалгоритмически разрешима
Т. к. ресурсы ЭВМ (оперативная память и время
процессора) ограничены, следует выбирать из
эквивалентных алгоритмов наиболее
эффективный
Для оценки качества введено понятие
сложности или обратное понятие —
эффективность алгоритма
3. Сложность алгоритма
Оценка сложности зависит от:♦ времени, затраченного на выполнение
алгоритма
♦ объема памяти, требуемой для хранения
исходных данных задачи
4. Оценка качества алгоритма
5. Оценка качества алгоритма
Сложность алгоритмаВременная
Емкостная
- характеризует временные
затраты на реализацию
алгоритма
- характеризует затраты
памяти на реализацию
алгоритма
6. Оценка качества алгоритма
Сложность алгоритмаПрактическая
Теоретическая
7. Оценка качества алгоритма
Практическаясложность алгоритма
Практическая
временная
сложность
Практическая
емкостная
сложность
- оценивается во временных
единицах (секунды, миллисекунды,
количество временных тактов
процессора, количество
выполнения циклов и т.п.)
- выражается в битах, байтах,
словах и т.п.
8. Сложность алгоритма
выбранный языкпрограммирования
выбранный
математический
метод
формулирования
задачи
быстродействие
компьютера и его
емкостные ресурсы
искусство и опыт
программиста
Сложность
9. Выбор алгоритма
Какой из множества алгоритмов выбратьдля решения конкретной задачи?
Алгоритм
Как оценить эффективность программы?
Эффективность
программы
Лучший способ сравнения
эффективностей алгоритмов сопоставление их порядков сложности;
применим к временной и
пространственной сложности
память
время
10. Задачи и многообразие алгоритмов их решения
Для большинствазадач существует
более одного способа
их решения
Можно
сформулировать
несколько
алгоритмов,
приводящих к одному
и тому же результату
Пример: задача
возведения в степень
11. Задачи и многообразие алгоритмов их решения
Задача возведения в степеньДано число x и натуральное (целое неотрицательное) число n ≥ 0.
Вычислить значение функции f(x) = хn
Очевидный способ решения:
x n x x ... x
n раз
f(x) = хn
12. Задачи и многообразие алгоритмов их решения
Задача возведения в степеньДано число x и натуральное (целое неотрицательное) число n ≥ 0.
Вычислить значение функции f(x) = хn
x x ... x x x x ... x , если n нечетное
n div 2 раз
n div 2 раз
n
x x x ... x
n раз
x x ... x x x ... x , если n четное
n div 2 раз n div 2 раз
div - операция целочисленного деления
1, если n 0
n
n div 2 2
x x x
, если n нечетное
2
x n div 2 , если n четное
13. Задачи и многообразие алгоритмов их решения
Задача возведения в степеньДано число x и натуральное (целое неотрицательное) число n ≥ 0.
Вычислить значение функции f(x) = хn
x x ... x x x x ... x , если n нечетное
n div 2 раз
n div 2 раз
x n x x ... x
n раз
x x ... x x x ... x , если n четное
n div 2 раз n div 2 раз
1, если n 0
2
x n x x n div 2 , если n нечетное
2
x n div 2 , если n четное
Рекурсивный алгоритм
возведения в степень
14. Задачи и многообразие алгоритмов их решения
Задача возведения в степеньДано число x и натуральное (целое неотрицательное) число n ≥ 0.
Вычислить значение функции f(x) = хn