Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
162
Добавлен:
11.02.2015
Размер:
278.71 Кб
Скачать
  1. Критерии эффективности алгоритма

При реш. практ-их задач выбор подходящего алг. вызывает определённые трудности. При этом имеются разлч-ые критерии для оценки эффект-ти алг. Мы будем рассматривать 2 осн. Критерия:

1) Временная сложность – это время выполн-ия алг., как функция от размера задачи.

2)Ёмкостносная сложность – это количество внутрн памяти, как ф-ция от размера задачи.

Df.1.: Размер задачи - это некоторое число, кот-е характеризует данную конкретную задачу. Например, размером задачи о графах может быть кол-во рёбер данного графа. Размером задачи о перемножении матриц может быть размер наибольшей матрицы и т.д.

Df.2.: Временная сложность – количество шагов, которые надо выполнить алгоритму для достижения результата на идеализированном компьютере. В качестве такого идеализированного компьютера можно рассматривать МТ. Если размер задачи есть n, то временную сложность обозначают T(n). Так, например, если T(n)=сn2, то это есть квадратная временная сложность. При этом под T(n) обычно понимают время выполнения в наихудшем случае, т.е. как наибольшее время по всем входным данным длины n. Кроме того, рассматривают ещё Тсред.(n) как среднее статистическое время выполнения по всем входным данным длины n. Нахождение Тсред.(n) является трудно разрешимой математической задачей. Замечание: при исследовании временной сложности большую роль играет скорость роста функции. Df 5.14:Пусть f(n) и g(n)-функции, определённое на множестве целых положительных чисел и принимающие действительные положительные значения. Тогда: 1) f(n)=O(g(n)), если имеются такие константы 0 и n0, что для n≥n0 выполняется условие f(n)≤cgn, 2)f(n)=Ω(g(n)), если имеются такие константы с и n0, что для каждого n≥n0 выполняется условие f(n)≥cgn. 3)f(n)=(g(n)), если имеются такие константы с1, с2, n0, что для каждого n≥n0 выполняется условие c1g(n)≤f(n)≤c2g(n). Замечание: Из записи T(n)=O(g(n)) следует, что ф-ция g(n) является верхней границей скорости роста T(n), а из записи T(n)= Ω(g(n)) => g(n) является нижней границей скорости роста T(n). При этом O(g(n)) определяет в конечном итоге размеры задач, которые можно решать этим алгоритмам. Замечание: В связи с ростом быстродействия компьютеров можно подумать, что значение и роль эффективных алгоритмов будет уменьшаться. Однако, наблюдается прямопротивоположная тенденция. Пусть, например, имеются 4 алгоритма А1, А2, А3, А4 со следующими характеристиками:

Алг.

Временная

сложность

Размер наиболш задачи

разреш-ой на современ.компе

Разм наиб. зад, разр-ой на

совр. компе в 10 раз быстрее

А1

n

S1

10S1

А2

n2

S2

3,16S2

А3

n3

S3

2,15S3

А4

2n

S4

1,3S4

Из таблицы видно, что увеличение быстродействия компьютера в 10 раз для полиномиальных алгоритмов А1, А2, А3, А4 даёт выигрыш в разы, а для экспоненциального алгоритма А4 только на 30%. Замечание: Иногда мультипликативная константа алгоритма А с меньшей скоростью роста временной сложности может оказаться намного больше, чем такая же мультипликативная константа алгоритма В с большей степенью порядка пустосложностью. Например, если алгоритм А имеет временную сложность 1000n, а алгоритм В – 2n2, то худший алгоритм В окажется лучшим для задач с размером n≤22. Поэтому бывает так, что худшие алгоритмы оказываются более эффективными для большинства задач реально встречавшимися на практике. Замечание: известны случаи, когда более эффективные алгоритмы требуют значительно больших объёмов памяти, чем менее эффективные. Это обстоятельство сводит на нет все преимущества эффективного алгоритма.