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

§ 2. Асимптотические оценки (формализм)

21

этом выполнена оценка /(n) = 0(g(n)), то эта оценка точна в соот­ ветствии с определением 2.3. □

Для рассматриваемой сложности алгоритма пробных делений не верна, скажем, оценка O(logn), потому что для этой сложности оцен­ка СКл/Н) является точной и в то же время logn = o(v^).

Нелишним будет заметить, что сложность алгоритма пробных де­лений допускает оценки 0{п), 0{пь), 0(nlogп) и т.д., хотя, разумеет­ся, эти оценки являются более грубыми в сравнении с 0{л/п). Еще раз подчеркнем, что оценка /(n) = 0{g{n)) есть асимптотическая верхняя оценка, равно как оценка /(п) = ВДп)) — асимптотическая нижняя1. Как, например, из Z < 5 и т < 100 нельзя вывести, что Z < т, так и из /(n) = 0{п2), g{n) = 0(,п3) нельзя вывести, что хотя бы для достаточно больших п выполняется /(n) < g{n). Оценка вида ТА{п) = 0{g{n)) (или SA{n) = 0{g{n))) подходит для того, чтобы «похвалить» алгоритм А, т. е. охарактеризовать его сложность как достаточно низкую (речь идет лишь об оценках вида 0{g{n)), а не о более тонких оценках, включающих символ О и имеющих вид, подобный (2.1)), но не для того, чтобы «раскритиковать» его — для таких целей скорее подой­дет оценка вида ТА{п) = fi(h(n)). Зная, например, что сложность по числу обменов для сортировки выбором есть 0{п), а для сортировки простыми вставками — Г2(п2), мы обоснованно заключаем, что для достаточно больших п первая сложность меньше второй.

Оценки вида ТА{п) = Q{g{n)), соединяющие в себе оценки ТА{п) = = 0{g{n)) и ТА{п) = fi(g(n)), в соответствующих ситуациях подходят и для характеризации сложности как сравнительно низкой, и, наобо­рот, как сравнительно высокой2.

При всем этом, иногда можно услышать сообщения о новых ал­горитмах, сопровождаемые рассуждениями в духе следующего (под­разумевается, что п — размер входа): «Лучший из известных ранее алгоритмов решения этой задачи требует 0(п3) операций, а пред-

В книге [6] отмечено, что положение с символом О схоже с тем, которое возник­нет, если кто-нибудь «вместо слов „меньше чем“ начнет писать =М, например, так: 3=М(5). На вопрос: „Что значит М(5)?“ — он должен ответить: „Нечто, что мень­ше, чем 5“. Таким образом, он быстро привыкает читать М как „нечто, что меньше, чем“, приближаясь к тем самым словам, которые употребляем мы, вводя соотношение /(s)=0O(s))».

2 в- и П-нотации вошли в литературу по вычислительной сложности алгоритмов с появлением статьи Д. Кнута [52], в которой автор, в частности, пишет о бессмыслен­ности нижних оценок вида 0(/(гг)) и о невозможности использования оценок такого рода как оценок сложности при сравнении алгоритмов. В [52] отмечается также, что П-нотация использовалась ранее в работах Э.Ч.Титчмарша, известного математика первой половины XX века.

22 Глава 1. Сложности алгоритмов как функции числовых аргументов

лагаемый нами алгоритм — лишь 0(п). Таким образом, достигнуто улучшение на два порядка по числу операций». Но информация, со­держащаяся в первой из этих двух фраз, не дает достаточных основа­ний для сделанного заключения. Более того, на основе этой информа­ции вообще нельзя сказать, какой из двух алгоритмов — известный ранее или новый —требует меньше операций при больших п, ведь речь идет лишь об оценках сверху, и возможно, что первая из них может быть улучшена.

Если про оценку 0(,g(n)) известно, что она точная, то это рас­ширяет возможности ее использования. Допустим, что нам известен алгоритм распознавания простоты числа п, имеющий мультиплика­тивную сложность 0(logd п) при некотором d > 0. Тогда мультиплика­тивная сложность этого алгоритма для бесконечного множества зна­чений п (но, может быть, не для всех п) будет меньше, чем муль­типликативная сложность алгоритма пробных делений, и для этого вывода достаточно того, что сложность алгоритма пробных делений допускает точную оценку 0(л/п).

В тех случаях, когда рассматриваются два или более параметров размера входа, мы можем по-прежнему использовать асимптотиче­ские оценки вида Q{g{n1,n2)), где под знаком в расположена функ­ция двух переменных п1, п2, причем п1, п2 > °°; определение в легко модифицируется на случай двух и большего числа переменных:

f{n1,n2) = Q{g{n1,n2)) <^>

"^ 3CbC2;N>0 Vni>2>N CilgCnx, n2) | s= |/(nl5 n2) | s= c2\g(nlt n2) |. (2.4)

То же самое сП, Оио. При этом, если имеет место оценка f{n1, п2) = = 0{g{n1,n2)), то мы назовем ее точной, коль скоро неверно, что f{n1,n2) = o{g{n1,n2)).

Утверждение, что /(п) и g{n) асимптотически эквивалентны, за­писываемое как /(n) ~g(n), означает, как известно, что /(n) = g{n) + + o(g(n)) = g(n)(l + o(l)). Утверждение, что /(n) ~ g{n), является, очевидно, более сильным, чем утверждение, что /(n) = 6(g(n)). За­метим кстати, что из формул (2.1) следует

%{п)~п2, %{п)~\п2 (2.5)

и1 наоборот. Из (2.5) следует только, что

(например, ^(п) = п2 + О(п) = п2\ + о^ = п2(1 +о(1))), но не

что

2

fI (n) = n2+o(n2), f,(n) = in2+o(n2),

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