AOP_Tom3 (1021738), страница 71

Файл №1021738 AOP_Tom3 (Полезная книжка в трёх томах) 71 страницаAOP_Tom3 (1021738) страница 712017-07-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Т1 и а 5« с« 4« в Т(/с) и+ 1 а + 0 а„+ с„а„+ ««„а„+ е а 1„+ 4а„ Т(й — 1) (1) (После начального распределения лента Тб всегда будет пустой.) Из правила перехода от уровня и к уровню и + 1 ясно, что условия (2) а«> 5«> с«> «(„> е« выполняются на любом уровне.

В самом деле, легко видеть из (1), что Е« =а«1, «?« = а«1+Е«1 = а««+а«2, с« = «1« — 1 + «2«-1 = «1« — ) + «1«-2 + а«-3 5« = а«1 + с«1 = а«1 + а«-г + а«-з + а««, «1« = а«1+ 5«1 — — а««+а«-2+ а«з + а««+ а«-з, (3) где ав = 1 и где мы полагаем, что а« = 0 при и = — 1, — 2, — 3, — 4. Уровень 0 1 2 3 4 5 6 7 8 1 1 2 4 8 16 31 61 120 Т2 ТЗ Т4 Т5 0 0 О 0 1 1 1 1 2 2 2 1 4 4 3 2 8 7 6 4 15 14 12 8 30 28 24 16 59 55 47 31 116 108 92 61 Сумма 1 5 9 17 ЗЗ 65 129 253 497 Окончательный результат будет на Т1 Тб Т5 Т4 ТЗ Т2 Т1 Тб Т5 Числа Фибоначчи р-го порядка г„" определяются правилами г„( ) = Р(Р), + Р(п) + ..

+ г„( ) при п > р; Р(~)=О приО<п<р — 2; ~Г~~,=1. (4) Другими словами, мы начинаем с р — 1 нулей, затем пишем 1 и каждое следующее число является суммой р предыдущих чисел. При р = 2 это обычная последовательность Фибоначчн; для больших значений р ее впервые изучил, по-вндимому, В. Шлегель |Ч.

ЯсЫебе!) в Е( Ргойгеэо Ма(ета(гсо 4 (1894), 173-174. Шлегель вывел производящую функцию Е-""- (о) и гг г~ — ег п и 1 г гг ... сп 1 2г + ге+1 и>э (3) Формула (3) показывает, что число серий на Т1 в процессе шестнленточного многофазного слияния является числом Фибоначчи пятого порядка: а„= Ги В общем случае, если положить Р = Т вЂ” 1, распределения в многофазном слиянии для Т лент будут аналогичным образом соответствовать числам Фибоначчи Р-го порядка.

В точном распределении и-го уровня на )с-й ленте будет ~пЛ-Р— г + и-1-Р Ъ + + Рипа — г (Р) (Р) (Р) начальных серий для 1 < )с < Р, а общее количество начальных серий на всех лентах будет, следовательно., равно (и РРп+Р-г + (~ 1) п+Р-г + + Рп-1' (Р) (Р) (Р) (6) Алгоритм 1л (Сортироека методом многофаэного слияния с испольэоеанием пгориэонтпальногои распределения). Этот алгоритм (рис. 68) берет начальные серии и распределяет их одну за другой по лентам, пока запас начальных серий не исчерпается.

Затем он определяет, как необходимо сливать ленты, используя Р-путевое слияние, в предположении, что имеются Т = Р+ 1 > 3 накопителей на магнитной ленте. Ленту Т можно применять для хранения исходньгх данных, так как на нее не записывается ни одна начальная серия. В памяти хранятся следующие таблицы. (( [у), 1 < у < Т: Точное фибоначчиево распределение, к которому мы стремимся 0 (Я, 1 < у < Т: Число фиктивных серий, которые считаются присутствующими в начале ленты на логическом устройстве с номером у' Это решает вопрос о "точном фибоначчиевом распределении".

Но что мы должны делать, если 5 не равно в точности ги ни при каком п7 Как первоначально поместить серии на ленты7 Если 5 не является точным числом Фибоначчи (а чисел Фнбоначчн не так уж много), то можно действовать, как в сбалансированном Р-путевом слиянии, добавляя "фиктивные серии"; поэтому можно считать, что 5, в конце концов, будет точным.

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

ТАРЕ[]], 1 < ! < Т: Номер физического накопителя на магнитной ленте, соответствующего логическому устройству с номером ] (Удобно работать с номерами "логических" накопителей на магнитной ленте, соответствие которых физическим накопителям меняется в процессе выполнения алгоритма.) 1!1. (Начальная установка.] Установить А[у] г — О[Я +- 1 н ТАРЕ[!'] < — ] при 1 < у ( Т. Установить А [Т] +- 0 [Т] ~ — О и ТАРЕ [Т] +- Т.

Затем установить 1 е- 1, ] г- 1. Р2. ]Ввод на ленту Д Записать одну серию на ленту у и уменьшить О[у] на 1. Затем, если ввод исчерпан, перемотать все ленты и перейти к шагу П5. 113. !Продвижение г'.] Если О[г] ( О[1'+ Ц, то увеличить у на 1 и вернуться к шагу П2. В противном случае, если О[у] = О, перейти к шагу П4, иначе— установить ] ! — 1 и вернуться к шагу 02.

Р4. (Подняться на один уровень.] Установить 1 < — 1+ 1, а г — А [Ц, затем для у = 1, 2, ..., Р (именно в таком порядке) установить О[у] < — а + А[у + Ц вЂ” А[]] и А[]] г — о+ А[у + Ц. (См. (1). Отметим, что А[Р+ Ц всегда О. В этом месте будем иметь ОШ > 0[2] » .. Р[Т].) Теперь установить у г — 1 и вернуться к шагу П2.

Рб. (Слияние.] Если! = О, то сортировка завершена и результат находится на ТАРЕ Ш. В противном случае выполнять слияние серий с лент ТАРЕ [Ц,..., ТАРЕ[Р] на ТАРЕ[Т] до тех пор, пока ТАРЕ[Р] не станет пустой и О[Р] = О. Процесс слияния для каждой сливаемой серии должен протекать следующим образом. Если 0 [!] > О для всех у, 1 < г' < Р, то увеличить О [Т] на 1 и уменьшить каждое Р []] на 1 для 1 < ! < Р; в противном случае выполнять слияние по одной серии с каждой ленты ТАРЕ[]], такой, что о[у] = О, и уменьшить О[,!] на 1 для остальных г'. (Таким образом, считается, что фиктивные серии находятся в начале ленты, а не в конце.) Т4 Ть Рис.

69. Порядок, в котором серии 34-65 распределяются нз ленты при переходе с уровня 4 на уровень 5. (См. таблицу точных распределений (1).) Заштрихованные области соответствуют первым ЗЗ сериям, которые были распределены к моменту достижения уровня 4. Последняя строка в каждой колонке соответствует началу ленты. 34 35 зв 42 46 51 56 6! Т, 36 39 43 47 52 57 62 Тз 37 46 44 46 58 63 Тз Р6. (Опуститься на один уровень.] Установить 1 +- 1 — 1. Перемотрть ленты ТАРЕ [Р] и ТАРЕ[2'] (В действительности перемотка ТАРЕ[Р] могла быть начата на шаге 05, после ввода с нее последнего блока.) Затем установить (ТАРЕ[1], ТАРЕ[2], ...,ТАРЕ[Т]) +- (ТАРЕ[Т],ТАРЕ[1],...,ТАРЕ[Т вЂ” 1]), (9[Ц,6[2], 6[2]) 4— (9 [Т],0 [Ц,..., 0 [Т вЂ” Ц ) и вернуться к шагу 05, Правило распределения, которое так лаконично сформулировано на шаге 03 этого алгоритма, стремится по возможности уравнять числа фиктивных серий на каждой ленте.

На рис. 69 иллюстрируется распределение серий, когда мы переходим от уроння 4 (ЗЗ серии) к уровню 5 (65 серий) в сортировке с шестью лептами; если было бы, скажем, только 53 начальные серии, то все серии с номерами 54 и выше рассматривались бы как фиктивные. (На самом деле серии записываются в конец ленты, но удобнее считать, что они записываются в начало, так как предполагается, что фиктивные серии находятся в начале ленты.) Мы уже рассмотрели первые три из поставленных выше вопросов; осталось выяснить число "проходов"' по данным.

Сравнивая наш "шестиленточный пример" с таблицей (1), мы видим, что суммарное количество обработанных начальных серий при 5 = 16 составляет аз1з+а46г+оз13+аз14+аз16+аогб, если исключить начальный проход распределения. В упр. 4 выводятся производящие функции 1 а(з) = 7 а„з" = зт зЗ 64 зз' 56+ 462+ Ззз+ 264+ зз (7) 6(з) = ~~~ й~з" = 1 — з — зз — зз — з4 — зз ' л>1 Отсюда следует, что в общем случае число обрабатываемых начальных серий при Я = ьь Ранип КОЭффИЦИЕНтУ ПРИ 3" В ПРОИЗВЕДЕНИИ а(З)1(З) ПЛЮС 1„(зтО ДаЕт начальный проход распределении). Теперь вычисляем асимптотическое поведение многофазного слияния, как показано в упр.

5-7, и получаем результаты, приведенные в табл. 1. В табл. 1 "Относительный рост" есть предел 1пп„4„44/1„, показывающий, во сколько приблизительно раз возрастает число серий на каждом проходе. "Проходы" — это среднее количество обработок каждой записи, а именно — — 1/Я, умноженное на общее число начальных серий, обрабатываемых в течение фаз распреде- Таблица 1 АППРОКСИМАЦИЯ ПОВЕДЕНИЯ СОРТИРОВКИ МЕТОДОМ МНОГОФАЗНОГО СЛИЯНИЯ Ленты Фазы Проходы Проходы/ Относительный фазы, % Рост пения и слияния. Указанные числа проходов и фаз справедливы в каждом случае с точностью до 0(В ') при некотором е > 0 для точного распределения при  — > оо. На рис. 70 изображены в ниде функций от В средние количества слияний каждой записи с помощью алгоритма В для неточных чисел.

Заметим, что при использовании трех лент сразу после точных распределений появляются "пики" относительной неэффективности, но это явление в значительной степени исчезает при наличии четырех или более лент. Использование восьми или более лент дает сравнительно малое улучшение по сравнению с шестью или семью лентами. Более детальный анализ. В сбалансированном слиянии, требующем к проходов, каждая запись обрабатывается в ходе сортировки ровно /г раз.

Но многофазная процедура не является такой беспристрастной: одни записи могут обрабатываться намного больше раз, чем другие, и можно увеличить скорость, если помещать фиктивные серии в часто обрабатываемые позиции. По этой причине проанализируем более подробно многофазное распределение. Вместо того чтобы интересоваться только числом серий на каждой ленте, как в (1), присвоим каждой серии число слияний, т. е. определим, сколько раз она будет обрабатываться в течение всего процесса сортировки.

Вместо (1) получим следующую таблицу. Т1 Т4 ТЗ О 1 21 3221 43323221 5443433243323221 1 2 32 4332 54434332 1 21 3221 43323221 544343324332322 1 21 322 433232 544343324332 1 21 3221 4332322 54434332433232 Сп Пп Еп (Ап+ВП (А +ИЬ' Ап+1 (8) А„ (Ап + 1)Вп В (Ап т 1)Сп и н+1 Здесь Ап — цепочка из ап значений, представляющих числа слияний каждой серии на Т1, если начать с распределения и-го уровня; „— соответствующая цепочка для Т2 и т.

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

Тип файла
DJVU-файл
Размер
10,16 Mb
Тип материала
Высшее учебное заведение

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

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