- •НИУ ВШЭ – Пермь
- •Понятие сложности алгоритма
- •Понятие сложности алгоритма:
- •Понятие сложности алгоритма:
- •Понятие сложности алгоритма:
- •Понятие сложности алгоритма:
- •Понятие сложности алгоритма:
- •Понятие сложности алгоритма:
- •Понятие сложности алгоритма:
- •Понятие сложности алгоритма:
- •Оценка сложности алгоритма с использованием управляющего графа
- •Оценка алгоритмов, содержащих ветвления, на основе оценки входных данных
- •Оценка алгоритмов, содержащих ветвления, на основе оценки входных данных
- •Оценка алгоритмов, содержащих ветвления, на основе оценки входных данных
- •Оценка алгоритмов, содержащих ветвления, на основе оценки входных данных
- •Оценка алгоритмов, содержащих ветвления, на основе оценки входных данных
- •Оценка алгоритмов, содержащих ветвления, на основе оценки входных данных
- •Оценка входных данных
- •Оценка входных данных
- •Пример оценки сложности алгоритма с ветвлениями
- •Пример оценки сложности алгоритма с ветвлениями
- •Пример оценки сложности алгоритма с ветвлениями
- •Оценка алгоритмов, содержащих циклы с предусловием и постусловием
- •Оценка алгоритмов, содержащих циклы со счётчиком
- •Оценка алгоритмов, содержащих циклы со счётчиком
- •Оценка алгоритмов, содержащих циклы со счётчиком
- •Оценка алгоритмов, содержащих циклы со счётчиком
- •Оценка алгоритмов, содержащих циклы со счётчиком
- •Оценка рекурсивных алгоритмов (простая рекурсия)
- •Оценка рекурсивных алгоритмов (простая рекурсия)
- •Оценка рекурсивных алгоритмов (простая рекурсия)
- •Оценка рекурсивных алгоритмов (простая рекурсия)
- •Оценка рекурсивных алгоритмов (простая рекурсия). Пример – оценка сложности функции вычисления факториала
- •Оценка рекурсивных алгоритмов (простая рекурсия). Пример – оценка сложности функции вычисления факториала
- •Оценка рекурсивных алгоритмов (простая рекурсия). Пример – оценка сложности функции вычисления факториала
- •Оценка рекурсивных алгоритмов (простая рекурсия). Пример – оценка сложности функции вычисления факториала
- •Оценка рекурсивных алгоритмов (простая рекурсия). Пример – оценка сложности функции вычисления факториала
- •Пример – оценка сложности итерационной функции вычисления факториала
- •Понятие задачи и классы сложности задач
- •Понятие задачи и классы сложности задач
- •Понятие задачи и классы сложности задач
НИУ ВШЭ – Пермь
Факультет бизнес-информатики
Кафедра информационных технологий в бизнесе
Анализ сложности алгоритмов. Классы сложности задач
Материалы курса «Теоретические основы информатики»
Лекция 11
Лядова Л.Н.
Пермь 2012
Понятие сложности алгоритма
В общем случае сложность алгоритма можно оценить с разных точек зрения:
•Вычислительная сложность, определяющая скорость выполнения.
•Ёмкостная сложность, определяющая объём памяти, необходимый для выполнения алгоритма.
•Трудоёмкость разработки, определяющая время, необходимое для разработки самого алгоритма решения задачи, его формального описания.
Вкаких единицах измерять сложность?
2
Понятие сложности алгоритма:
единицы измерения
При выборе единицы измерения необходимо помнить о том, что оценивается качество самого алгоритма, а не быстродействие процессора или эффективность реализации компиляторов, которые по одному и тому же исходному коду на языке программирования высокого уровня могут сгенерировать различный код на машинном языке, в системе команд одного и того же процессора.
Следовательно:
•Нельзя оценивать временн ую сложность в часах-минутах- секундах…: эта характеристика будет зависеть от свойств исполнителя (архитектуры процессора, его быстродействия).
•Нельзя оценивать ёмкостную сложность в байтах-килобайтах- мегабайтах…: данные в памяти компьютера могут быть
3 |
представлены в разных форматах, которые определяются |
особенностями системы программирования, реализации. |
Понятие сложности алгоритма:
единицы измерения
Абстрагируясь от особенностей представления алгоритма, характеристик исполнителя, выберем в качестве единиц измерения следующие:
• Будем оценивать временн ую сложность количестве операций, выполняемых при исполнении алгоритма (хотя, конечно, сложность различных команд в системе команд исполнителя будет разной, для их выполнения требуется в общем случае разное время).
• Будем оценивать ёмкостную сложность в количестве единиц данных (хотя, конечно, разные данные, для представления которых при выполнении алгоритма будут использоваться разные форматы, потребуют разного объема памяти при выполнении
программы, реализующей алгоритм).
4
Понятие сложности алгоритма:
единицы измерения
Чтобы более точно оценить время, которое потребуется для выполнения алгоритма, часто все операции разбивают на группы в соответствии с их сложностью, например: в одну группу включают команды пересылки, в другую – команды сравнения, в третью – операции целочисленной арифметики, в четвертую – операции над данными в формате с плавающей точкой… Для каждой группы команд получают оценку: сколько команд из данной группы будет выполняться при решении задачи с использование разработанного алгоритма. Часто оценивают только количество самых «сложных» команд (например, операций ввода и вывода).
5
Понятие сложности алгоритма:
оценка исходных данных
В общем случае количество операций и требуемая память зависят от исходных данных, т.е. являются функциями вектора
X = (x1, x2, . . . , xn)
исходных данных.
Как оценить сложность самих исходных данных? Рассмотрим два фрагмента кода:
…
Read (N); F:=1;
for I:=1 to N do F:=F*I;
Write (F);
…
6
…
S:=1;
for I:=1 to N do begin
Read(A[I],B[I]); S:=S+A[I]*B[I]; end;
Write (S);
…
Понятие сложности алгоритма:
оценка исходных данных
В общем случае количество операций и требуемая память зависят от исходных данных, т.е. являются функциями вектора
Сложность алгоритма |
X = (x1, x2, . . . , xn) |
|
. |
||
определяется |
||
|
||
значением переменнойсложность самих исходных данных? |
||
N |
ва фрагмента кода: |
|
F:=1;
for I:=1 to N do F:=F*I;
Write (F);
…
7
…
S:=1;
for I:=1 to N do begin
Read(A[I],B[I]); S:=S+A[I]*B[I]; end;
Write (S);
…
Понятие сложности алгоритма:
оценка исходных данных
В общем случае количество операций и требуемая память зависят от исходных данных, т.е. являются функциями вектора
Сложность алгоритма |
X = (x1, x2, . . . , xn) |
|
. |
||
определяется |
||
|
||
значением переменнойсложность самих исходных данных? |
||
N |
ва фрагмента кода: |
|
Сложность алгоритма определяется размерностью данных (числом элементов в векторах A и B)
F:=1;
for I:=1 to N do F:=F*I;
Write (F);
…
8
…
S:=1;
for I:=1 to N do begin
Read(A[I],B[I]); S:=S+A[I]*B[I]; end;
Write (S);
…
Понятие сложности алгоритма:
оценка исходных данных
В общем случае количество операций и требуемая память зависят от исходных данных, т.е. являются функциями вектора
Сложность алгоритма |
|
|
X = (x1, x2, . . . , xn) |
|
|
Сложность алгоритма |
|
|
. |
|
|
определяется |
|
определяется |
|
|
|
|
размерностью данных |
|
|
|
|
|
|
||
значением переменнойсложность самих исходных данных? |
|
(числом элементов в |
||||
N |
ва |
Какая оценка исходных |
|
|
векторах A и B) |
|
|
|
|
|
|
|
|
|
|
|
данных (значение или |
|
|
|
|
|
|
размерность) является |
to N do |
||
F:=1; |
|
|
более общей? |
|||
for I:=1 to N do |
|
|
|
|
|
|
Write (F); |
|
|
Read(A[I],B[I]); S:=S+A[I]*B[I]; |
|||
|
|
end; |
|
|
|
|
… |
|
|
|
|
|
|
|
|
Write (S); |
|
|||
9 |
|
|
|
|||
|
|
… |
|
|
|
|
Понятие сложности алгоритма:
оценка исходных данных и алгоритма
Исходные данные могут быть нечисловыми (графы, географические
карты, строки символов, звуки и т.д.), поэтому сложность алгоритма рассматривается как функция от некоторого интегрированного
|
числового параметра V, характеризующего исходные данные. |
|
Обозначим: |
|
T (V) – временн'ая сложность алгоритма , которая определяет время, |
|
необходимое для решения задачи с использованием алгоритма в |
|
зависимости от V; |
|
S (V) – ёмкостная сложность, которая определяет необходимый для |
|
решения задачи объем памяти в зависимости от V. |
|
Параметр V, характеризующий данные, называют иногда сложностью |
|
данных. Оба эти термина не совсем точны. |
|
Выбор параметра V (интегральной характеристики входных данных) |
10 |
зависит не только от объёма и даже вида данных, но и от вида алгоритма |
или от задачи, которую этот алгоритм решает. |
