КАТЕГОРИИ: Архитектура-(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) |
Линейная сводимость
Задачи 12 2. Игра «Ханойские башни». К горизонтальной доске приделаны три вертикальных столбика. На первый нанизано n дисков, диаметры которых убывают вверх (рис. 21). Требуется, перекладывая диски
Рис. 21. Игра «Ханойские башни». Исходное положение.
одному, расположить их в прежнем порядке на третьем столби- Ограничение состоит в том, что больший диск никогда не может располагаться над меньшим. Разработать рекурсивный алгоритм решения этой задачи и определить его временную сложность по числу перекладываний дисков. 123. (Продолжение предыдущей задачи.) Требуется определить временную сложность алгоритма перекладывания дисков в игре «Ханойские башни» при условии, что затраты на перекладывание со столбика на столбик i -го по величине диска равна а) i; б) i 2; в) У. Y2A. Сформулировать правило нахождения частного решения рекуррентного уравнения ady{n) + ad-iy{n - 1) +... + a0y(.n - d) = f (n) для случая, когда f (n) принимает постоянное значение c. 125. Пусть функция f (n) определена для всех n е N+ и пусть a — ненулевое число. Любое определенное для всех n eN решение рекуррентного уравнения y (n) - ay{n - 1) = f (n) имеет вид y(n) =
n = an (y (0) + 2
k =i \1Ь. Для чисел Фибоначчи выполнено равенство £ Fi = Fn+2 - 1, n= 1,2,3, i = l Указание. Решением рекуррентного уравнения y (n)- y (n - 1)= Fn, y (0) 1, является y (n)= Fn +2. 182 Глава 6. Рекуррентные соотношения и сложность алгоритмов 127. Верно ли, что для любого полинома р{п) найдется полином q{n) (оба с вещественными коэффициентами) такой, что q (n + l)- — q{n) =р{п), и если да, то как различаются степени полиномов р{п) и q{n)? 128. Найти множество всех вещественных последовательностей, удовлетворяющих рекуррентному уравнению у(п + 1) + у{п) = 0. 129. Вернемся к алгоритму V Rec из § 24. Пусть 1 s= k s= п. Сколько раз при построении множества Vn будет выполнено построение множества Vk? Ответ. Fn_k. 130. Найти общее решение рекуррентного равенства (24.11) при к = 1. Найти частное решение, удовлетворяющее условию у(0) = 0. (При к = 1 рекурсия (24.10) не приводит к избыточным вычислениям значений U.) 131. Назовем перестановку гъг2,..., z „ чисел 1,...,п критической длины п, если на ней достигается максимум числа сравнений, требуемых рекурсивной сортировкой слияниями для массивов длины п. Пусть п > 1, а хъ...,X| n/ 2j и Уг> ■■■>У\п/2\ суть некоторые критические перестановки длины ^ и ^. Тогда числа z1,z2, ■■■,zn, равные, соответственно, 2хъ..., 2 x L n/ 2J, 2уг - 1,..., 2у[п / 21 - 1 образуют критическую перестановку длины п (рис. 22).
Рис. 22. Случай, когда при п = 7 для сортировки слияниями потребуется максимальное число сравнений. 13 2. Как выглядят критические перестановки длины 6, 7, 8 и 9, полученные с помощью предложенного в предыдущей задаче подхода? Задачи 133. Имеет место равенство (25.16). 134. (Продолжение задачи 131, в которой фактически в рекурсивной форме описан алгоритм построения некоторой критической перестановки длины п.) Исследовать сложности описанного алгоритма построения некоторой критической перестановки длины п по числу умножений на два и по числу вычитаний единицы. Предложить нерекурсивный алгоритм (например, можно рассмотреть последовательное построение критических перестановок, длины которых суть соответственно 1, 2,..., п) и исследовать его сложности по названным операциям. 135. Чему равно наименьшее п вида 2к, для которого число сравнений при рекурсивной сортировке слияниями превосходит [log2 n il? 136. Оценка (25.22) является следствием оценки T RS(n) = A(n) + + А*(п)-2. 137. Для сложности алгоритма бинарного поиска места элемента в упорядоченном массиве обосновать рекуррентное неравенство (1, еслип = 1, TnsM^ г\п\Л tbsIIj\)+1> еслип > 1, не прибегая к известному явному выражению для T BS(n). Из этого рекуррентного неравенства получить оценку для T BS(n). 138. Указать алгоритм построения пересечения п полуплоскостей щх + Цу + с^О, i = l, 2,..., п, имеющий временную сложность G(n log n) по общему числу операций. Указание. Пересечением будет выпуклый многоугольник (возможно, неограниченный). Опираясь на алгоритм Шеймоса—Хоя (задача 14), использовать стратегию «разделяй и властвуй». 139. По сравнению с теоремами 26.1, 26.2 предложения 25.1, 25.2 (О, если п = 1, Kill) +K\l]) +LP^' еслип > 1, при If (П) = l0g2 П и If (n) = n log2 n. 184 Глава 6. Рекуррентные соотношения и сложность алгоритмов 140. Рекуррентное неравенство вида (26.1) может иметь более одного решения, однако во всех трех случаях, предусмотренных формулой (26.2), по крайней мере для одного решения соответствующая оценка из (26.2) является точной. 141. Обобщить предложенную в этой главе технику решения рекуррентных неравенств на случай, когда задача с размером входа п разбивается на s задач, размер каждой из которых — это - или -, где s — некоторое натуральное число ^2. Как будут выглядеть теоремы 26.1, 26.2 в этом случае? 142. Доказать соотношение (27.10). Указание. Рассмотреть количество умножений чисел битовой длины 1 в процессе применения алгоритма Карацубы к входу размера т и показать, что G(m) является для него нижней оценкой. 143. а) Для любого е > 0 можно указать JV > 0 такое, что ЗГкм(т) < б) Для любого е > 0 можно указать JV > 0 такое, что 7TSt(n) < < rSt(2 n) < (7 + e) T St(n) при всех n^N. Указание. См. (27.10), (27.8) и, соответственно, (27.12). 144. Теоремы о рекуррентных неравенствах часто формулируются f(n)^wf(-) +cnd, s где w,c,d — константы, причем w > 0, о 0, d ^ 0. Пусть при этом /(п) не убывает на каждом отрезке [ s ^ + l. s *]. Тогда (o(nd log n), если d = log sw, f(n) = \0{nd), если d> log sw, [о(п1о&№), если d< log sw. Доказать эту теорему. (Заметим, что в условии теоремы 26.1 нет требования неубывания /(п) на каждом отрезке [sk + l,sk], но зато требуется, чтобы, например, неравенство (26.1) выполнялось для всех п, а не только для п вида 2fc.) Глава 7 Сводимость В этой главе мы рассматриваем только временную сложность алгоритмов и считаем, что размер входа — это неотрицательное целое число. Ниже в сопоставляемых друг с другом вычислительных задачах подразумеваются преобразования каких-то математических объектов, представляемых одинаково для всех задач, участвующих в сопоставлении. Размер входа для алгоритмов решения рассматриваемых задач тоже должен определяться единообразно. При сравнительном исследовании задач затраты на выполнение вычислений измеряются количеством операций из одного и того же набора (например, арифметических операций, битовых операций и т.д.). Определение 28.1. Пусть Р и Q —две вычислительные задачи. Если любому алгоритму AQ решения задачи Q можно сопоставить такой алгоритм АР решения задачи Р, что Г, {п) = 0{ТА (п)), (28.1) то говорят, что задача Р линейно сводится к задаче Q, и пишут P^Q. В специально оговариваемых случаях утверждение Р ^ Q предполагает, что рассматриваются лишь такие алгоритмы AQ, сложности которых удовлетворяют некоторым фиксированным условиям. Слово «линейно» в этом определении означает лишь то, что сложность получаемого алгоритма АР не является, скажем, квадратом, кубом и т.д. сложности алгоритма AQ. Возможное присутствие условий (ограничений) на сложности алгоритмов решения задачи Q облегчает или просто делает возможным доказательство (28.1). В то же время, предполагается, что эти ограничения отсекают нерациональные алгоритмы; тогда смысл отношения Р ^ Q состоит в том, что каж- Глава 7. Сводимость дому приемлемому («хорошему») алгоритму решения задачи Q мы можем сопоставить алгоритм решения задачи Р такой, что выполнено (28.1). Пример 28.1. Будем рассматривать задачи умножения М и возведения в квадрат S неотрицательных целых чисел, заданных в двоичной системе, считая размером входа в первой задаче максимальную из битовых длин чисел п 1, п2, а во второй — битовую длину данного числа п (будем обозначать этот размер через т), в качестве затрат будем рассматривать битовые затраты. Из равенства п 2 = п-п следует, что S^M, так как это равенство дает требуемый определением 28.1 алгоритм. Дает ли равенство (n1 + n2 )2 -n 21 -n 22 основание считать, что М ^S? Битовая длина числа п 1 + п 2 может оказаться равной т + 1. Если бы для возведения в квадрат использовался некоторый чрезвычайно нерациональный алгоритм, имеющий, скажем, сложность m!, то соответствующий алгоритм умножения имел бы сложность порядка ( т + 1)!. Легко видеть, что равенство (т + 1)! = 0(т!) места не имеет. Можно пытаться определить умножение через возведение в квадрат как-то иначе, но можно и не отказываться от формулы (28.2): при установлении линейной сводимости обычно считается, что сложность любого приемлемого алгоритма выполнения какой-либо мультипликативной арифметической операции (умножения, возведения в квадрат, деления и т.д.) удовлетворяет, хотя бы для всех достаточно больших т, условиям 1) Т (т)^т, 2) Т (т ) не убывает при возрастании т, 3) Г(2т) «S 4Г(т) (условие 3 отсекает алгоритмы умножения, сложность которых растет быстрее чем т2). Приняв, что сложность алгоритма A s удовлетворяет этим условиям, мы имеем ТА (т + 1) «S ТА (2т) «S 4 ТА (т), что дает ТА (m) = 0(TA (т)) для описанного с помощью (28.2) алго-ритма умножения. Мы используем здесь то, что операции вычитания и деления на 2 имеют сложность 0(т), и то, что ТА (т) ^ т по усло- вию 1. Таким образом, если принимаются ограничения 1—3 для сложностей алгоритмов решения задачи S, то М ^ S. § 28. Линейная сводимость Пример 28.2. Из формулы (23.2) нельзя сделать вывода, что задача построения транзитивно-рефлексивного замыкания графа с п вершинами (или, в другой терминологии, транзитивно-рефлексивного замыкания булевой матрицы порядка п) линейно сводится к задаче умножения двух булевых матриц порядка п, так как само число умножений матриц в этой формуле существенно зависит от п. Но мы покажем, что соответствующая линейная сводимость имеет место, если принять, что для любого из рассматриваемых алгоритмов умножения булевых матриц порядка п его сложность В(п) (примем это упрощенное обозначение) удовлетворяет, хотя бы для всех достаточно больших п, условиям 1) В(1) = 1, 2) В(п) не убывает при возрастании п, 3) 4 B (n)^ B (2 n)^8 B (n). Комментарий к условию 3. Неравенство В (2п) s= 8В(п) отсекает те алгоритмы умножения булевых матриц, сложность которых растет быстрее чем п3. Алгоритм должен построить п2 элементов матрицы-произведения, поэтому его сложность не может расти медленнее чем п2, и в соответствии с этим в ограничения включается неравенство 4В(п)^В(2п). Для булевой матрицы X порядка п будем, как и прежде, обозначать ее транзитивно-рефлексивное замыкание через X*. Пусть G — ориентированный граф с п вершинами и С —его матрица смежности. Предположим вначале, что п—четное число: п = 21. Разобьем множество вершин V = { v 1, v 2,..., v2l} графа G на два подмножества У 1 = { v 1, v 2,..., V;} и V2 = { v ;+1, vl+2,...,v2l}, а множество ребер графа G — на четыре подмножества Е1 1, Е12,Е2 1, Е22: начало каждого из ребер из множества Epq принадлежит Vp, а конец — Vq, где p, q e{1, 2}. Если исходная матрица С представлена в блочном виде ( 11 с12л с21 C 22, где каждый блок—это матрица порядка I, то матрица Cpq несет полную информацию о ребрах из множества Epq. Рассмотрим пути в графе G, соединяющие вершины из множества У 1. Назовем ходом путь из вершины в вершину этого множества, представляющий собой • либо продвижение по ребру, принадлежащему Е1 1, • либо продвижение по ребру, принадлежащему Е12, за которым следует некоторый путь по ребрам из Е22 и затем продвижение по ребру, принадлежащему Е21. Глава 7. Сводимость Непосредственно видно, что (i, j)-элемент матрицы C nv(C 12A C *2A C 21) равен 1, если и только если существует ход, соединяющий вершины V;, V j G Уг. При этом ясно, что из V; можно добраться в V j О;, V j е V x) по ребрам графа G, если и только если существует последовательность ходов, приводящая из vt в у,-, т. е. если и только если (i, _/)-элемент матрицы (C nV(C 12A C *2A C 21))* равен 1. Обозначим эту матрицу F n. Мы имеем *21 ^22 для некоторых матриц F 12, F 21, F 22, при этом матрица Fpq, р, q g {1, 2}, несет информацию о существовании путей из вершин множества Vp в вершины множества Vq. Рассуждениями, сходными с приведенными выше, можно показать, что F 12 = F nA C 12A C *2, F 21 = C *2A C 21A F n, F22 = С*22 V (С*2 А С21 A F n А С12 А С*2); эти выражения удобны для вычисления матрицы С*: четыре матрицы Fp q, р, q g {1, 2}, можно найти, выполнив два построения транзи-тивно-рефлексивных замыканий, шесть умножений и два сложения матриц порядка Z: U = С*2, V = С12 A LT, W = U А С2Ъ F n = (C nV(V A C 21))*, F 12= F nA V, F21 = W AFn, F22 = UV(F21AV). Мы указали рекурсивный переход от матриц порядка 21 к матрицам порядка Z. Учитывая, что С* = С для матрицы первого порядка, мы получаем алгоритм вычисления С* для случаев, когда порядок п матрицы равен 2к, к^О. Пусть для умножения булевых матриц используется алгоритм со сложностью В{п), которая удовлетворяет условиям 1—3, приведенным в начале этого примера. Для п = 2к мы имеем следующее соотношение, которому будет удовлетворять сложность § 28. Линейная сводимость T (n) полученного алгоритма построения транзитивно-рефлексивного замыкания:
,. О, если к = и, г ___ ГС25^---------------------------------------------- (ЖЗ) В силу условия 3 имеем В (2-) ^ 4 B (2fc-2) при fc ^ 2. Дополнительное использование условия 1 дает нам B (22fc-1) ^22(fc-1) при fc^ 1. Заменяя 22*-15 во второй строке соотношения (28.3) на B (2fc-1), получаем
тк ^' если к = и, Г(2)*S (28.4) Докажем по индукции, что r(2fcK4 B (2fc), fc = 0,l,... (28.5) Для к = 0 это неравенство очевидно, так как ГЦ) = О, ВЦ) = 1. Пусть ЬОи неравенство выполнено для к - 1. Тогда 2Т(2к-1) s= 8 B (2fc-1), и, как следствие (28.4), мы получаем Т{2к) ^ 16 B (2fc-1). В силу условия 3 мы имеем B (2fc-!) ^ \в{2к), откуда следует (28.5). Если п не есть число вида 2к, то от матрицы С переходим к матрице
С (Г порядка 2к, взяв единичную матрицу Is некоторого порядка, меньшего чем порядок матрицы С. Таким образом, порядок матрицы С' меньше, чем 2п, т. е. 2к < 2п. Из (28.5) следует, что T (n) = r(2fc)^4 B (2fc). Так как 2к < 2п и функция В(п) —неубывающая, получаем 4 B (2fc) ^ ^4В(2п). Отсюда Т{п) s= 4 B (2 n) SS 4 ■ 8 • В(п) = 32В(п) для всех п и Т{п) = 0{В{п)), (28.6) что и требовалось. Из сказанного следует, что если использовать для умножения квадратных булевых матриц алгоритм со сложностью, растущей медленнее, чем п3, и удовлетворяющей условиям 1—3, то можно строить тран-зитивно-рефлексивное замыкание со сложностью, растущей медленнее, чем сложность алгоритма Уоршелла (пример 23.2). Напомним, что Глава 7. Сводимость алгоритм Штрассена умножения матриц, модифицированный для булева случая (пример 27.2), имеет сложность O (n 1о&7). Но для небольших значений n условия 1—3 здесь выполняться не будут. Однако соотношение (28.6) можно доказать при более слабых предположениях, чем использованные выше, и обсуждавшееся доказательство не потребует больших изменений. А именно, достаточно предположить, что B{n) удовлетворяет условиям 2—3 для n > n0, где n 0 — некоторое натуральное число (см. задачу 143б). Получится оценка T{n) s= cB{n), где c зависит от B (n 0), но эта зависимость не влияет на (28.6). Для нахождения транзитивно-рефлексивного замыкания ориентированного графа с n вершинами существует алгоритм, сложность которого допускает оценку O (n 2>82), или, более точно, оценку O (n 1о&7). Как показывает последний пример, если P ^ Q, то прогресс в умении быстро решать задачу Q может в некоторых случаях обеспечить прогресс и в умении быстро решать задачу P. Но это не всегда так. Допустим, что n является нижней границей сложности для алгоритмов решения задачи Q и в то же время для задачи P имеется алгоритм решения со сложностью, меньшей n. Согласно определению 28.1 мы имеем P ^ Q, но наличие этой линейной сводимости ничего не дает для продвижения в умении быстро решать задачу P. Отношение линейной сводимости, очевидно, рефлексивно. Если не рассматривать упомянутых в определении 28.1 дополнительных условий, то это отношение будет транзитивным. В тех случаях, когда такие условия наложены, необходима осмотрительность: если для задач P, Q и R мы имеем P ^ Q при некоторых условиях на сложность алгоритмов решения Q, а также Q ^ R при соответствующих условиях на сложность алгоритмов решения R, то чтобы на основании этого утверждать, что P ^R, надо дополнительно установить, что сложности тех алгоритмов решения задачи Q, которые сопоставляются алгоритмам решения задачи R, удовлетворяют условиям, налагаемым на сложности алгоритмов решения задачи Q при доказательстве отношения P^Q. Это обстоятельство иногда безосновательно игнорируется.
Дата добавления: 2014-01-11; Просмотров: 557; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |