Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции - Структуры и алгоритмы компьютерной обработки данных / 1.Введение в анализ алгоритмов. Понятие сложности алгоритмов. Классы сложности алгоритмов

..doc
Скачиваний:
111
Добавлен:
06.02.2015
Размер:
2.97 Mб
Скачать

Анализ алгоритмов

  • Задачи анализа алгоритмов

  • Понятие алгоритма

  • Понятие алгоритмической задачи

  • Понятия временной и объемной сложности алгоритма

  • Порядок роста функции и его свойства

Анализ алгоритмов

Цели

  • Оценить качество алгоритмов с помощью количественных критериев

  • Сравнить различные алгоритмы для решения заданной алгоритмической задачи

Алгоритм - понятное и точное предписание исполнителю совершить последовательность действий, направленных на достижение поставленной цели.

Алгоритм имеет исходные данные (вход алгоритма) и выдает некоторый результат.

Алгоритмическая задача

  • входные данные

  • необходимый результат.

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

Пример: сортировка последовательности

Решение: Алгоритм сортировки прямыми вставками

For j:=2 to N do

begin

{добавить a[j] к отcортированной части массива A[1..j-1]}

k:=A[j];

i:=j-1;

while (i>0) and (A[i]>k) do

begin

A[i+1]:=A[i];

i:=i-1

End;

A[i+1]:=k

End

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

  • Временная сложность алгоритма — количество элементарных шагов, которые он выполняет.

  • Объемная сложность алгоритма количество оперативной памяти, необходимой для его выполнения.

for j:=2 to N do

begin

k:=A[j]; i:=j-1;

while (i>0) and (A[i]>k)do

begin

A[i+1]:=A[i]; i:=i-1

end;

A[i+1]:=k

end

a

b

c

d

e

N

N-1

Σtj

Σ(tj-1)

N-1

Сложность сортировки

  • Лучший случай (tj=1) T(n) = a1n+b1

  • Худший случай (tj=j) T(n) = a2n2+b2n+c2

  • Средний случай (tj=j/2) T(n) = a3n2+b3n+c3

Порядок роста функции

Оценка сверху

Оценка снизу

Классы сложности алгоритмов

Труднорешаемые задачи

  • Не найден полиномиальный алгоритм.

Класс NP – задачи, проверяемые за полиномиальное время.

Примеры труднорешаемых задач

  • Задача о рюкзаке

Задан набор n предметов с массами mi и стоимостями ci. Максимальная масса рюкзака M. Выбрать подмножество предметов так, чтобы Σ mi M и Σ сimax.

  • Задача коммивояжера

Имеется n городов, nxn матрица A = (aij) содержит попарные расстояния между городами. Найти замкнутый маршрут, содержащий все города по одному разу, и имеющий минимальную длину.