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

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

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

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

Если бы имелось полное совмещение, как в алгоритме с (2Р + 2) буферами, то суммарное время включало бы только и единиц, так что а~'З~ Р представляет время задержки чтения. Пусть Ао — вероятность того, что мы переходим из состояния ( в состояние у в атом процессе при О < 1,у < Д + 1, где ь) + 1 — новое состояние "остановки". Например, при малых 9 матрицы А будут следуюшими: Р>~» Ре» 1 — » О=1: 1 О О а о о Р>1» Р»т» о о Из упр. 2.3.4.2 — 26(Ь) имеем, что Ро(») = со(ассе»Од(1-А))бег(1 — А). Так, например, е:ли ь) = 1, имеем О -Ре»» — 1 / 1 — Р>1» — Ро»» — 1 У1(») = де» 1 О О / бес -1 1 О » ,о о О О Ро» Ре» = — = з про» (1 — »)1 1 — Р1» — Ре» 1 — » ь>0 так что а„= про Это, конечно, очевидно»арене», так как прн Я = 1 задача очень о) проста.

Аналогичное вычисление для Я = 2 (см. упр. 14) дает менее очевидную формулу: ОО Реп Ре(1 Р1) (10) 1-Р1 (1-Рв)» ' в об ~ем .у чо о по а, о(® им д ~о~ +о(1) при и - °, где константу о~'~~ не слишком трудно вычислить (см. упр. 15). Как оказывается, ') = И(1-Р)'- ° .) Псходя из природы слияния, довольно разумно предположить, что л = 1/Р, и мы имеем биномнальное распределение Ро» О 1 — » Р1» Ре» 1 О О о о о Р, о а Р1» Ре» О Р»» Р1» Ро» О 1 О О О О 1-» 1 †1 » 0 о Например, если Р = 5, то Ре = .32768, р! = .4096.

Рз = .2048, рз — — .0512, ра = .0064 и рэ — — .00032„следовательно, а0) — 0.328, а'з) — 0.182 и а(з) 0.125. Другими словами, если мы используем 5+ 3 вводных буферов вместо 5+ 5, то можно ожидать дополнительного времени "задержки чтения" порядка 0.125/5 2.5%. Конечно, зта модель — только очень грубое приближение. Мы знаем, что прн („'3 = Р вообще нет времени задержки, но если судить по модели, то есть. Дополнительное время задержки чтения для меньших Я почти точно уравновешивает выигрыш в накладных расходах, получаемый от использования более крупных блоков, так что выбор простой схемы с Ц = Р кажется оправданным.

УПРАЖНЕНИЯ 1. «13] Выведите формулу для вычисления точного числа символов на ленте, если в каждом блоке содержится и символов. Считайте, что лента могла бы вместить ровно 23 ООО ООО символов, если бы не было междублочных промежутков. 2. «15] Объясните, почему первый буфер файла 2 в строке б на рнс, 84 совсем пуст.

3. [88] Будет лн алгоритм Р работать должным образом, если вмегто 2Р буферов ввода имеется только 2Р— 1? Если да, дгжажите это; если нет, приведите пример, когда алгоритм ие выполняется. 4. «80] Как изменить алгоритм Р, чтобы он работал и при Р = 1? б. «31] Если в различных файлах имеются равные кличи, необходимо в процессе прогнозирования действовать очень аккуратно. Объясните, почему. Покажите, как избежать трудностей, если более строго ипрелелнть операции слияния и прогнозирования в алгоритме р. б. «33] Какие изменения при работе с Т+ 1 лентами следует сделать в алгоритме 5,4,3С, чтобь! преобразовать его в алгоритм каскадного слияния с сова!еп!ением перемотки? 7.

«Об] Начальное распределение в примере 7 диаграммы А порождает (.4,Р,)" Р!(Агп!)' .Р!(АгР!) .Р!(А!Р!) на лентах 1. 4, где (А!Р!)! означает А!Р!А!Р!АгП!А,Р,А,Р А Р!А,Р,. Покажите, как всчввить дополнителыгьге серии Ае и Ро наилучшим нз воз!!ожных способов (в том смыгле, что общее число обрабатываемых во время слияния начальных серий будет минимальным), чтобы привести распределение к следующему виду: А(ПА)" (ПА)" (ПА)" (РА)".

Указание. Чтобы сохранить четность, необходимо вставлять серии Ае и Ре в виде соседних пар. Числа слияния для каждой начальной серии могут быть подсчитаны, как в уор. 5.4.4-о; здесь появляется некоторое упрощение, так как соседние серии всегда имеют соседние числа слияния. 8. «30] На диаграмме А видно, что большинство схем началыюго распределения серий (за исключением нси!ального распределения для каскадного слияния) имеет тенденцию к помещению последовательных серий на различные ленты. Если бы последовательные серии попали на одну ленту, то мы ма~ли бы сэкономить стартстопное время. Можно ли поэтому считать продуктивной идею изменения алгоритмов распределения так, чтобы они реже переключали ленть!? 9.

«88] Оцените, сколько времени заняло бы выполнение мнагофазного алгоритма с обратным чтением из показан!ых на диаграмме А, если бы лля сортировки использовалнсь все Т ж б лент, а не Т = 5, как в примере 7. Было ли разумно избегать использования вводной ленты? 10. [МЯУ] Используя анализ.

проведенный в разделах о.4.2 и 5.4.3, покажите, что длина каждой перемотки во время стандартного многофазного слияния с шестью лентами илн каскадного слияния редко превьппает 54% длины файла (исключая начальную и конечную перемотки, которые охватывают весь файл). 11. [23] Откорректировав соответствующие злементы табл, 1, оцените, сколько времени заняло бы выполнение первых девяти примеров на диаграмме А, если бы мы имели двухскоростную перемотку (быструю и медленную). Считайте, что Р = 1, если лента заполнена меньше чем на одну четверть, а для более заполненной ленты время перемотки разно приблизительно 5 с плюс то время, которое получилось бы при Р = 1.

Измените пример 8 так, чтобы в нем использовалось каскадное слияние с копированием, поскольку перемотка и прямое чтение в зтам случае происходят медленнее копирования, [Указание. Используйте результат упр. 10.] 12. [40] Рассмотрим разбиение шести лент на три пары лент, где каждая пара играет роль одной ленты в многофазном слиянии с Т = 3.

Одна лента каждой пары будет содержать блоки 1, 3, Ь,..., а другая — блоки 2,4, б,...: таким способом мы, по существу, добиваемся того, чтобы во все время слияния лве вводные и две выводные ленты оставались активными, причем зффективная скорость слияния удваивается. а) Найдите подходящий способ распространения алгоритма г на зтот случай. Ь) Оцените общее время выполнения, которое получилось бы, если бы зтот метод использовался лля сортировки 100,000 записей по 100 символов, рассмотрев случаи как прямого, так и обратного чтения.

13. [30] Может ли метод осциллирующей сортировки с пятью лентами в том виде, в котором он определен в алгоритме 5.4.5В, использоваться для сортировки четырех полных бобин исходных данных до момента окончательного слияния? 14. [М19] Выведите (10). 15. [ИМИ] Докажите, что де(х) ж 50(г)/(1 — з), где ЙО(з) является рациональной функцией з, не имеющей особых точек внутри единичного круга, следовательно, а„= Йо(1) и+ %1 0(1) прн и -+ оо. В частности, покажите, что 0 -Ро О 0 1 -Ро Ьз(1) = с(ес Р' Ро ~ с(ег 1 0 О 0 0 О 16.

[41] Детально изучите сортировку 100,000 записей по 100 символов, нарисуйте диа граммы, подобные диаграмме Л, в предположении, что имеется 3, 4 н 5 лент. *5.4.7. Внешняя поразрядная сортировка В предыдущих разделах раглматрнвалась сортировка методом слияния файлов на лентах. Но существует и другой способ сортировки на лентах, основанный на принципе поразрядной сорти)ювки, который ранее использовался в механических сортировальных машинах для перфокарт (см. раздел 5.2.5).

Этот метод иногда называют распределяющей сортировкой, сортировкой по колонкам, карманной сортировкой, цифровой сортировкой, сортировкой методом разделения и т. д. Он, как оказывается, по существу, прогпивополошсен слияникй Предположим, например, что в нашем распоряжении имеются четыре ленты, а ключей может быть только восемь: О, 1, 2, 3, 4, 5, б, 7. Если исходные данные сгдержатся на ленте Т1, то начнем с переписи всех четных ключей на ТЗ и всех нечетных — на Т4. Т2 Т1 (О, 1, 2, 3, 4, 5, б, 7) Т4 Дано Проход 1 (0,2,4,6) (1,3,5,7) Теперь перематываем ленты и читаем сначала ТЗ, а затем — Т4, переписывая (О, 1,4,5) наТ1и(2,3,6,7) наТ2.

Проход 2 (О, 4Ц1,5) (2, 6ЦЗ, 7) (Строка "(0,4Ц1,5)" обозначает файл, содержащий записи только с ключами 0 и 4, за которыми следуют записи только с ключами 1 и 5. Заметим, что на Т1 теперь находятся те ключи, средний двоичный разряд которых содержит 0.) После еще одной перемотки и распределения ключей О, 1, 2, 3 на ТЗ и ключей 4, 5, б, 7 на Т4 получаем следующее. Проход 3 (ОЦ1Ц2ЦЗ) (4ЦЗЦОЦ7) После копирования Т4 в конец ТЗ работа завершается, В общем случае для ключей и диапазоне от 0 до 2" — 1 можно аналогичным образом рассортировать файл за Ь проходов, после которых следует фаза окончательной "сборки": На этом этапе примерно половина данных копируется с одной ленты на другую. Имея шесть лент, можно так же использовать представления по основанию 3 для сортировки ключей от О до Зь — 1 за Й проходов.

Существуют модификации этого метода с частичными проходами. Предположим, например, что допускается десять ключей (0,1,...,9), и рассмотрим следующую процедуру, авторство которой принадлежит Р. Л. Эшенхерсту (К. 1.. АэЬепЬогвэ) ~ТЬеогу ог'8ибгсЬ1л8, Ргойтшв Верогг В1 7 (Нвгтагб Пшт. Сошр. ЬаЬогагогу: Мау, 1954), Ь1-1.76]. Фаза Т1 Т2 ТЗ Т4 Проход (0,1,...,9» (0,2,4,7) (1,5,6) (3,8,9) (О) — (1,5,6Ц2,7) (3,8,9Ц4) (ОЦ1Ц2) (ОЦ7) — (3,8,9Ц4Ц5) (ОЦ1ЦЗЦЗ) (б) (7Ц8) (9) (4Ц5) (ОЦ1Ц2ЦЗЦ4)...

(9) 1 2 3 4 С 1.0 0.4 0.5 0.3 О.б 2.8 Здесь С представляет фазу сборки. Если каждое значение ключа встречается примерно в одном из десяти случаев, то эта процедура для сортировки десяти ключей затрачивает только 2.8 прохода, в то время квк в первом примере требуется 3.5 прохода для сортировки всего восьми ключей.

Таким образом, продуманая схема распределения влечет за собой значительное различие в показателях эффективности для поразрядной сортировки точно так же, как для слияния. Схемы распределения из предыдущих примеров представим, как и обычно, древовидными структурами. Пример 1 Пример 2 в а т т Круглые внутренние узлы этих деревьев пронумерованы 1, 2, 3, ... в соответствии с шагами процесса 1, 2, 3, .... Имена лент А, В, С, Р (вместо Т1.

Т2, Т3, Т4) помещены рядом с ребрами дерева, чтобы указать, куда попадают записи. Квадратные внешние узлы изображают фрагменты файла, содержащие только адин ключ, и этот ключ выделен полужирным шрифтом под соответствующим узлом. Ребра, расположенные над квгдратными узлами, помечены именем выводной ленты (С в первом примере, А — во втором). Таким образом, на шаге 3 примера 1 выполняется считывание с лепты Р н запись ключей 1 и 5 на ленту А и ключей 3 и 7 на ленту В. Нетрудно видеть, что число выполняемых проходов равно длине внешнего пугли дерева, деленной на число внешних узлов в предположении, что все ключи равновероятны.

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

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

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