Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
abramov_s_a_lekcii_o_slozhnosti_algoritmov.doc
Скачиваний:
136
Добавлен:
11.05.2015
Размер:
2.74 Mб
Скачать

§ 10. Качество оценок

83

получаются оценки числа итераций для классических методов (ал­горитмов) приближенного решения уравнений. Вспомним две такие оценки.

Пусть корень уравнения /(х) = 0 разыскивается на отрезке [а,Ъ], на котором функция /(х) непрерывна, /(а)/(Ь) «SO. Ошибка не долж­на превышать данного е > 0. При е^О и фиксированных f(x),a,b число итераций метода делений пополам есть

log,- + 0(1). (9.15)

Метод же Ньютона (касательных) требует

О flog log -) (9.16)

s

итераций при соблюдении ограничений на функцию /(х), обеспечи­вающих сходимость метода.

§ 10. Качество оценок

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

Пример 10.1. В примере 9.1 для сложности ТЕ{аг) по числу деле­ний алгоритма Евклида мы легко получили верхнюю оценку аъ а за­тем, после некоторых усилий, пришли к логарифмической верхней оценке (9.6). Отвлекаясь от значений констант, перейдем от (9.6) к

rE(a1) = 0(loga1). (10.1)

Нами пока не доказано, что оценка (10.1) является точной, и, как следствие, что не верна, скажем, оценка O{\f\oga1) или CKlogloga^) и т.д. Чтобы доказать точность (10.1), достаточно подобрать для ал­горитма Евклида последовательность входов

{а^,а^), (а™,а™), ...

таких, что последовательность а^ (последовательность размеров вхо­да) неограниченно возрастает и СЕ(,а^\ а^) = f2(loga^n)) при п—><*>; тогда, очевидно, будем иметь ТЕ(а^) = U(loga^).

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

84 Глава 3. Оценивание числа шагов (итераций) алгоритма

UWbFJ, п = 0,1, ..., где Fq,^,^, ... —числа Фибоначчи, определяе­мые равенствами F0 = О, Fx = 1 и правилом «каждое следующее чис­ло равно сумме двух предыдущих», т. е. рекуррентным соотношением Fn+2 = Fn+i +Fn. Из определения чисел Фибоначчи следует, что при­менение алгоритма Евклида к Fn+1,Fn при п ^ 1 требует п делений (все частные будут равны единице), поэтому CE(Fn+1,FJ = п.

По индукции доказывается, что для всех неотрицательных п спра­ведлива формула Бине:

J7 -_к(фл_(_ф)-л) (Ю.2)

V5

где

ф= 1 + A/g = 1,61803...

(деление отрезка в отношении 1 : ф называют золотым сечением). Так как ф > 1, то из (10.2) получаем

0" = A/5Fn(l+o(l)), (10.3)

и, поскольку log0(1 +о(1)) = о(1), с помощью логарифмирования (10.3) по основанию ф имеем

СеС^п+i» Рп) = п = log<p Fn + 0(1) = n(logFn),

откуда следует, что оценка (10.1) точная. Мы докажем более сильное утверждение:

ТЕ{а1)>^\о%фа1+Г, (10.4)

где у— некоторая константа. Это вместе с (10.1) даст

rE(a1) = e(loga1). (10.5)

Приступая к доказательству, мы перейдем от функции CE(a0,ai), имеющей два аргумента, к функции одного аргумента. Каждому вхо­ду (an, сь), an ^ сь > 0, мы сопоставим рациональное число г = — ^ 1, которое однозначно определяет число шагов алгоритма Евклида для

an, а-.. (Пусть - = ^, апиа, взаимно просты, an = uan, сь = ua-i; то- uj i Q^ at

гда остатки a2, a3, ... и a2, a3, ..., возникающие в ходе применения ал­горитма Евклида к а0,аг и соответственно к а0,аг, отличаются лишь множителем и.) Будем обозначать это число шагов через С'Е{г). Таким

образом, если г = ^, то С'(г) = CE(a0,ai).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]