Скачиваний:
10
Добавлен:
30.06.2023
Размер:
1.58 Mб
Скачать

АНАЛИЗ АЛГОРИТМОВ

Сравнительные оценки алгоритмов

При использовании алгоритмов для решения практических задач

проблема рационального выбора алгоритма.

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

Для оперирования с формальной моделью алгоритма рассматривают абстрактную машину, включающую:

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

Допущения:

каждая команда выполняется не более чем за фиксированное время; исходные данные алгоритма представляются N машинными словами по α битов каждое.

На входе алгоритма

Nα = N*α бит информации

Программа, реализующая алгоритм состоит из М машинных инструкций по β битов

Мβ = М*β бит информации.

Дополнительные ресурсы абстрактной машины на реализацию алгоритма:

Sd – память для хранения промежуточных результатов;

– память для организации вычислительного процесса (память, необходимая для реализации рекурсивных вызовов и возвратов).

При решении конкретной задачи, заданной N+М+Sd+Sy словами памяти алгоритм выполняет конечное количество «элементарных» операций абстрактной машины.

В связи с этим вводится определение:

Под трудоѐмкостью алгоритма Fa(n)

для данного конкретного входа для решения конкретной проблемы (задачи) в данной формальной системе

понимается количество «элементарных» операций (n) совершаемых алгоритмом.

Комплексный анализ алгоритма может быть выполнен на основе комплексной оценки ресурсов формальной машины, требуемых алгоритмом для решения конкретных задач.

A c1Fa (n) c2 N c3M c4Sd c5Sy

Для различных областей применения веса ресурсов ci будут различны.

Классификация алгоритмов по виду функции трудоёмкости

1.Количественно-зависимые по трудоемкости алгоритмы

Это алгоритмы, функция трудоемкости которых зависит только от размерности конкретного входа, и не зависит от конкретных значений:

Fa(n), n=f(N)

Пример:

• алгоритмы для стандартных операций с массивами и матрицами – умножение матриц, умножение матрицы на вектор и т.д.

2. Параметрически-зависимые по трудоемкости алгоритмы

Это алгоритмы, трудоемкость которых определяется конкретными значениями обрабатываемых слов памяти:

Fa(n), n=f(р1…,рi)

У таких алгоритмов на входе два числовых значения – аргумент функции и точность.

Пример:

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

3. Количественно-параметрические по трудоемкости алгоритмы

В большинстве практических случаев функция трудоемкости зависит от количества данных на входе, значений входных данных

Fa(n), n=f(N, р1…, рi)

Пример:

• алгоритмы

численных

методов,

в

которых

существует

параметрически зависимый цикл по точности и цикл количественнозависимый по размерности.

Среди параметрически-зависимых алгоритмов выделяют группу алгоритмов для которой количество операций зависит от порядка расположения исходных объектов.

Пример:

алгоритмы сортировки,

алгоритмы поиска минимума/максимума в массиве.

Асимптотический анализ функций

Цель анализа трудоёмкости алгоритмов – нахождение оптимального алгоритма для решения данной задачи.

Критерий оптимальности – количество элементарных операций, которые необходимо выполнить для решения задачи с помощью данного алгоритма.

Tзадачи

n

Sтех

Sинт

 

 

 

 

SИ

 

 

 

t

Э

 

 

 

 

 

1,

SИ min

 

SИ

SТ

 

 

 

 

 

 

 

Эm

 

 

 

SИ

 

 

mSИ

1

 

SИ

SТ

 

 

 

 

 

 

/ m mSИ SТ

 

Цель асимптотического анализа - сравнение затрат ресурсов системы различными алгоритмами, предназначенными для решения одной и той же задачи при больших объемах входных данных.

Используемая в асимптотическом анализе оценка функции трудоёмкости, называется сложностью алгоритма и позволяет определить, как быстро растет трудоёмкость алгоритма с увеличением объема данных.

В

асимптотическом

анализе

используются

обозначения

позволяющие показать скорость роста функции :

1.Оценка (тетта)

2.Оценка О (О большое)

3.Оценка (Омега)

1. Оценка (тетта)

Пусть f(n) и g(n) – положительные функции положительного аргумента, n >= 1 , тогда:

Обычно говорят, что при этом функция g(n) является асимптотически точной оценкой функции f(n), т.к. по определению функция f(n) не отличается от функции g(n) с точностью до постоянного множителя.

Примеры:

1) f(n)=4 n2+nln(n)+174 f(n)= (n2); 2) f(n)= (1) – запись означает, что f(n)

или равна константе, не равной нулю, или f(n) ограничена константой на :

f(n) = 7+1/n = (1).

Пример

Пример

Неравенства выполняются если выбрать:

n>=7 с1<=1/14 n→∞ с2>=1/2

Таким образом

(2/7)n2<=n2/2-3n<= (1/2)n2

с1 n2<=a n2 +bn+c<= c2 n2 , a,b,c>0

a n2 <= a n2 +bn+c<= (a+b+c) n2

Для произвольных a,b,c

C1=min{a, a+b+c}, C2=max{a, a+b+c}

2. Оценка О (О большое)

Запись O(g(n)) обозначает класс таких функций которые растут не быстрее, чем функция g(n) с точностью до постоянного множителя, поэтому иногда говорят, что g(n) мажорирует функцию f(n).

Например, для всех функций:

f(n)=1/n, f(n)= 12, f(n)=3n+17, f(n)=nLn(n), f(n)=6n2 +24n+77

будет справедлива оценка О(n2)

Соседние файлы в папке Литература