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

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

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

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

Если К, = К,и у < (, то, в конце концов, В, окажется после В,. Кроме того, внесенные изменения замедлят работу программы С. 4, ЕИТ1 И 1 ЬТА ООП%Т+1,2 Ф !02 СООИТ,1 Х ОЕС! ! Н (.ОА ТИРОТ,1 Ж 2!Р е-4 )(г $ 5. Время выполнения уменьшится на А+ 1 — Ж вЂ” В машинных циклов, и это почти всегда можно рассматривать как существенное улучшение.

6. в =-О, е =-9.. После 1)1 После [)2 После [)4 Во время [)5 0 О 0 2 2 1 2 4 о 2 3 5 0 0 0 0 0 0 О О 1 3 3 2 1 1 5 6 9 12 14 15 16 5 5 8 91215 16 г'=8 1С вЂ” 4А — — 5! 6А 6Т 61 70 7И вЂ” -" 1С 2Е 4А ЬТ 50 51 6А 6Т 61 70 7И 85 9 СООИТ = СОСЕТ = СООИТ .=- СООИТ = ООТРОТ = ООТРОТ ~ После ))5 ОС 00 !И 7. Да; обратите внимание на то, что СООИТ[К.) уменьшено на шаге [)6, а затем уменьшаетсн у. 8. Сортировка будет выполняться, но не будет устойчивой (см.

упр, 7). 9. Пусть М = е — з; будем считать, что ]к] и ]е] умещаются в два байта. 1ЛС(В1) ш 1ИРОТ+2; ЬОС(СООИТ[У)) ш СОСЕТ+)'; 10С(Я)) Ш ООТРОТ+)'; гП ш (; г12 ш), г13 ш 1 — ч илн НЗшК, И ЕОО Т-О ЕЕТ ЕОО 0:2 (Сопутствующая информация в байтах 3: 5) и = 9 и имеется цикл (Ол 1с Ос Зл 7л Зс 1л 2с Ьс 4л). Этот цикл появляется в мультиграфе тогда и только тогда, когда перестановка со знаком начинается с 4 и содержит подцепочкн 9187 и 25 или нх реверсы.

Все решения можно получить, если найти все перестановки со знаком множества (1,2,3,6) и заменить 1 значениеи 9187, 2 — значением 25, Значит, Есь < )г(25)2г(я+1)А2" ь(я — А)1/2"и! = 1(1(Ь+ 1/(и+ 1 — Ь)), Из этого следует, что Ес = 2 „" ., Есь + Ес +1 < Н + 1. Поскольку и+ 1 — с — нижняя граница числа перебрасываний, нам понадобится > и+ 1 — Ес > и — Н из них. ]В этом доказательстве использована идея В. Бафиа (Ъ'. Ва[ва) и П. Певзнера (Р. Речипег), ЯСОМР 25 (1996), 272-289, которые изучали боле» сложную проблему сортировки перестановки без знака посредством реверсирования. В этой задаче рассматривалнсь перестановки, которые могут быть записаны в виде произведения неразрезанных циклов (1 2 3) (3 4 5)(5 6 7)..., оканчивающихся либо на (и-1 и), либо на (и — 2 и — 1 и) в зависимости от того, каким является и: четным нли нечетныы.

Оказалось, что такие перестановки трулнее всего сортировать.] 10 ЕИИЗ Н 1 РЕЯ ЗТЕ СОСЕТ+Т,З М + 1 СОСЕТ[о — Л) у- О, ТИСЗ 1 И+1 узм М+1 о<1<о. 2Н ЕИТ2 И 1 я2,лл, ЗН 1.03 ХЕРСТ,2(НЕТ) К [)3. Увеличить СООИТ К 10А сааит,з уу ТИСА 1 УМ зта сааит.з ут ОЕС2 1 АУ ЛР ЗВ А' А >у>а. ЕИИЗ И-1 1 В4. НИИоупуешге. 10А СОСЕТ+О 1 гА е- СООИТ[1 — 1). 4Н Ааа СООМТ+7 ~ 3 М СООМТ П вЂ” 1) + СООМТ [П МТА с00мт+7,3 М -+ со(умт[П. ТМСЗ 1 М АЗЕР 4В М бн емтз м 1 ен |аз ТМРОТ,2(Нет) А' (Л)1 СООИТ, З х 1+- 000ит[ку). 00А 1МРОТ,2 УМ гА +- У1,. ИТА оатрат,1 Х Яу е — гА. ОЕС1 1 А' вт1 сааит,з А' СОНЕТ[К)) +-1 — 1. ОЕС2 1 УМ ЛР б» Х У>у>а.

3 Время выполнения — (1ОМ + 22АУ + 10) н. 10, Чтобы не использовать дополнительно Ут' бит для "маркера" (см. раздел 1.3.3 и Су- Ьепуейсэ 1 (1063), 95) и при этом все-таки оставить время выполнения пропорциональным К, можно использовать слелующий алгоритм, основанный на циклической структуре пе- рестановки. и<1< о. Щ. Выкай Дз, В1. Присвоить А <- р(у). Вз, Если А > у, присвоить Уг +- р(А) и повторить этот шаг.

ВЗ. Если Й < у) ничего не выполнять, ио если А = ( (зто означает, что ( — нанмельшее в своем цикле), то переставить операции цикла, связанные с( следующим образом. Р1. (Цикл по и.] Выполнить шаг Р2 для 1 < 1 < гУ; затем завершить выполнение процедуры. Рз. (р(У) = (У) Выполнить шаги с РЗ по Р5, если р(у);А А РЗ. [Начвло цикла.) Присвоить У +- Л„у' у- (, Р4. (Обработать Ут,.) Присвоить А +- р(у), У(у +- Яы р(Я +- у, у' +- А, Если р(у) р' у, повторить этот шаг.

РЬ. (Конец цикла.) Присвоить Еу +- Г, р(у) +- у. М Этот алгоритм изменяет р(1), поскольку в приложениях, использующих сортировку, можно считать, что р(у) хранится в оперативной памяти. С другой стороны, существуют прило- жения, такие как транспоннрование матриц„в которьух р(у) является функцией у, т. е. е о для зкономии памяти необходимо вычислять, а не считывать вз таблицы, В этом случае можно использовать следующий метод, выполняя шаги от В1 до ВЗ для 1 < ( < у)у. Присвоить ( +- Л,; затем, пока р(й) ф й повторять присвоения Вг +- Лр(ю и й +- р(й); и, наконец«присвоить Л«е- ( $ Этот алгоритм аналогичен процедуре, описанной в работе Л.

Васс)поуб, Сошр. Х 10 (1967) « 310,но требует меньшего количества операций перемещения даиньгх; несколько усовершенствованный алгоритм преджакил И. Д. Г. Мак-Леод (1. О. С. Мас) еой) (Аизгга)«вл Сагир. 3. 2 (1970), 16-19), Анализ, выполненный для случайной перестановки в упр. 1.3.3-14, показывает, что шаг В2 выполняется в среднем (А«+ ЦНл — ««' рэл. (См.

также ссылки иа литературу в ответе к упр. 1.3.3-12.) Аналогичный влпзритм можно разработать и для того, чтобы заменить (Лр(,р ..,, Вр(л) ) иа (Вц..., Лл), например, если перекомпановка в упр. 4 должна быть выполнена при условии ООТРОТ = 1ИРОТ. 11. Пусть г11ж Л г12 ау«г13на й; гХ ш К 1Н ЕИТ1 И «и кя«е' ЗН СНР1 Р,1 «««, «Ы=- 1Е 8Р Ж Перейти, если р(1) = 1.

я «я «я~. А — ««~«. н . «. ЕИТ2 0,1 А — В у+-й 4Нй03 Р,2 А( — А Р. ики в ь .й+-р(у). 1.Рй 1ИРОТ,З ««( — А ЗТа 1ИРОТ„2 Ю вЂ” А Л) +- Вь. ЗТ2 Р,2 «'«' — А р()) е- )1 ЕИТ2 0,3 Ю вЂ” А у+- й. СИР1 Р,2 А( — А 1ИЕ 4З )«' — А Повторить, если р(у) ~ й ЗН ЗТК 1ИРОТ,2 А — В РБ. ~не НН((Н.„В) +- Ф. ЗТ2 Р.2 А — В р(у') е- 11 ЗН РЕС1 1 А« 51Р 26 А«ХВ(>1. ! Время выполнения равно (17А' — ЗА — 7В+ Цв, где А — числа циклов в перестановке р(Ц... Р(А«) и  — число неподвижных точек перестановки (единичных циклов).

Получнм \ ( ' «, Я, «',««Я -~Н) «=( ' «, 1, ««Ц для Аг > 2 в соответствии с 1.3.3-(2Ц и 1,3.3-(28). 12. Очевидный способ — пройти по всему списку, заменим связи й-го элемента числом й, и затем перекомпоновать элементы на втором проходе. Описанный ниже более пряъюй и быстрый способ для случая, когда записи не слишком велики, принадлежит М. Д. МакЛареиу (М. В. МасЬэгеп).

(Для удобства предполагается, что 0 < ЫИК(Р) < Р«' при 1 < Р < А", где А ьз О.) М1. (Инициализация,) Присвоить Р+- НЕАР, й <- 1. М2. [Вьпюлнено7) Если Р = А (или, что равносильно, если й = Х + Ц, выполнение процедуры заканчивается. МЗ. (Обеспечить Р > й.) Если Р < й, присвоить Р е- 11ИК(Р) и повторить этот шаг.

Ма. (Обмен.] Поменять местами Ль и Л(Р). (Предполагается, что 1.1ИК(й) и ьТИК(Р) также при этом меняются местами,) Затем присвоить О е- ь?ИК(й), 11ИК(й) +- Р, Р+-О, й е- й+1 и вернуться к шшу М2. 3 Доказательство состоятельности метода М. Д. Мак-Ларена может базироваться на проверке по индукции следующего свойства, которое всегда выполняется перед пачвлом шага М2: элементы, которые > й в последовательности Р,ь1ИК(Р),ь1ИК(ь|ИК(Р)), ..., А, — это ап аэ...., ая~~-ю где В~ < .. < Вь-~ < Ла, < < Л я,, „— требуемый окончательный порядок записей. Далее, ЫМК(у) > ) для 1 < ) < а, так что из равенства ЫИК()) = Л следует ) > й.

Довольно нптересяо проанвлизировать алгоритм М. Д. Мак-Ларена. Одно из его замечательных свойств состоит в том, что алгоритм можно выполнить в обратном поряд- ке н восстановить исходное множество связей из конечных значений 11МК(1) ... ЫИК(Ж) .

Каждая из В! возможных конфигураций иа вьссоде при ) < ЫИК()) < Х соответствует в точности одной из К! возможных конфигурэший на входе. Если обозначить через А количество операций Р э- 1.1ИК(Р) на шаге МЗ, то К вЂ” А — - число индексов ), таких, что ЫИК(э) = у после завершения выполнения процедуры. Зто возникает тогда и только тогда, когда ) наибольшее в своем цикле; следовательно, Х- А равно числу циклов перестановки, а А = (пйпО, ате )т' — Ня, шах Ю-1). См. М.

(). МасЬагеп, )АСМ 13 (1966), 404-411; Р. Сг1еэ, 1. Р, Ргшз, Ес)елее оГСошриэег РгобташпнлИ 8 (1987), 139-145. 13. ПЬ', Присвоить г +- Х, К)б'. Если г = О, остановиться. В противном случае, если СООИТ[К„) < г, присвоить г +- г — 1 и повторить этот шаг; если СОСЕТ(К,) = г, умеяьшить и СООИТ(К„), и г на 1 и повторить этот шаг. В противном случае присвоить Л э- В,,у +- СООМТ(К„), СООМТ(К ) +- у — 1. ПТ'.

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

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

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