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

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

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

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

Сб. ]Продвижение.] Уменьшить пг на 1. Если гп > О, вернуться к шагу Сб. В противном случае уменьшить А на 1; если А > О. установить гл с- А [Т вЂ” у' — 13 — А[Т вЂ” Я и вернуться к шагу Сб, если пт > О. В противном случае уменьшить у на 1; если у' > О, перейти к шагу С4, в противном случае увеличить 1 на 1; если 1 < Т вЂ” 1, вернуться к шагу СЗ.

В противном случае перейти к шагу С2, СТ. [Подготовка к слиянию.] (К этому моменту начальное распределение завершено и таблицы АА, 0 и ТАРЕ описывают состояние всех лент в данный момент.) Установить И[А] е — АА[Й+ Ц при 1 < Й < Т и установить Р1ЕЗТ +- 1. (Переменная Р1ЕЗТ принимает ненулевое значение только во время первого прохода слияния.) С8. [Каскад.] Если 1 = О, остановитьсн; сортировка завершена, вывод находится на ТАРЕ[13.

В противном случае при р = Т вЂ” 1, Т вЂ” 2, ..., 1 (именно в таком порядке) выполнять р-путевое слияние с лент ТАРЕ [13, ..., ТАРЕ [р] на ТАРЕ [р+ Ц следующим образом. Если р = 1, моделировать однопутевое слияние посредством обычной перемотки ТАРЕ [23 и замены ТАРЕ[13 е+ ТАРЕ[23. В противном случае, если Р1ЕЗТ = 1 н 0[р — 13 = М[р — 13, моделировать р-путевое слияние, просто поменяв ТАРЕ [р3 е+ ТАРЕ [р+ Ц, перемотав ТАРЕ [р3 н выполнив вычитание И[р — Ц из каждого 0[Ц,...,0[р-13, И[13, ...,М[р-Ц.

В противном случае вычесть И[р — Ц из всех И[Ц,...,М[р — Ц. Затем слить по одной серии с каждой ТАРЗИ, такой, что 1 < 3 < ри 0[33 < И[13; вычесть единицу из каждого 0[у], такого, что 1 < у < р и 0[33 > И[Я, и помесить выводную серию на ТАРЕ[р+ Ц. Продолжать работу, пока ТАРЕ [р3 не станет пустой. Затем перемотать ТАРЕ [р] и ТАРЕ [р+ Ц. С9. [Опуститься на уровень.] Уменьшить 1 на 1, установить РХЕЗТ +- О и установить (ТАРЕ[13,..., ТАРЕ[Т]) +- (ТАРЕ[Т],,ТАРЕШЦ. (К этому моменту все 0 и М вЂ” нули; таковыми они и останутся.) Вернуться к шагу С8.

$ На шагах С1-Сб алгоритма С выполняется распределение, на шагах С7-С9— слияние. Эти две части совершенно независимы одна от другой, н можно было бы хранить И[А] и АА [й+ 13 в одних и тех же ячейках памяти. Анализ каскадного слияния. Каскадное слияние поддается анализу с ббльшим трудом, чем многофазное. Но этот анализ особенно интересен, поскольку содержит много замечательных формул. Настоятельно рекомендуем читателям, интересующимся дискретной математикой, самостоятельно проанализировать каскадное распределение прежде, чем чишашь дальше. Ведь числа имеют так много необычных свойств, открывать которые для себя -- одно удовольствие! М[ы обсудим здесь лишь один из многих подходов, обращая особое внимание на методы получения результатов, Для удобства рассмотрим ~тучай для шести лент.

При этом будем стараться получить формулы, которые обобщаются для любого Т. Соотношения (1) позволяют получить первую основную систему: )ае — ( )Е г+( )а г — ( )а в+ °" для О < га < Т-2. К счастью, эту сумму можно вычислить стандартными методами (это фактически пример 2 из раздела 1.2.6), Теперь можно вычислить коэффициенты при В(г) — 91(г)А(г) и т.

д, Рассмотрим, например, коэффициент при гг"' в 11(г) — дв(г)А(г), Он равен (3+~и+3) +в .~~- (3+гп+й)(23) (-1) +" й>0 ь>е как следует из результата примера 3, приведевпюго в разделе 1.2.6. Таким образом, получены формулы А(г) = 4В(г)А(г), В(г) = 91(г) 4(г) — ее(г), С(г) = В(г)А(г) — В(г), Х~( ) = ев( )А(г) — В( ) Е( ) = 94( ).4( ) — ев(г). Кроме того, имеем е„+в = а „следовательно, гА(г) = Е(г) и .4(г) = ев( И94( ) — г).

(9) Производящие функции были выражены прн помощи д-многочленов, поэтому желательно лучше изучить 9. В этом отношении полезно упр. 1.2.9-16, так как оно дает выражение в замкнутом виде: д„(г)— ((44 — гг+ 1г)/2) ~ + ((~~4 — гз — 1г)~2)~ ~~ г,4 — -~ . (16) Все упрощается, если теперь положить г = 2 вшд: ~ (2'1" д) 2 д д (совд+(ьбпд)в +'+(совд-вв(пд)з'"+' сов(2т+Цд 2 сов д сов д (Такое совпадение приводит к мысли, что многочлены 9„,(г) хорошо изучены в математике. Действительно, заглянув в соответствующие таблицы, мы видим, что д„,(г), по существу, является многочленом Чебышева второго рода, а именно— ( — 1)'"б'з (г/2) в обычных обозначениях.) Теперь можно определить корни знаменателя в (9): уравнение ог(2 в1пд) = 2 вшд сводится к сов9д = 2вшдсовд = вш2д. Решения этого соотношения получаем, если только хдд = 2д + (2п — -')х; все такие д дают корни знаменателя в (9) при условии, что совд ф О. (Если совд = О, то д (ю2) = (2ш+ 1) никогда не равно ~2.) Следовательно, получаем восемь различных корней: 94(г) — г = О при 2 в(п =»к, 2 вш ~ЯЯ, 2 гйп в4 в", 2 вш гг Я, 2 в1п гг~ Я, 2 гйп ( Я, 2 ил Ьвг к, 2 юп ггв.

Так как д» (х) — многочлен степени 8, значит„учтены все корни. Первые тря нз этих зпаченнй дают 9в(г) = О, так что дв(в) и 94(г) — г имеют в качестве общего делителя многочлен третьей степени. Остальные пять корней управляют аснмптотнческим поведением коэффициентов А(в), если разложить (9) на элементарные дроби. Переходн к рассмотрению общего случая для Т лент, положим В» = (4Й + 1) в/ /(4Т вЂ” 2). Производящая функция .4(в) для Т лент каскадных чисел принимает вид 4 .о гв (12) 2Т вЂ” 1, ~-' 1 — г/(2в1пв») -т~г<»<~'т/г) (см. упр.

8); следовательно, а„= — чэ савв В» ~ —. 2Т вЂ” 1 (,2в1пв») — твг<«<(тгг) (13) Соотношения (8) приводят теперь к аналогичным формулам: 4 / Ь„= — ~ В» .3В.~ —, и 2Т-1 '1,2.1 В,) ' -т1г<»<(т~г) 4 / 1 с„= — г совВ»совбв» ~, ) 2Т вЂ” 1 '» 2в1пв») -тгг<»<(т(г) (14) / 1 И„= — ~~~ савв» сов 79» ~ —. 2Т вЂ” 1 ~2в1пв») -тр<»< ~тхг1 я т. д.

В упр, 9 показано, чта этн уравнения справедливы для всех п > О, а не только для больших п. В каждой сумме член с Ь = О значительно превосходят все остальные членьн особенно если и достаточно велико. Следовательно, "отношение роста" есть — ж -Т вЂ” — + — + 0(Т ).

1 2 1 (15) 2в1пво я в 48Т Каскадная сортировка впервые была ис«ледована У. К. Картерам (см. Ж. С, Сахвег, Ргос. 1ИР Сапйтевв (1962), 62-66), который получил численные результаты для небольшнх значений Т, н Дзвидом Э. Фергюсоном (см. Е.

Регйпвоп, С.4СМ 7 (1964), 2971, который открыл первые два члена в асимптотяческом поведении (15) отношения роста. Летом 1964 года Р. У. Флойд (К. %. Иоу«() получил явный вид 1/(2в)пвв) для отношения роста, так что точные формулы моглн быть использованы для всех Т. Глубокий анализ каскадных чисел был независимо выполнен Дж. Н. Рэйнн (см. 6. Х. Влпеу, Сапа«11ал Х Ма»Ь.

18 (1966), 332-349), который столкнулся с ннмн совершенно другим путем, не имея дела с сортировкой. Райки заметил принцип "отношения диагоналей", представленный на рнс. 73, н вывел много других интересных свойств этих чисел. Флойд н Рэйни в сваях доказательствах оперировали матрнцамн (упр. 6). Модификация каскадной сортировки. Если добавить еще одну ленту, то почти все операции перемотки в процессе каскадной сортировки можно совместить.

Например, можно выполнить слияние Т1-Т5 на Т7, Т1-Т4 на Тб, Т1-ТЗ на Т5 (которая к этому моменту уже перемотана), Т1-Т2 на Т4 н начать следующий проход, когда на Т4 будет перемотало сравнительно немного данных. Эффективность этого процесса можно предсказать на основании изложенного выше анализа каскадного метода (подробности приводятся в разделе 5.4.6). Схема "компромиссного слияния", которая включает многофазную и каскадную схемы как частные случаи, была предложена Д.

Э. Кнутом в САСМ 6 (1963), 585-587. Каждан фаза состоит из (Т вЂ” 1)-, (Т вЂ” 2)-, ..., Р-путевого слияний, где Р— любое фиксированное число между 1 и Т вЂ” 1. Если Р = Т вЂ” 1, значит, это многофазный метод; если Р = 1, зто чистый каскадный метод; если Р = 2, это каскадный метод без фаз копирования. Анализ такой схемы бьш проделан в работах С. Е. Нас)ке, 1ВМ 5узгешз Х 5 (1966), 226-247„и %'.

Н. Вигбе, Ргос, 1Р(Р Сопйгеза (1971), 1, 454-459. Бурж нашел производящую функцию 2', Т„(з)аа для каждого (Р, Т)-компромиссного слияния, обобщающую соотношение 5.4.2 — (16). Он показал, что наилучшее значение Р (с точки зрения наименьшего числа обрабатываемых начальных серий) как функции от з' при о' ~ оо (если непосредственно использовать схему распределения и пренебречь временем перемотки) есть соответственно (2,3,3,4,4,4,3,3,4) при Т = (3,4,5.,6„7,8,9,10,11).

Эти значения Р с ростом Т сильнее отклоняются в сторону каскадного, а не многофазного метода, н оказывается, что компромиссное слияние никогда не станет существенно лучше каскадного. С другой стороны, при оптимальном выборе уровней и распределении фиктивных серий, как описано в разделе 5.4.2, чистый многофазный метод кажется наилучшим среди всех компромиссных методов слияния. К сожалению, оптимальное распределение сравнительно трудно реализовать. В работе ТЬ.

Е. Ло)шзеп, ВХТ 6 (1966), 129-143, исследовано сочетание сбалансированного и многофвзиого слияний; модификация сбалансированного слияния с совмещением перемоток предложена в работе М. А. Гоетца (М. А. Соесз), Щйа) Сошрпсег (ЪегЪ Напс)Ьоо)с, М. К1егег, С. А. Когп (Хеш Уогк: МсСгав-НШ, 1967), 1.311-1.312, Можно представить себе и многие другие гибридные схемы. УПРАЖНЕНИЯ 1. [10] Используя табл.

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

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

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