КАТЕГОРИИ: Архитектура-(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) |
Завершимость работы алгоритма
Л Л П Ф F7 F5 T 4 Р 3 P 2
Рис. 15. Расположение чисел Fn и интервалов Φ n, n =1, 2,
a 1 a 1 остаток а2, и — принадлежит Φп-1. В самом деле, мы имеем Р2п-1 «1 Р2п Следовательно, частное от деления а 0 на а 1 с остатком равно 1, т. е. а 2 = а 0 - а1. Далее, а0 - а1 а0 == — - 1 а 1 а 1, поэтому Р2п-1 «1 Р2п Но Р 2 п Р2п-1 1 Р 2 п - Р 2 п -1 Р2п-2 Р2п-1 Р2п-1, 86 Глава 3. Оценивание числа шагов (итераций) алгоритма и, аналогично, 2 Р2п F 2n Р2п-1 «1 ^ и -^^^ -1 (107) F 2n-i^a 2^F 2n-2- U Получаем
£iG Jk. ^ c ^1 ^ n - T a 2 F 2 n _! F 2 n _2 F 2 n _3 F 2 n -2 Отрезки Φ2,Φ3,... не содержат целых чисел, поэтому из доказанного можно заключить, что если г е Φ п n Q, п > 2, то C'E{r) ^ п. Пусть теперь фиксировано аг&П+. Рассмотрим множество М = \r: r=—, a n = a i, a i +1,... к а 1 и 1 1 Точки, соответствующие элементам множества М, расположены на правой полуоси, начиная с 1, с шагом —; хотя бы одна из этих точек непременно принадлежит отрезку Φ„, коль скоро — меньше длины отрезка Φп, т. е. — ^ ■= ------ =—, или, что то же самое, аг ^ F 2 n _i F 2 n . Пусть JV — самое большое значение п, для которого выполняется это неравенство (такое JV существует, так как единственной точкой, принадлежащей бесконечному числу отрезков рассматриваемого семейства, является ф £Q). Тогда F2NF2N+1>a1. Из формулы Бине следует, что f2nF2N+i = |ф 4 М (1 - (- ФГ 4 Ы )(. Ф - С - ФГ 4 АГ_ 1), откуда W2 N +1 < СФ4Ы, где с — некоторая положительная константа. Таким образом, сф4Ы > > аг и JV > i log^ аг - \о%ф с. Имеем С'Е(г) ^ N - 1 > ^ log0 a x - log0 с - 1 по крайней мере для одного рационального числа геМ, откуда следует соотношение (10.4). Переходя к размеру входа т = Х{аг), мы можем воспользоваться теоремой 4.2 из § 4 и получить для сложности Т^{т) по числу § 10. Качество оценок делений соотношение T*(m) = в(m). (В силу теоремы 4.2 T*(m) = = n(log2 m -1) = n(m) и T E*(m) = O (log2 m) = O (m).) Число шагов расширенного алгоритма Евклида (см. пример 9.1) совпадает с числом шагов обычного алгоритма Евклида. Мы получаем следующее: Если рассматривать aг как размер входа (a 0, aг) расширенного алгоритма Евклида, то для мультипликативной сложности TЕЕ(.aг) этого алгоритма выполнено T^fa^ =Q(loga1). При рассмотрении m = А(a х) в качестве размера входа a0, aг расширенного алгоритма Евклида имеем для мультипликативной сложности оценку T*Е{m) = = в(m). Все это сохраняет силу и для сложности T*{m) «обычного» алгоритма Евклида. Запись алгоритма Евклида в форме (9.1) далека от записи в виде «приличной» компьютерной программы не только в смысле использованной символики, но, главное, в смысле предписываемого расточительного расхода памяти (использован массив, и при буквальном следовании алгоритму (9.1) мы бы имели SЕ(,aг) = QfJogaJ). С точки зрения программирования более приемлемой будет, например, запись a:=a0; b:=a1; while b> 0 do d:=rem{a,b); a:=b; b:=d od (rem —знак операции нахождения остатка). После выполнения алгоритма имеем a = нод(a 0, aг). Использовано только три дополнительных переменных (a,b и d), и мы получаем S E(a 1) = 3. Оценку (10.4) можно усилить, показав, что найдется константа у' такая, что T E(a 1) > |log(#, a 1+r/ (10.8) (см. задачу 54). Часто в литературе оценки снизу для сложности в худшем случае алгоритма Евклида по числу делений выводят из оценки, полученной в 1970 г. Г. Хейлбронном для сложности в среднем: T E(a 1) = ^j^ln a 1+ O (l). (10.9) Последняя оценка обосновывается весьма непросто. Из (10.9) выводится, что T E(a 1) > i^ln a 1+r// 88 Глава 3. Оценивание числа шагов (итераций) алгоритма для некоторой константы f. Однако при больших аг оценка (10.8) для ТЕ{аг) является более строгой (ИЩ1 \пф = 0,40554... < |) и вдобавок выводится элементарно г. Может быть доказано (см. задачу 52), что ТЕ{аг) <\о%ф аг + с, где с —некоторая константа (заметим, что log0 2 = 1,44... < 2) 2. Рассуждения, сходные с приведенными при доказательстве неравенства (10.4), показывают, что для каждого а0 можно подобрать аъ а0 ^ аъ так, что будет выполняться C E(a 0, a 1) > |log(^ a 0 + /3, (10.10) где /3 — некоторая константа. В данном случае можно рассмотреть вложенные отрезки Фх э Ф2 D фз D •••: Ф„ = [^2-, % -1 ], п = 1,2,
(при п > 1 отрезок Ф„ не содержит чисел вида —, m eN+); если a n не делится нацело на ах и — g Фп, то — е Фп_х и т.д. Мы воспользуемся этим в § 21. Пример 10.2. Сортировка массива длины п бинарными вставками выполняется за п — 1 шаг, причем на Z-м шаге число сравнений не превосходит [log2(Z + 1)] и, следовательно, не превосходит [log2 п\ на любом из шагов, —это приводит к оценке (9.14). Возникает вопрос, не сможем ли мы получить существенно лучшей оценки сверху, рас- п-1 смотрев сумму X! riog2CZ + 1)1, которая совпадает со значением Тв{п), т. е. сложности по числу сравнений (такое число сравнений достигается, например, в случае, когда изначально массив имеет обратную упорядоченность: хг > х2 >... > хп). Замена переменной суммирования дает rB(n)=^riog2Z<l. (10.11) fc=i 1 Приведенный выше и дополненный в указании к задаче 54 элементарный вывод 2 Предположение о том, что T E(a j) ~logj, аь насколько известно автору, не доказано § 11. Завершимостъ работы алгоритма Для получения простой асимптотической оценки Тв(п) воспользуемся формулой Стирлинга п\ ~ппе-п4Ъкп, или, что то же самое, n\ = nne-n\[b^i{l+o{l)), которая после логарифмирования принимает вид log2 п\ = п log2 п-п log2 е + \ log2 п + \ log2 л + \ + о(1) (принято во внимание, что log2(l+ о(1)) = о(1)). Так как l < log2 e< < 2, то п log2 п - 2п < log2 п\<п log2 п-п (10.12) для всех достаточно больших п; в частности, это означает, что log2 n! = n log2 n + 0(n). Имеем Y, Tlog2 fcl =2 log2 k + 0(n) = log2 n! + 0(n) = n log2 n + 0(n). k=l k=l Отсюда получаем оценку T B(n) = n log2 n + 0(n), (10.13) из которой следует, в частности, что Тв(п) ~ п log2 п. Таким образом, тщательный анализ суммы (10.11) не приводит к существенно лучшей, чем (9.14), оценке, но зато дает асимптотику Тв(,п). В § 14 будет показано, что из того, что сложность по числу сравнений некоторой сортировки не превосходит n log2 n + cn, где с—некоторая константа, следует, что эта сложность есть n log2 n + 0(n). Из этого будет следовать, что для сложности по числу сравнений сортировки фон Неймана выполнено T vN(n) = n log2 п + 0{п); мы обозначаем эту сортировку буквами vN, от фамилии von Neumann. Если выполнение циклического (итерационного) алгоритма не завершается для некоторого входа v, то сложность этого алгоритма не определена для значения аргумента, равного || v ||. Поэтому анализ сложности алгоритма прямо или косвенно включает исследование за-вершимости. Установление завершимости может быть рассмотрено и как самостоятельная задача. Когда функция L подбирается для выяснения зависимости числа шагов алгоритма от размера входа задачи, то при 90 Глава 3. Оценивание числа шагов (итераций) алгоритма наличии выбора более предпочтительной является функция с медленным ростом (имеется в виду рост при увеличении размера входа); даже если при этом усложняется доказательство того, что L обладает всеми нужными свойствами, мы зато получаем более точную оценку числа шагов алгоритма. Но иногда речь может идти только о доказательстве завершимости работы алгоритма — тогда характер роста функции L отходит на второй план. То, что выполнение алгоритма Евклида завершается, было доказано в самом начале обсуждения этого алгоритма без обращения к функциям с логарифмическим ростом. Пример 11.1. Алгоритм, заданный оператором цикла while n> 3 do if 2 | n then n:= 2 + 1 else n:= n + 1 f i od (запись 2 | n означает, что n делится на 2) завершает свою работу для любого натурального п. Для доказательства достаточно рассмотреть функцию п - (-1)" и убедиться в ее убывании при п > 3 в ходе выполнения алгоритма. Пример 11.2. Если п — данное неотрицательное целое число, то завершимость выполнения алгоритма s:=0; for i = 1 to n do s: = s + 1 od очевидна—выполнение оператора цикла завершится после п шагов; легко видеть, что при выполнении этого оператора значение L(n, i) = = n - i убывает, оставаясь при этом неотрицательным целым. В доказательствах завершимости, основанных на подборе подходящей убывающей целочисленной функции, используется следующее свойство множества N неотрицательных целых чисел: Не существует бесконечной убывающей последовательности п 0 > >п1> п2>... элементов множества N. Имеются и другие примеры (частично) упорядоченных множеств с этим свойством, и соответствующие порядки используются для доказательства завершимости выполнения алгоритмов г. 1 Вместо сложных примеров, мы адресуем читателя к задачам 67, 68, заимствованным из [9, разд. 2.3]. В книге [9] кроме двух названных задач содержится интересный и полезный материал о частично упорядоченных множествах и некоторых специальных типах таких множеств. (Решения задач 67, 68 не обязательно должны содержать явные упоминания порядков на множествах, хотя введение некоторых порядков полностью проясняет ситуацию.) § 11. Завершимостъ работы алгоритма Установление завершимости выполнения алгоритма иногда оказывается очень трудной задачей. Пример 11.3. Завершимость для любого натурального п выполнения алгоритма while п > 1 do if 2\п then n:=^ else n:=3 n + 1 fi od не доказана и не опровергнута по сей день, хотя на это направлялись серьезные усилия (см. [53]). В случае рандомизированных алгоритмов мы сталкиваемся (см. ниже пример 11.4 и первую часть примера 11.5) с возможностью того, что алгоритм завершается с вероятностью 1, но математическое ожидание времени от начала выполнения до полного завершения алгоритма бесконечно. Поэтому утверждения о завершимости возможны в двух формах: завершимость с вероятностью 1 и конечность ожидаемого времени выполнения. Вторая форма является, вообще говоря, более сильной. Пример 11.4. В теории вероятностей подробно рассматривается задача о блуждании частицы по прямой: за один шаг частица передвигается на 1 вправо или на то же расстояние влево, направление же движения на каждом шаге выбирается случайно, вероятности выбора каждого из направлений одинаковы и равны 12. Пусть в начальный момент частица находится в точке 0, и на прямой отмечена некоторая точка т с целой координатой. Доказывается, что с вероятностью 1 частица через некоторое время попадает в точку т. Попытаемся теперь вычислить математическое ожидание а времени (общего числа шагов), которое потребуется для достижения точки т. Легко убедиться, что уже в случае т = ±1 это среднее бесконечно. Пусть, например, т = 1. Используем формулу полного математического ожидания: если шаг сделан вправо, то за этот один шаг мы достигаем цели, если же шаг сделан влево, то придется дождаться момента, когда частица вернется в точку 0 и тем самым повторится начальная ситуация: а = 1-12 + 2а-21. Если бы а было конечным, это бы дало 0 = 12. Поэтому среднее бесконечно. 92 Глава 3. Оценивание числа шагов (итераций) алгоритма Рассмотрим с этой точки зрения задачу 17. Итак, путник столкнулся со стеной, простирающейся бесконечно в обе стороны. Имеется дверь в этой стене, но путник не знает ни расстояния до двери, ни направления к ней. Если путник использует алгоритм поиска двери, состоящий в бросании перед каждым шагом монеты для определения направления (вправо или влево) этого шага, то он с вероятностью 1 найдет дверь, но математическое ожидание числа шагов равно бесконечности, коль скоро в начальный момент путник не стоит прямо перед дверью. Иными словами, если pk (k ^ 1) есть вероятность того, что после k шагов путник впервые окажется перед дверью, то
Дата добавления: 2014-01-11; Просмотров: 424; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |