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

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

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

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

зз' к 49' (К) (23о) 41 36 ЗЗ 32 30 29 28 Время перемотки 17 49 — 17 = 32 шах(8, 24) ших(13, 15) (17,20) шах(11,14) шах(22,24) шах(15, 15) |пах(20, 23) 14 1.3247180 1.4655712 1.5341577 1.5701473 1.5900054 1.6013473 1,6179086 Эти данные будут казаться парадоксальными, пока мы не поймем, что высокий порядок слияния не облзеглельно означает зф4ектиеную сорпгироеку.

В качестве крайнего рассмотрим случай, когда 1 серия помещается на ленту Т1 и и серий— на Т2, ТЗ, Т4, Т5; если поочередно выполнять слияния на Тб и Т1, пока Т2, ТЗ, Т4, Т5 не станут пустыми, то время обработки будет соответствовать 12пз+ Зи) длинам начальных серий, т. е., по существу, будет пропорционалыю тз, а ие Я)оба, хотя все время производится пятипутевое слияние. Распцеплеиие лент. Эффективное совмещение времени перемотки является проблемой, возникающей во многих приложениях, а не только при сортировке. Существует общий подход, который можно использовать в быьшилстве случаев. Рассмотрим итеративный процесс, в котором ленты используются следующим обрезом, Т1 Т2 Вывод 1 Перемотка Ввод 1 Перемотка Вывод 2 Перемотка Фаза 3 Вывод 3 Ввод 2 Перемотка Перемотка Фаза 4 Ввод 3 Вывод 4 Перемотка Перемотка и т.

д. Здесь "Вывод й" означает запись в й-й выводной файл, а "Ввод й" — его чтение. Можно устранить время перемотки, если использовать три ленты, как было предложено в работе Ь. %е1епег, С4СМ 5 (1952), 102: Т1 Т2 ТЗ Фаза 1 Вывод 1.1 Вывод 1.2 Перемотка Вывод 1.3 Фаза 2 Ввод 1.1 Ввод 1.2 Перемотка Вывод 2.1 Перемотка Ввод 1.3 Вывод 2.2 Вывод 2.3 Фаза 3 Вывод 3.1 Вывод 3.2 Перемотка Перемотка Ввод 2.2 Ввод 2.3 Ввод 2,1 Перемотка Вывод 3.3 Фаза 4 Ввод 3.1 Вывод 4.1 Перемотка Ввод 3.2 Перемотка Вывод 4.2 Перемотка Ввод 3,3 Вывод 4.3 и т.

д. Здесь "Вывод к.1" означает запись у-й трети й-го выводного файла, а "Ввод й,~н — ее чтение. В конце концов, будет исключено все время перемотки, если перемотка выполняется, по крайней мере, вдвое быстрее чтении/записи, Подобная процедура, в которой вывод в каждой фазе разделяется между лентами, называется расщеплением лент, В работе В..

Ь. МсЛ))шсег, САСМ T (1964), !58-159, показано, что расщепление лент приводит к аффективному методу совмещения времени перемотки в многофазном слиянии. Этот метод можно использовать с четырьмя или более лентами, и он осуществляет (Т вЂ” 2)-путевое слияние. Предположим снова, что имеется шесть лент, и попытаемся построить схему слияния., которая работает следующим образом, расщепляя вывод на каждом уровне (буквы вГ', "0" и "К" обозначают соответственно ввод, вывод и перемотку). Уровень 7 Число выводимых серна из Фз ив ев из из из ез (21) Чтобы по окончании работы получить одну серию на ленте Т4, а остальные ленты сделать пустыми, необходимо иметь ее=1, ив + юз = О„ из+из = ио+ив1 из + ез = и~ + из + ив+ ио, из + ев = из + вз + из + из + ие + ив, ив + ез = из + ез + из + из + и1 + и~ + ие + ио из + ив = ив + ив + из + оз + из + из + и1 + и1 + ио + ио и т.

д, В общем случае требуется, чтобы ив +ив+З ив-З + ив-~ + ив-З+ ив-З + ив-в+ив в +ив-З + Ев-4 (22) при всех и > О, если считать и! = из = О при всех у < О. Эти уравнения не имеют единственного решения, В самом деле, если попо- жить все и равными нулю, то получится обычное многофазное слияние, причем одна лента будет лишней! Но если выбрать и„~и и„+ы то время перемотки будет удовлетворительно совмещено.

Т! Т2 ТЗ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 К 1 1 О к о 1 0 К к о о к о К 1 1 1 1 1 1 1 1 1 1 1 1 1 Т4 Тз Тб к о о к к о О К 1 О ! ! К 1 1 1 1 1 1 1 1 1 1 ! 1 1 1 1 1 В. 1 1 О 1 К 0 1 О К В, О 1 о к В указанной работе Мак-Аллестер предложил взять Но = Оп-1 + Вп-2 + Оп-3 + Оп-4 ! оп+1 — Нп-! + Пп-2 + Нп-3 + Нп-4! твк что последовательность (ХО,Х!.*2!ХЗ,*4,яз,".) = (Се,ивин»пз,вз,пз! ") УДОВЛЕтВОРЯЕт ОДНОРОДНОМУРЕКУРРЕНтНОМУ СООтНОШЕНИЮХп = Яп 3+Хи 6+Хи 2+ яп о. Оказалось, однако, что лучше положить Оп+! Пп-1 + 11п-1 + Нп-'1 + Сп-2~ Н„= Нп-З+ Оп-3+ Пп-4+ 113-4. (23) Эта последовательность не только немнсно лучше по времени слияния; ее большое преимущество состоит в том, что соответствующее время слияния можно проанализировать математически. Вариант Мак-Аллестера для анализа крайне труден, потому что в одной фазе могут встречаться серии разной длины; мы увидим, что такого не может случиться, если справедливо (23).

Можно вывести число серий на каждой ленте на каждом уровне, дни!вась назад по схеме (21), и получить следующую схему сортировки. Время записи Уровень тг 121 112 111 13 14 1з т1 12з 113 113 116 16 16 12 11 К 191 19'31 К 19'31 191316 191З16 (з!') К 311 З1'и' В. 311526 (52') К 526 526826 (К) 0 х 52 = 0 1 0 х 52 = О шах(36,31, 23) Ох 82 =0 1 х 82 = Вг Несовмещенная перемотка встречается только при перемотке вводной ленты Тб (82 единицы) в течение первой половины фазы второго уровня (27 единиц) и в течение окончательных фаз "фиктивного слияния" на уровнях 1 и 0 (Зб единиц).

Таким образом, время работы можно оценить величиной 2731 + 145г; для алгоритма Р соответствующий параметр 2881+ 208г почти всегда хуже. Нетрудно видеть (см. упр. 23), что длины серий, выводимых во время каждой фазы, суть (24) 4, 4, 7, 13, 19, 31, 52, 82, 133,..., К 1З' 131191 К 13'19! 191 191 ВР ВР (196) ТЗ т4 112 1!о 113 16 11 14 К вЂ” 4 4 К 4471 тз т'и 4'т К 47' т'1з' 4'т' 7'13' 7' 7'13' 7' 1з' т' 1з' т' 1З' 13' К вЂ” вг' В.

46 43 К 3 43 ,14 43 43 4! 4' тв 1!! 11144 К 13 14 1444 1344 44 4з 41 ,11 вг 4 х 4 = 16 6 х 4 = 24 3 х 4 = 12 4 х 4 = 16 1х7=7 3 х 7 = 21 1 х 13 = 13 1 х 1З = 1З 1 х 19 = 19 1 х 19 ш 19 0 х31=0 1х З1 =З1 Время перемотки гз 82 — 23 27 рз зв 17 гз 21 34 гз зг гт 19 при атом последовательность («4, «2, «3,... ) удовлетворяет закону (25) «и = «и-2 + 2«п-3+ «и-4~ если считать «„= 1 при и < О. Можно также проанализировать оптимальное размещение фиктивных серий, рассмотрев цепочки чисел слияний, как для стандартного многофазного метода (ср.

с (8)). УРо»ень Т1 Т2 тз ! 1 1 2 1 1 3 21 21 4 2221 222 Ь 23222 23222 Е ЗЗЗЗ2З222 33332З22 1 1 2 222 2322 333323 Т(й) Т(й-1) (26) А» й» «!» Е» и+1 (А»Е»+ЦВ (Ав'Е»+1)С» (А»»Е»+1)«2» А'„'Е»+1 А'„ Здесь А = А'„А'„' и А'„' состоит из последних нп чисел слияний А„. Приведенное выше правило перехода с уровня и на уровень и + 1 справедливо для любой схемы, удовлетворяющей (22). Если определить и и е, как в (23), то цепочки А,...,.Е можно выразить в следующем, довольно простом, виде (ср. с (9)): где Ип = (Ип-зИ' -4И»-2Итп-3)+ 1 пРи и > О, И'е=О и И»=с прин<0.

(28) Исходя из зтих соотношений, легко подробно проанализировать случай для шести лент. В общем случае, если имеется Т > 5 лент„положим Р = Т вЂ” 2 и определим последовательности (и„), (ип) по правилам В»+1 = Пп-1 + и»-1+ ' ' '+ Пп-т + Еп-т~ (29) ип =и»-т-1+оп-т-!+ "+ип-р+Сп-р Прнн >О, где т = )Р("4), ее = 1 и и„= е„= О при и < О. Если ш„= и»+ с„, то имеем Шп =Шп 2+ .+Ш„,+2Ш„„1+в„, 2+ .+Шп р Прн П > О; (30) !СЕ = 1 и ш„= О при и < О.

Прн начальном распределении для уровня и+1 на ленту Й ПОМЕЩастСЯ Ш„+Ш !+ ° ° +Ш„РЕ4 СЕРИВ ПРИ 1 < Й< РИШ„!+ ° ° ° +Юп „вЂ” на ленту Т; лента Т вЂ” 1 используется для ввода. Затем ип серий сливаются на ленту Т, в то время как лента Т вЂ” 1 перематывается; и„серий сливаются на Т вЂ” 1, пока Т перематывается; и ! серий сливаются на Т вЂ” 1, пока Т вЂ” 2 перематывается, и т. д. А В В1»вЂ” Еп = (И' -1И' 2Ит ЗИ' 4) + 1, (Ип-1 И'и-2Итп-3) + 1, (И' -! И' -2) + 1, (И'и !)+1, (И'и 2Ит„з) +1, Таблица б ПРИБЛИЗИТЕЛЬНЫЕ ДАННЫЕ О ХОДЕ СОРТИРОВКИ МЕТОДОМ МНОГОФАЗНОГО СЛИЯНИЯ С РАСЩЕПЛЕНИЕМ ЛЕНТ Фазы Проходы Проходы/ фазы, % Ленты Отношение !зос"га 2.885 !и Ь'+ 0.000 2.078 !и 8 + 0.232 2.078 1п 5 — О.

170 1.958 1а 8 — 0.408 2.9)8 1а $ — 0.762 1.972 !и Š— 0.987 2. 013 1п Š— 1.300 2.069 !и Š— 3.164 5 6 7 8 9 10 20 1,4142136 1.6180340 1.6180340 1,6663019 1.6454116 1.6604077 1 8433803 1,6214947 1. 443 1п 8 + 1.000 0.929 1п Я + 1.022 0.752 !и 8 + 1.024 0.670 !и Е + 1.007 0,624 !п Е + 0.994 0.595!и 8+ 0.967 0.580 1п Я+ 0.941 0.566 1п Е+ 0.536 50 45 36 34 31 30 29 27 УПРАЖНЕНИЯ 1. [!6] На рис, 69 указан порядок, в котором алгоритм П распределяет по пяти лентам серии 34-65. В каком порядке распределяются серии 1-33? 2.

[31] Верно ли, что после двух фаз слияния в алгоритме П, т. е. когда мы во второй раз достшвем шага Пб, эсе фиктивные серии исчезают? 3. [ЕЕ] Доказките, что по окончании шага П4 всегда выполняется условие 0111 > 0 121 > . ° > 0(Т]. Объясните важность этого условия для правильной работы на шагах 02 и ПЗ. 4. [М30] Выведите производящие функции (7). 5.

[НМ86] (Э. П. Майлс (Е. Р. М!1ев, Лг.), 1960.) Докажите, что при всех р > 2 многочлен /г(х) = х~ -з~ ' — . — х — 1 имеет р различных корней, из которых ровно один превосходит 1 по абсолютной величине. [Указание. Рассмотрите многочлен х"+' — 2хг + 1.] 6. [НМ84] Цель этого упрюкнеиия — рассмотреть способ составления табл, 1, 5 и 6, Предположим, что имеется схема слияния, свойства которой следующим образом характеризуются многочленами р(х) и 9(х), (!) Число начальных серий в "точном распределении", требующем п фаз слияния, равно [х"] р(х)/9(х). (О) Число начальных серий, обрабатываемых в течение этих и фаз гликния, равно [х"]р(х)/д(х)~. (ш) У многочлена 4(х-') есть "главный корень" а, такой, что 9(а-]) = О, а'(а-') и О, р(а-') д О, и из 9(д ') = 0 следует, что 8 = анди [д[ < [а[. Докюките, что существует с > О, такое, что если 5 равно числу серий прн точном распределении, требующая и фаз слияния, а во время выполнении этих фаз обрабатывается В табл.

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

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

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