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

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

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

(ср. с фазами 1-5). Преимущества схеиы Бенчера можно видеть, если ииеется, например, только пять начальных серий: осциллирующая сортировка (ее модификация из упр. 2) выполняла бы четырехпутевое слияние (на фазе 2), за которым следовало бы двухпутевое слияние с общей стоимостью 4 + 4+ 1+ 5 = 14, тогда как схеиа Бенчера выполняла бы двухпутевое слияние (на фазе 3), за которым следовало бы четырехпутевое слияние с общей стоимостью 4+ 1+ 2+ 5 = 12.

Оба метода также требуют небольших дополнительных затрат, а именно — однократной перемотки перед окончательным слиянием. Точное описание метода Бенчера содержится ниже, в алгоритме В. К сожалению, соответствующую процедуру, по-видимому, трудней понять, чем запрограммировать; легче объяснить данный метод компьютеру, чем программисту! Частично зто происходит по той причине, что рекурсивный метод выражен в итеративном виде и затем подвергнут некоторой оптимизации; читатель, возможно, обнаружит, что приходится несколько раз проследить за работой алгоритма, прежде чем станет понятно, что же происходит. Алгоритм В (Осииллируюи»аи сортировка с "»1ерекрестним" распределением). Этот алгоритм берет первоначальные серии и распределяет их по лентам, время от времени прерывая процесс распределения, чтобы слить содержимое некоторых Фаза 1 Фаза 2 Фаза 3 Фаза 4 Фаза 5 Фаза 6 Фаза 7 Фаза 8 Фаза 9 Распределение Распределение Слияние Распределение Слияние Распределение Слияние Распределение Слияние А» А,А» А» А»А1 А» А»А» А» А» 4 3 4 3 4 3 4 3 4 лент (рис.

77). В алгоритме используется Р-путевое слияние и'предполагается, что имеется Т = Р + 1 > 3 накопителей на магнитной ленте (НМЛ) (хе считая устройства, которое может применяться для хранения исходных данных). НМЛ должны допускать чтение как в прямом, так и в обратном направлениях; они обозначены числами О, 1,..., Р. Используются следующие массивы. Р [у], 0 < у < Р: Число фиктивных серий, наличие которых предполагается в кон- це у'-й ленты А[1,]], 0 < 1 < Ь, Здесь Ь вЂ” достаточно большое число, такое, что будет введено О < у < Р: Рь Ы начальных серий.

Если А[1,1] = А > О, то на ленте у имеется серия номинальной длины Рь, соответствующая "уровню Г работы алгоритма. Эта серия — восходящая, если ь. четно, и нисходящая, если А нечетно. А[1,]] < 0 означает, что на уровне 1 лента у не используется Инструкция "Записать начальную серию на ленту у" является сокращенным обозначением следующих действий. Установить А[1,1] +- О. Если исходные данные исчерпаны, то увеличить О[у] на 1, в'противном случае записать серию на ленту ] (в порядке возрастания).

Инструкция "Произнести слияние на ленте у е используется как краткое обозначение следующих действий. Если 0 [1] > 0 для всех 1 ф ], то уменьшить О [1] на 1 при всех 1 ~ у и увеличить О[у] на 1. В противном случае произвести слияние одной серии нв ленте у со всех лент 1 ф у, таких, что 0 [1] = О, и уменьшить 0 [1] на 1 для всех остальных [Ф я'. Рис. 77. Осциллнрующая сортировка с "перекрестным" распределением. В1. [Начальная установка.) Установить 0[у] < — 0 при 0 < ] < Р. Установить А[0, 0] +- — 1, 1 е- О, д е- О. Затем записать начальную серию на ленту у' для 1 < у < Р. В2. (Ввод завершен?] (В этот момент лента й пуста и всякая другая лента содержит максимум одну серию.) Если еще есть исходные данные, перейти к шагу ВЗ. Однако если ввод исчерпан, то перемотать все ленты у ф д, такие, что А[О,Я четно; затем выполнить слияние на ленту д, читая все только что перемотанные ленты в прямом направлении, а остальные ленты — в обратном.

Этим завершается сортировка; результат находится иа ленте д в порядке возрастания. ВЗ. [Начать новый уровень.] Установить!»-1+ 1, 㻠— д, в +- 0 и с!» — [4+ 1) пюс1 Т. Записать начальные серии на ленты [с7+1) шос) Т, где 1 < 1 < Т вЂ” 2. [Таким образом, начальные серии будут записаны на все ленты, кроме лент 4 и г.) Установить А[1,д) +- — 1 и А[1,гз» вЂ” — 2. В4.

[Можно ли выполнять слияние7] Если АП-1, д) ф в, вернуться к шагу ВЗ. В5. [Слияние.] [В этот момент А[! — 1,9) = А[1,уЗ = в при всех 1' ф д, у' ~ г.) Выполнить слияние на ленте г, читая в обратном направлессии. [См. выше определение этой операции.) Затем установить ⻠— в+ 1, !»- ! — 1, А[1, г!» — в и А[1,9)»- — 1. Установить 㻠— (2д — г) пюс1Т.

[В общем случае имеем г = [д — 1) шас1 Т, если в четно, и г = [д + 1) пюс! Т, если в нечетно.) Вб. [Завершена ли формирование уровня?] Если ! = О, перейти к шагу В2. В противном случае, если А[1,1] = в для всех у' ф с7 и ! ~ г, перейти к шагу В4. В противном случае вернуться к ВЗ. в Чтобы показать работоспособность этого алгоритма, можно использовать доказательства наподобие рекурсивной индукции так же, как для алгоритма 2.3.1 Т. Предположим, что мы начинаем с шага ВЗ при 1 = !о, д = до, в» = АИо, (с7о+1) спас! Ту и в = А[!о, [до — 1) спас) Т3. Допустим, кроме того, что либо ве = О, либо в = 1, либо в+ — — 2, либо в = 3, либо ..

Можно проверить по индукции, что алгоритм, в конце концов, придет к шагу В5, не изменив строки А с 0-й по 1о-ю. При этом будут получены следующие значения переменных: ! = !о+ 1, д = оо ~ 1, г = оо и в = в+ илн в . Причем выбирается знак "+", если вэ —— 0 или [вэ — — 2 и в ф 1), или (в+ —— 4 и в ф1,3),илн .,изнак "—" — если(в =1ив+ фО) или[в =Зив».ф0,2), или .

- .. Приведенный здесь "набросок" доказательства не очень элегантен, но ведь и сам алгоритм сформулирован в виде, который больше годится для реализации, чем для проверки правильности. На рнс. 78 показана эффективность алгоритма В, выраженная средним числом слияний каждой записи в зависимости от 5 — числа начальных серий, причем предполагается, что начальные серии приблизительно равны по длине. (Соответствующие графики для многофазной и каскадной сортировок приведены на рис. 70 и 74.) При подготовке рнс.

78 учтено небольшое усовершенствование, упомянутое в упр. 3. Метод, некоторым образом связанный с рассмотренным и названный круговой сортпироокой (йугабпй вогС), разработан Р. М. Карпом (В. М. Катр) и основан на теории слияния в прямом порядке, приведенной в разделе 5.4.4. [См.

СашЫпаСопа! А18аг!йшв, ес!!сесе Ьу ВапбаИ Вцв11п (А!8ог!1Ьш!св Ргевв, 1972), 21-29.] Прямое чтение. Схема осциллирующей сортировки, по-видимому, требует возможности чтения в обратном порядке, поскольку приходится где-то накапливать длинные серии. Тем не менее в работе М.

А. Соесхс Ргос. АГХР5 Ярг!пл,7а1пС Сошр. СолЕ 25 [1964), 599-607, найден способ выполнения осциллирующей сортировки с помощью только прямого чтения и простой перемотки. Предложенный метод в корне отличается от остальных схем, которые мы рассматривали в этой главе, по следующим причинам. !з т-з й 9 у 0 7 о й о о 5 4 о" з т-4 Т40 Т=7 т=о т= 1о о 1 2 5 10 20 50 100 200 500 1000 2000 5000 Начальные серне, Х Рис. ТВ. Эффективность осцнллнрующей сортировки, использующей метод алгоритма В н упр. 3.

а) Данные иногда записываются в начвло ленты, причем предполагается, что данные, которые находятся на середине ленты, не разрушаются. Ь) Бее начальные строки имеют фиксированную максимальную длину. Условие !а) нарушает свойство "первым включается — первым исключается', которое, как мы предположили, является характеристикой чтения в прямом порядке. Однако оно может быть надежно реализовано, если между сериями оставлять участок чистой ленты достаточной протяженности и если в нужные моменты пренебречь ошибками четности. Условие (Ь) оказывается до некоторой степени противоречащим эффективному использованию выбора с замещением.

Осциллирующая сортировка Гоетца !Сое!н) с прямым чтением имеет одно сомнительное достоинство — зто один из первых алгоритмов, который был запатентован как алгоритм, а не как физическое устройство ~ Г 5. Ра1еп! 3380029 !1968)); если зто не удастся оспорить, то нз факта патентования следует, что алгоритм нельзя использовать в программе без разрешения владельца патента. Метод Бенчера !осциллирующая сортировка с обратным чтением) был запатентован 1ВМ несколькими годами позже. (Увы, мы являемся свидетелями конца эры, когда удовольствие от открытия нового алгоритма само по себе считалось достаточным вознаграждением! К счастью, осциллирующвя сортировка не настолько уж хороша, чтобы из-за нее стоило ломать копья.

Будем все-таки надеяться, что здравомыслящие ученые, придумывая новые алгоритмы, будут продолжать делать свои идеи достоянием всех. Что касается тех недальновидных людей, которые хранят новые алгоритмы в строгом секрете, то нужно сказать, что они немного выигрывают по сравнению с п»ирокой доступностью своих результатов, поскольку право собственности сохраняется в течение лишь ограниченного времени.) Центральная идея в методе Гоетца состоит в таком использовании лент, чтобы каждая лента начиналась с серии относительной длины 1, за которой следовала бы серия относительной длины Р, затем — Рз и т. д.

Например, если Т = 5,. то сортировка начинается следующим образом ["." указывает текущее положение головки чтения/записи на каждой ленте). Операция Т1 Т2 Распределение ..4» .А» ТЗ Т4 ТЗ .А» А» Л» Фаза 1 .А» Аь .Л» .4» Фаза 3 Распределение .Л» .А» А» А» А» А» А» А» А»»6».А» '4гА» Фаза 5 Распределение .А» Слияние '$». фаза 6 А» А» А» .А! А» .А» А» Фаза 2 Распределение .А» И так далее. Во время фазы 1 лента Т1 перематывается и одновременно на Т2 записываются исходные данные; затем перематывается Т2 и одновременно на ТЗ записываются исходные данные и т. д.

В конце концов, ко»да исходные данные исчерпаны, начинают появляться фиктивные серии, н иногда необходимо вообразить, что они записаны явно на ленте полной длины. Например, если Я = 18, то серии А» на Т4 и Т5 будут зафиксированы во время фазы 9; нам придется продвинуться вперед по Т4 и Т5 при слиянии с Т2 и ТЗ на Т1 во время фазы 10, так как надо добраться до серий А» на Т4 и Т5 для подготовки к фазе 11. С другой стороны, фиктивная серия А» на Т1 необязательно должна существовать явно. Таким образом, "конец игры" несколько замысловат. Еще с одним примером применения этого метода мы встретимся в следующем разделе Фаза 2 Слияние !4г $г !4, $» А» А» Фаза 4 Слияние .'6».

15». 41». А, А,. 41гА» фаза 8 Слияние»5», А» А». $»А» $, » '[» Фвзв 9 Распределение А»..А» А» .А» А» .А» А» .А» А» Фаза 10 Слияние А»А». $гА» 34гА» $» Л» 15» -4» Фаза 11 Слияние А»А»А»в $» $» 15»»5» $» М»»5» з»» 'Стоимость" Примечание 5 [Т5 не перематывается] 4 [Перемотка всех лент] 4 [Т4 не перематывается! 4 [Перемотка всех лент] 4 [ТЗ не перематывает ся] 4 [Перемотка всех лент] 4 [Т2 не перематывается] 4 [Перемотка всех лент) 4 [Т1 не перематывается] 4 [Нет перемотки] 16 [Перемотка всех лент] 51ПРДжНВНИЯ 1.

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

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

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

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