шпоры4 (1079655), страница 3
Текст из файла (страница 3)
На каждом рекурсивном вызове переданный массив делится пополам, что дает оценку для d(n) =Q (1), далее рекурсивно вызываем сортировку полученных массивов половинной длины (до тех пор, пока длина массива не станет равной единице), и сливаем возвращенные отсортированные массивы за Q (n).
Тогда ожидаемая трудоемкость на сортировку составит:
fA(n )= 2 * fA( n/2 )+ Q (1)+ Q (n)
Тем самым возникает задача о получении оценки сложности функции трудоемкости, заданной в виде (9.1), для произвольных значений a и b.
Основная теорема о рекуррентных соотношениях
Теорема принадлежит Дж. Бентли, Д. Хакен и Дж. Саксу.
Теорема.Пусть a >= 1, b > 1 - константы, g(n) - функция, пусть далее: f(n)=a*f(n/b)+g(n)
Тогда:
1)Если g(n)=O(nlog ba-ξ),ξ>0, то f(n)=Q(nlog ba)
Пример:f(n) = 8f(n/2)+n2, тогда f(n) = Q(n3)
2) Если g(n)=Q(nlog ba), то f(n)=Q(nlog ba *log n)
Пример: fA(n)= 2 * fA( n/2 )+ Q (n), тогда f(n) = Q(n*log n)
3)Если g(n) = Ω (nlog ba + e), e > 0, то f(n)=Q(g(n))
Пример: f(n)=2*f(n/2)+n2, имеем:
nlog ba = n1, и следовательно: f(n) = Q(n2)
Данная теорема является мощным средством анализа асимптотической сложности рекурсивных алгоритмов, к сожалению, она не дает возможности получить полный вид функции трудоемкости.















