Главная » Просмотр файлов » Д. Кнут - Искусство программирования том 2 (3-е издание) - 2001 (Часть 2)

Д. Кнут - Искусство программирования том 2 (3-е издание) - 2001 (Часть 2) (1119454), страница 33

Файл №1119454 Д. Кнут - Искусство программирования том 2 (3-е издание) - 2001 (Часть 2) (Д. Кнут - Искусство программирования том 2 (3-е издание) - 2001 (Часть 2)) 33 страницаД. Кнут - Искусство программирования том 2 (3-е издание) - 2001 (Часть 2) (1119454) страница 332019-05-09СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 33)

Двоичный метод может быть обобщен в ш-арнмй мешод следующим образом. Пусть и = дот~ + д1т1 1+ - ° ° + 4, где О < И < т для О < у < а Вычисление начинаетгя с построения х, хз, хз, ..., х '. (На самом деле нужны только те степени х4, у которых ду появляются в представлении числа п, и зто часто экономит ваши усилия.) Затем возведем хее в степень ш и умножим на хег Таким образом мы вычислили у~ = хе' +е'. Затем возведем у, в степень ш, умножнм на хе' и получим а 4 +8 уз = х е ее' +е'.

Этот процесс продолжается до тех пор, пока не будет вычислено значение у~ —— х". Когда г(1 = О, естественно, умножение на хез не является необходимым. Заметим, что данный метод при и = 2 сводится к обсуждавшемуся ранее двоичному методу "слева направо", однако менее ясный ш-арный метод "справа налево'* требует большего объема памяти и несколько большего количества шагов (см. упр.

Р). Если т представляет собой малое простое число, ш-арный метод будет особенно эффективен для вычисления степеней одного полинома по модулю другого, когда коэффициенты рассматриваются по модулю гп в соответствии с 4.Б.2-(б). Систематический метод, дающий минимальное количество умножений для всех относительно мальм значений и (в частности, для большинства встречающихся в реальных приложениях значений и), проиллюстрирован на рис, 14. Для вычисле- ния х" найдите и в представленном на рисунке дереве; путь от корня дерева к и лает последовательность показателей степеней, встречающихся при эффективном вычислении х".

Правило, по которому строится это "дерево степеней", приводится в упр. 5. Вычислительные тесты показали, что дерево степеней дает оптимальные результаты для всех указанных на рисунке и, однако для достаточно больших значений и метод дерева степеней не всегда оптимален (наименьшие примеры неоптимальности— и = 77, 164, 233), Первое значение, для которого дерево степеней превосходит и двоичный метод, и метод множителя, — п = 23. Первое значение, для которого метод множителя превосходит метод дерева степеней, — и = 19879 = 103 193. Такие случаи весьма редки. (Для и < 100000 метод дерева степеней лучше метода множителя 88 803 раз, столь же хорош 11 191 раз и проигрывает ему только 6 раз.) Аддитивные цепочки.

Наиболее экономичный путь вычисления х" с помощью операций умножения представляет собой математическую задачу с интересной историей. Сейчас мы приступим к ее изучению не только потому, что она классическая и интересна сама по себе, но и потому, что это превосходный пример теоретических вопросов, .возникающих при изучении оптимальных методов вычислений.

Хотя мы имеем дело с умножением степеней з, проблему можно легко свести к сложению, поскольку при умножении показатели степеней складываются. Это приводит к следующей абстрактной формулировке: аддигливной цепочкой длл и является последовательность целых чисел 1 = ае, ам аз, ..., а„ = и, (1) обладающих тем свойством, что а; = ау+ аь для некоторых А <у < 1, (2) для всех 1 = 1. 2, ..., г.

Это определение можно трактовать следующим образом. Рассмотрим простой компьютер с аккумулятором, который способен выполнять три операции: !.0А, БТА и АЮР. Машина начинает работу с 1 в аккумуляторе н затем вычисляет число п„складывая полученные ранее результаты. Заметьте, что а~ должно быть равно 2, а аз равно 2, 3 либо 4. Наименыпая длина г, для которой существует алдитнвная цепочка для п, обозначается как 1(п). Наша цель в оставшейся части этого раздела состоит в изучении функции 1(п). Значения Цп) для малых и приведены в дереве на рис.

13, которое показывает, как вычислить х" с наименьшим возможным количеством умножений для всех и < 100. Проблема определения 1(п) была, по-видимому, впервые поставлена в 1894 го. ду Х. Деллаком (Н. Пе!!ас) и частично решена Э. деЖонкиэрес (Е. дедопйц!Ьгеэ) упомянутым методом множителя [см. Г1пгегтеглшге с(ез Ма!йети!с(епэ 1 (1894), 20.

162-164). В своем решении де Жонкиэрес перечислил значения !(р) для всех простых чисел р < 200, но в его таблице значения для р = 107, 149, 163, 179 были слишком велики. Методом множителя можно получить неравенство (3) !(пгп) < 1(т) + !(и), поскольку можно взять цепочки 1, ам ..., а, = гп и 1, Ьм ..., Ь, = и и построить цепочку 1, а„..., а„а„Ь„..., а„Ь, = пш, l~ й /~ /~ /~ ! ! ! Л 19 28 2! 22 23 40 27 30 25 48 26 34 36 33 64 !Й Й! ! Й 1"17"1 ! /~ й /~ й й ! 3829 56 314244 46 41 80 395445 60 50 51 96 35 52 43 68 37 72 49 66 65 ! ! 7"1 ! ! ! 7"1 ! Й ! ! ! 7"1 ! ! й ! ! й ! ! ! ! ! ! 765857596284884792828385785590637510053 97 99 70 61 77 86 69 74 73 98 67 81 )!! !! ! ! 899493 95 79 91 Рис.

15, Дерево, минимизирующее число умножения для и < 100, Можно также сформулировать т-ариый метод в терминах аддитивных цепочек. Рассмотрим случай, когда т = 2", и запишем и = а)от'+ Н1 гпа 1+ "+ 4(1 в гп-ичной системе счисления, Соответствующая ацдитивная цепочка принимает вид 1,2,3„...,т — 2,7п — 1, 2а)о > 440,..., ШНО, 034(о + Ы1, 2(тйо+41),4(пм(0+4(1),...,гп(тдо+ И1),гп 4(о + тА + 42 т'е)о + п11 1А1 + ° ° + а(4. (4) Ее длина равна ш — 2+ (1+ 1)3, и зачастую ее можно уменыпить, удалив некоторые элементы из первой строки (те, которые не встречаются среди коэффициентов 4173 а также элементов из 200, 440, ..., которые уже имеются в первой строке).

Если какое-либо 42 равно нулю, последний член в правой части соответствующей строки, конечно, может быть опущен, Кроме того, квк обнаружил Э. Г, Тюрбер (Е. Са. ТЪпгЪег) (1)пке Магй. Х 40 (1973), 907-913), можно опустить все четные числа (за исключением 2) в первой строке, если привести значения вида 4117'2' в вычислении е шагами ранее.

Простейший случай т-арного метода — двоичный (бинарпый) метод (гп = 2), когда общая схема (4) упрощается до правила аЯ н Х*', упоминавшегося в начале этого раздела: бинарная аддитивная цепочка для 2п представляет собой бинарную аддитивную цепочку для и с добавлением числа 2п; для 2п+1 она является бинарной аддитивной цепочкой для 2п с последующим числом 2п + 1.

Из бинарного метода можно заключить, что 1(2аа + 2аа + . + 2а~) а' е + 7 если ео ~ 61 ) „., ) 61 ) 0 (3) Определим теперь две вспомогательные функции для удобства последующего обсу- ждения: Л(п) = ~18п); и(п) = количество единиц в двоичном представлении и. (б) (7) Таким образом, Л(17) = 4, и(17) = 2. Эти функции могут быть определены следую- щими рекуррентнымн соотношениями: (8) (9) Л(2п) = Л(2п+ 1) = Л(п) + 1; и(2п) = и(п), и(2п + 1) = и(п) + 1.

Л(1) = О, и(1) = 1, С их помощью можно записать, что бинарные аддитивные цепочки для и требуют ровно Л(п) + и(п) — 1 шагов, а (б) принимает вил 1(п) < Л(п) + и(п) — 1. Специальные классы цепочек. Не теряя обпшости, можно положить, что эд- днтивные цепочки возрастающие, т. е. 1=ае<аг <аз« .а,.=п.

Если два числа из а одинаковы, то одно из ннх может быть опущено. Можно также переупорядочить последовательность (1) в порядке возрастания и удалить члены, ббльшие, чем и, не нарушая свойство аддитивной цепочки (2). В дальнейшем будем рассматривать только возраститцне цепочки, не оговаривая это соглашение явно. Теперь удобно определить несколько специальных терминов, относящихся к аддитивным цепочкам. По определению для 1 < ( < г (12) для некоторых у и А, О < А < у < А Если это соотношение выполняется для более чем одной пары (у, А), полагаем, что у — наибольшее из возможных.

Будем говорить, что шаг 1 цепочки (11) — удвоение, если у = А = 1 — 1. Тогда а; имеет максимально возможное значение 2а; и которое может следовать за возрастающей цепочкой 1, аы ..., а; м Если у (но не обязательно А) равно 1 — 1, будем говорить, что шаг 1— звездный шаг (э$аг эсер). Важность звездньгх шагов поясняется ниже. И наконец, будем говорить, что шаг 1 представляет собой малый шаг, если Л(а~) = Л(а~ 1). Поскольку а~ 1 < а; < 2а~ „величина Л(а~) всегда равна либо Л(а; г), либо Л(а; 1) + 1; отсюда следует, что длина г любой цепочки (11) равна Л(п) плюс количество малых шагов. Эти типы шагов удовлетворяют ряду элементарных соотношений.

Шаг 1 всегда представляет собой удвоение. Ясно, что удвоение — звездный шаг, ио никогда не малый шаг. За удвоением всегда следует звездный шаг. Кроме того, если шаг 1 не малый, то шаг 1+ 1 является либо малым, либо звездным, либо н тем, и другим одновременно. Рассматривая данное утверждение с другой стороны, получим, что если шаг 1+ 1 не является нн малым, нн звездным, то шаг 1 должен быть малым. Звездной цепочкой (эсаг сйаеэ) является аддитнвная цепочка, включающая только звездные шаги. Это означает, что каждый член а; представляет собой сумму а; 1 и предшествующего ему аы простой "компьютер", упоминавшийся ранее, после (2), в звездной цепочке использует только две операции, ЗТА и АРО (беэ ЬРА), поскольку каждый новый член последовательности использует предыдущий резуль- тат, находящийся в аккумуляторе.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6547
Авторов
на СтудИзбе
300
Средний доход
с одного платного файла
Обучение Подробнее