КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Понятие нижней границы сложности
Задачи Ьaj ветствующая этому размеру, совпадает с затратами: СЕ{а0,аг)). В силу формулы Бине (10.2) имеем lim Щ^ = Ф, при этом C E(Fn +1, F J = n. Поэтому если функция вещественной переменной f{x) такова, что C E(a 0, a i) «S/f—1, то, в силу предложе- ния 13.2, /(х) разрывна в точке ф. Мы воспользовались тем, что для любого е > 0 и любого натурального JV найдется рациональное число u/v такое, что | ф - - | < е и СЕ{и, v) =г JV. v Можно доказать, что здесь дело не в числе ф —то же самое справедливо для любого х0 > 1. Пусть 0 < s < х0 - 1. Докажем, что в рациональных точках е-окрестности VXot£ числа х0 функция ГЕ(г) не является ограниченной. Предположим противное: пусть г = — е VXot£ —рациональное число, на котором достигается максимум. Пусть частные, возникающие в процессе применения алгоритма Евклида к щ, иъ равны q ls q2,---,qn: Щ-1 = Ч1Щ + Щ+ъ i = l,2, ...,п, ип+1 = 0. Выберем 5 > 0 столь малым, что Vr>5 с VXo>s, и возьмем любое s е Q \ Z такое, что - - s < 5 (легко заметить, что - = q „sZ). Пусть I, т —такие целые, что s = —. Используя g-i,g?,...,о,,, найдем v n, v -,,
, vn gN+, для которых v;-i =aivi +vi+i, i = l,2,..., n, и vnx = 1, vn = т. Индукцией по к легко доказать, что для к = 0,1,, - - 1
" n -fc
В самом деле, для к = 0 это очевидно; остается показать, что при 0<к<п-1из (13.1) следует
" nk 1 < 5. (13.2) § 13. Нецелые размеры входа и непрерывные оценочные функции 99 Имеем откуда v n-k-2 Ч n-k- l v n-k- l +v n-k q, v n-k ---------- = ------------------------------------ = n - k -i "!------------------- > v n-k-1 v n-k v n-k-t ---------- = ------------------------------------- = qn - k -i "!-------------------- u n - k -1 u n - k u n - k -1
v n - k -2 u n - k -2 v n - k -1 u n - k -1 n - k -l u n - k -1
l un - k - l vn - k - un - kvn - k - ll u n - k -l n - k -l Неравенство (13.1) можно переписать в виде l un - k - l vn - k - un - kvn - k - ll ;g. n - v - k это неравенство влечет u n - k -l n - k -l так как un-k-1vn-k-1 > un-kvn-k. Неравенство (13.2) доказано, и индукция завершена. Следовательно, -e Vs j5 и, тем самым, -e Vx £. Но Tv\ —) > n, так как s = - v - ф Z. Это противоречит предположению , (uЛ о максимальности значения T Р —. В силу предложения 13.2 мы получаем следующее: Пусть размер каждого входа (a 0, aг) алгоритма Евклида определен как r = a0/a1 (рациональное число ^ 1), ив соответствии с этим рассматривается сложность T g(r) этого алгоритма по числу делений. Пусть функция f (x) вещественной переменной, определенная всюду на бесконечном полуинтервале I =[1, оо), такова, что T Е'(r) <f (r) при всех рациональных r ^ 1. Тогда f (x) является разрывной в любой принадлежащей I точке. Нелишне заметить, что при целочисленном размере входа условие предложения 13.1 может выполняться, если только для некоторого целого n, cг^n^c2, сложность TA(n) бесконечна. Приводившиеся ранее оценки (9.15), (9.16) для числа итераций методов деления пополам и касательных используют, фактически, нецелый размер 1 / е. Положение спасается тем, что при малом изменении е не происходит катастрофического увеличения числа итераций. Эту ситуацию можно было бы считать типичной, а пример 13.1 искусственным, если бы упомянутые возможные трудности не приводили бы иногда к реальным ошибкам. В приложении C рассмотрена известная алгоритмическая проблема, связанная с алгебраическими 100 Глава 3. Оценивание числа шагов (итераций) алгоритма числами («проблема орбит»), для которой в свое время было предложено и опубликовано неверное решение, и причина ошибки была в том, что авторы проглядели ту негативную возможность, которая показана в примере 13.1. В ситуациях, подобных описанной в примере 13.1, мы не можем использовать в оценках вида TA (x) < f (x), TA (x) = O (f (x)), TA (x) = = Θ(f (x)) в качестве функции f (x), скажем, логарифм, степенную и показательную функции, полиномы и т.д. Во многих случаях это означает, что размер как функция входа выбран неудачно. В качестве размера входа алгоритма надо, по возможности, выбирать такие величины, исходя из которых сложность алгоритма может быть выражена или оценена с помощью простых аналитических функций. Это позволит составить представление об изменении сложности при возрастании размера входа. Появление функций, поведение которых трудно себе вообразить, лишает возможности получения такой информации. 48. Функцию L(s) не обязательно выбирать целочисленной. Достаточно, чтобы ее значения были неотрицательными и каждый шаг алгоритма понижал ее значение на величину, ограниченную снизу некоторым положительным числом d. Как с помощью такой функции оценить число шагов? 49. При использовании m = Х{aг) в качестве размера входа алгоритма Евклида и его расширенного варианта для соответствующих мультипликативных сложностей справедливы верхние оценки 2m - 1 и, соответственно, вm + 3. 50. Бинарный алгоритм Евклида основан на том, что если a0 и aг четны, то нод(a 0, aг) = 2нод(-у, -у ]; если a 0 четно, но aг нечетно, то нод(a 0, aг) = нод(-^,aг 1; если a 0 нечетно, но aг четно, то нор,{a0,aг) = нод(a 0, -у- 1; если a 0 и aг нечетны, то можно перейти к вычислению нод(a 0 - aг,aг) при a 0 ^ aг и к вычислению нод(a 0, aг - a 0) при a0<aг. Вычисления заканчиваются, как только на некотором этапе вычитание даст нуль. Выполнение этого алгоритма завершается для любых исходных a0, aг, для которых a 0 ^ aг> 0. Для числа шагов алгоритма как функции от a0, aг справедлива оценка O (log a 0). Указание. По крайней мере на одном из двух последовательных шагов этого алгоритма по крайней мере одно из чисел делится на два. Задачи 51. Пусть в ходе применения алгоритма Евклида к числам а0,а1, а0>а1, возникают ненулевые остатки а2, а3,..., ап, и ап+1 = 0. Тогда an-t ^ Ft+2, t = 0,1,..., п - 1. Отсюда следует справедливость следующего предложения, обычно именуемого в литературе теоремой Ламе. Пусть в ходе применения алгоритма Евклида к числам а0,а1, а0>а1, возникают ненулевые остатки а2,а3,...,ап. Тогда аг^Рп+1. 52. (Продолжение задачи 51.) Пусть в ходе применения алгоритма Евклида к числам а0,аг, а0>а1, возникают ненулевые остатки а2, а3,...,ап. Тогда п < log(#)(a 1 + 1) + log^ л/5-1, и, как следствие, п < log^ аг + с для некоторой константы с. 53. Привести доказательство равенства (10.6). 54. Доказать оценку (10.8). Указание. В § 10 при рассмотрении примера 13.1 уже доказано, что если — е Фп, п > 2, то выполнены неравенства (10.7). Вывести отсюда, что ^- ^ a-i Р2п-з ^^,т.е.£1еФп-1,П > 2. 55. Разработать алгоритм, распознающий существование у урав ах + Ъу = с, а, Ъ, с е Z, (13.3) решения в неотрицательных целых числах, и исследовать мультипликативную сложность этого алгоритма. Указание. Уравнение (13.3) тогда и только тогда имеет решение в целых числах, когда d \ с, где d = нод(а, Ъ). 56. Если х0, Jo — одно из целочисленных решений уравнения x = Xo + kt> J = Jo-£ t ) t = 0,±l,±2,..., d = HOfl(a, b). Указание. Если х0, у0 и xt,yt —два различных решения уравнения (13.3), то х0 - xlt у0 - уг — решение уравнения —х + —у = 0. 57. Числа S;, t j, получаемые в ходе выполнения расширенного ал Указание. Индукцией по i доказать равенство 1 O ••• 1 O ~ Si 5;-J для i = 2, 3,..., п - 1 и рассмотреть определители обеих его частей. 102 Глава 3. Оценивание числа шагов (итераций) алгоритма 58. При некоторых значениях п число сравнений, затрачиваемых при бинарном поиске, не определяется однозначно исходя лишь из значения п (например, зная лишь, что п = 6, мы не можем указать точное число сравнений). Но существует бесконечно много п таких, для которых это значение определяется единственным образом и равно Llog2 n J+l. 59. Бинарный поиск места элемента у в упорядоченном массиве хг < х2 <... < хп требует Llog2(n + 1)J сравнений в лучшем случае. Как следствие, для значений п вида 2к - 1, к = 1, 2,..., и только для них число сравнений однозначно определено. Указание. Пусть м(Ю — минимум числа сравнений при бинарном поиске места элемента. Имеем /i(l) = 1, и по индукции можно доказать, что при п > 2 выполнено /Дп) > /Дп -1)и мОО =м([^^J) + L Отсюда следует, что (к(п) равно числу положительных элементов последовательности
I " -1 I 2
L 2 J' 2 Заметим, что λ ^4^ =Я(п)-1, если n ^2fc, и a^"=aW-2, если п = 2к, к > 0. Если n = 2fc - 1, fc > 0, то число положительных элементов (13.4) равно А(п); в остальных случаях в последовательности (13.4) имеется в точности один элемент вида 2к, к> 0, и число положительных элементов рассматриваемой последовательности равно А(п) - 1. 60. Опорная прямая к многоугольнику Р, проходящая через точку Q, внешнюю по отношению к многоугольнику, — это прямая, которой принадлежит по крайней мере одна вершина многоугольника Р, и при этом все вершины этого многоугольника лежат в одной полуплоскости по отношению к этой
Указание. Сначала найдем сторону n -угольника, которая видна из точки Q (см. пример 9.2). Это даст две соседние вершины n -угольника. Через точку Q и каждую из этих вершин проведем прямые. Затем сдвигаемся от каждой из этих двух вершин в сторону, противоположную другой вершине, пока увеличивается угол с вершиной Q. Задачи 61. Сложность алгоритма, схематически описанного в указании к предыдущей задаче, есть в(п). (Вместе с тем, возможно построение опорных прямых со сложностью G(log n)—для этого надо применить некий вариант бинарного поиска для нахождения каждой из тех двух вершин, через которые проходят искомые опорные прямые.) 62. Предложить имеющий сложность 0{пг + п2) по общему числу операций алгоритм построения выпуклой оболочки объединения двух выпуклых многоугольников, имеющих, соответственно, пг и п2 вершин, считая пг + п2 размером входа. Указание. Один из известных алгоритмов этого построения основывается на том, что, взяв некоторую точку Q, принадлежащую первому многоугольнику, мы, в том случае, когда эта точка принадлежит и второму многоугольнику, можем путем слияния двух упорядоченных последовательностей получить последовательность всех вершин обоих многоугольников, упорядоченных по величине углов, под которыми видны эти вершины по отношению к какой-нибудь фиксированной прямой, проходящей через Q. После этого, как в алгоритме Грэхема (см. пример 3.1), можно удалить вдавленные вершины. Если Q не принадлежит второму многоугольнику, то проведем из Q две опорные прямые ко второму многоугольнику. Пусть S и Г — вершины второго многоугольника, через которые проходят опорные прямые (если опорная прямая проходит через несколько вершин, то из них выбирается наиболее удаленная от Q). Исключим из рассмотрения все принадлежащие треугольнику QST вершины второго многоугольника, кроме вершин S и Г (рис. 17). Оставшиеся вершины рассматриваем в порядке возрастания углов; сливаем, как и в первом случае, две упорядоченные последовательности, а затем удаляем вдавленные вершины. Рис. 17. Этапы построения выпуклой оболочки объединения двух выпуклых многоугольников. 63. Верно ли, что сложность по числу сравнений сортировки массива из п элементов бинарными вставками есть n log2 n + 0(l)? 64. Обратимся к известной школьной задаче: имеются Зт монет, из которых одна фальшивая (более легкая); с помощью чашечных весов без гирь надо за т взвешиваний определить фальшивую мо- 104 Глава 3. Оценивание числа шагов (итераций) алгоритма нету. Сравнение по весу двух групп по Зт г монет сужает диапазон последующего поиска до 3 m _1 монет, поэтому в итоге будет затрачено т взвешиваний, как и требуется. Для числа монет п = Зт мы имеем алгоритм, использующий log3 п взвешиваний. (Здесь мы рассматриваем п в качестве размера исходной группы монет.) Можно обобщить этот алгоритм на произвольное число монет п так, что число взвешиваний будет ограничено близкой к log3 п функцией: сравниваем по весу две группы, в каждой из которых по [п / 3] монет, это сужает диапазон дальнейшего поиска до не превосходящего Гп / 31 числа монет; затем действуем тем же способом. Получить верхнюю границу [log3 и] для числа взвешиваний сопоставлением размеров групп с элементами последовательности 1,3,9,... подобно тому, как при анализе сортировки фон Неймана количество упорядоченных сегментов сопоставлялось с элементами последовательности 1,2,4,... 65. Изменим алгоритм поиска фальшивой монеты (задача 64): бу а) Показать, что этому алгоритму может потребоваться число б) Получить верхнюю границу Llog3 n j + 2 для числа взвешива 66. Вернемся к начальному варианту алгоритма определения фальшивой монеты (задача 64). При некоторых значениях п количество взвешиваний не определяется однозначно исходя лишь из значения п (например, при п = 10), хотя и существует бесконечно много п таких, для которых это значение определяется единственным образом. 67. Каждый день бизнесмен дает черту одну монету, и в обмен получает любой набор монет по своему выбору, но меньшего достоинства. Видов монет конечное число; менять или получать деньги в другом месте бизнесмен по условиям сделки не может. Если у бизнесмена не остается монет достоинством выше минимального, он проигрывает. На таких условиях рано или поздно бизнесмен терпит поражение, каков бы ни был первоначальный запас его монет. 68. Имеется конечная последовательность нулей и единиц. Раз Задачи 69. Алгоритм, приведенный в примере 11.1, затрачивает O (log n) шагов. 70. Вернемся к алгоритму кратных карт (пример 11.5). Если изначально все вопросы имели большие единицы кратности и обучаемому удалось дать ряд правильных ответов на один из вопросов, понизив его кратность до единицы, причем этого ему удалось добиться на фоне плохих ответов на все остальные вопросы, то дальнейшее рассмотрение этого вопроса будет как бы отложено до тех пор, пока обучаемый не усвоит еще по крайней мере один вопрос, сведя и его кратность к единице. Алгоритм препятствует слишком быстрому изъятию из рассмотрения отдельных вопросов. 71. Найти число операций прибавления единицы к г при выполнении алгоритма для заданного натурального п г:=0; for i = l to n do for j = i + 1 to n do for k = i+j- 1 to n do r:= r + l od od od (иначе: определить, чему равно г). Формальное построение и последующее столь же формальное вычисление суммы по аналогии с проделанными в примере 12.1 привело бы к неправильному ответу (причина указывалась в § 12 в замечании к примеру 12.1). 72. Исследовать зависимость от целого п > 0 общего числа ариф Z:=0; for i = l to n do for j = l to Llog2 i J do Z:=Z + i + j od od 73. Исследовать зависимость от n > 0 общего числа арифметиче Z:=0; for i = l to La/hJ do z:=i; while z > 1 do Z:= Z + 1; z:= | od od (значения z не обязательно целые). Глава 4 Нижняя граница сложности алгоритмов некоторого класса. Оптимальные алгоритмы Хорошо известно, что существуют алгоритмически неразрешимые задачи. Но если даже задача алгоритмически разрешима, то возможно, что сложность каждого из алгоритмов ее решения будет в определенном смысле достаточно высокой. Пример 14.1. Рассмотрим задачу поиска наименьшего элемента с помощью сравнений в массиве длины п. Для того чтобы иметь основания отсеять элемент массива как заведомо не являющийся наименьшим, необходимо, чтобы этот элемент участвовал хотя бы в одном сравнении и оказался большим. Мы должны отсеять п — 1 элемент, а в каждом сравнении ровно один элемент оказывается большим. Это означает, что потребуется не менее п — 1 сравнения. Введем основное понятие этой главы. Определение 14.1. Пусть.s4 — класс алгоритмов решения некоторой задачи. Пусть принято соглашение о том, в чем измеряются затраты алгоритмов и что считается размером входа, и пусть п —обозначение размера входа. Функция f(n) называется нижней границей сложности принадлежащих.s4 алгоритмов, если для сложности ТА ( п ) любого Ае .s4 мы имеем ТА (п ) ^ f(n) при всех допустимых значениях размера входа п. (Если используются несколько параметров п1,п2,...,пк размера входа, то нижняя граница — это, соответственно, функция аргументов п1, п2,..., пк .) Это определение имеет смысл как для сложности в худшем случае, так и для сложности в среднем. Далее в примерах этого и следующего параграфов мы рассматриваем сложность в худшем случае; к сложности в среднем мы вернемся в § 17. Всюду будет рассматриваться вре- § 14. Понятие нижней границы сложности менная сложность. Мы можем сформулировать обнаруженный при рассмотрении примера 14.1 факт следующим образом. Предложение 14.1. Функция /(п) = п - 1 является нижней границей сложности алгоритмов поиска наименьшего элемента массива длины п с помощью сравнений. (Иными словами, не существует такого алгоритма выбора наименьшего элемента массива длины п c помощью сравнений, сложность которого хотя бы для одного значения п была меньше чем п-1.) В роли класса .s4 здесь выступает класс алгоритмов поиска наименьшего элемента массива с помощью сравнений. Если бы помимо сравнений были допустимы какие-то еще операции, то, возможно, п-1 уже не годилось бы в качестве нижней границы. Например, если было бы разрешено пользоваться операцией выбора наименьшего из нескольких элементов, то задачу можно было бы решить одной операцией. Пример 14.2. Рассмотрим класс алгоритмов сортировки с помощью сравнений. Если алгоритм работает для массивов любой длины, то, разумеется, можно рассмотреть этот алгоритм применительно к массивам некоторой фиксированной длины п. Любая сортировка с помощью сравнений может быть для каждого конкретного п изображена бинарным деревом. В корне и внутренних вершинах находятся выполняемые сравнения, в листьях выписаны результаты сортировки. Априори в исходном массиве возможен любой порядок элементов, поэтому дерево будет иметь п\ листьев. Если взять, например, сортировку простыми вставками, то при п = 2 ее можно изобразить деревом, представленным на рис. 18а. При п = 3 дерево принимает вид, показанный на рис. 18б. Сложность в худшем случае для каждого п равна высоте соответствующего дерева (напомним, что высотой листа называется число ребер в том единственном пути, который ведет от корня дерева к этому листу; высотой дерева называется максимум высот его листьев). Если высота некоторого бинарного дерева равна а, то, очевидно, оно содержит не более 2h листьев (максимальное возможное число листьев достигается в случае полного бинарного дерева, которое имеет ровно 2h листьев). Поэтому если Г(п)—это временная сложность некоторой сортировки сравнениями, то должно выполняться неравенство 2г("^п!, 108 Глава 4. Нижняя граница сложности. Оптимальные алгоритмы а) Гx-l <x2Л 1/ \0 Сx2 <x3~Л 1/ \0 б) Г x г <x2^Л xъ < x j J 1/ \0
xltx2,x3 Сxг <x3~Л \/ \0 Сx3 <x2"\ x2,xt,x3 1/ \0 x 1, x 3, x 2 x3,xltx2 x3,x2,xl x2,x3,xl Рис. 18. Дерево сортировки простыми вставками для случаев а) n = 2 и б) n = 3. откуда T (n) ^log2 n!; так как значение T (n)—целое число (мы измеряем сложность числом сравнений), то T{n) ^ [log2 n\]. Доказанное можно сформулировать в виде предложения. Предложение 14.2. Функция f (n) = [log2 n\] является нижней границей сложности алгоритмов сортировки массивов длины n c помощью сравнений. Отсюда можно вывести, например, следующее предложение. Предложение 14.3. Пусть сложность T{n) некоторой сортировки по числу сравнений не превосходит nlog2n + cn, где c —некоторая константа. Тогда T{n) = n log2 n + O{n) и, как следствие, T{n)~ ~ n log2 n. Доказательство. В силу предложения 14.2 и формулы (10.12) для Это позволяет, например, заключить, что для сложности по числу сравнений сортировки фон Неймана имеет место оценка T vN(n) = = n log2 n + O{n) и асимптотическое равенство T vN(n) ~ n log2 n, — мы уже видели, что TvN < n\log2 n\<n log2 n + n. § 15. Оптимальные алгоритмы Добавим, что никакая сортировка не может иметь сложность T{n) по числу сравнений, допускающую оценку a n log2 n + o (n log n), a < 1 (в частности, оценку a n log2 n + O{n)), —это следует из того, что для всех достаточно больших n выполнено T{n)>n log2 n - 2n. Пример 14.3. Обратимся к задаче поиска места элемента в упорядоченном массиве длины n. Предложение 14.4. Функция f (n) = [log2(n + 1)1 является нижней границей сложности алгоритмов поиска места элемента в упорядоченном массиве длины n c помощью сравнений. Доказательство. Любой алгоритм поиска места элемента в упо Пример 14.4. Рассмотрим задачу вычисления an с помощью умножений (пример 4.2). Будем считать n размером входа. Затраты будем измерять количеством умножений. Предложение 14.5. Функция f (n) = [log2 n ] является нижней границей сложности алгоритмов вычисления an с помощью умножений. Доказательство. На каждом этапе алгоритма мы имеем вычисленный набор степеней am\am\...,amk\ (14.1) при этом на начальном этапе набор состоит из одного элемента a1.
Дата добавления: 2014-01-11; Просмотров: 584; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |