Анализ алгоритмов Задачи анализа алгоритмов Понятие алгоритма Понятие алгоритмической задачи Понятия временной и объемной сложности алгоритма Порядок роста функции и его свойства Анализ алгоритмов Цели Оценить качество алгоритмов с помощью количественных критериев Сравнить различные алгоритмы для решения заданной алгоритмической задачи Алгоритм - понятное и точное предписание исполнителю совершить последовательность действий, направленных на достижение поставленной цели. Алгоритм имеет исходные данные (вход алгоритма) и выдает некоторый результат. Алгоритмическая задача входные данные необходимый результат. Алгоритм называют правильным, если на любом допустимом входе он заканчивает работу и выдает результат, удовлетворяющий требованиям задачи. Пример: сортировка последовательности Решение: Алгоритм сортировки прямыми вставками 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 a N begin k:=A[j]; i:=j-1; b N-1 while (i>0) and (A[i]>k)do c Σtj begin A[i+1]:=A[i]; i:=i-1 d Σ(tj-1) end; A[i+1]:=k e end 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 и Σ сi → max. Задача коммивояжера Имеется n городов, nxn матрица A = (aij) содержит попарные расстояния между городами. Найти замкнутый маршрут, содержащий все города по одному разу, и имеющий минимальную длину.