Главная » Просмотр файлов » Virt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s)

Virt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s) (522393), страница 24

Файл №522393 Virt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s) (Алгоритмы + структуры данных = программы) 24 страницаVirt N. Algoritmy struktury dannyh = programmy (ru)(T)(410s) (522393) страница 242013-09-14СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

2.13 можно вывестн соотношения а«в и а«1 2 ! > а1!+и ««~ 1!ЛЯ 1> ~ =а,'+а, проходе 6 серий сливаются иа 16; в конце работы на ленте 12 содержится отсортированное множество элементов (см. рис. 2.16). Миогофазная сортировка более эффективна, чем сбалансированная сортировка, поскольку, если даны М лент, она всегда имеет дело с (М вЂ” 1)-путевым слиянием вместо М/2- путевого слияния. Поскольку число требующихся проходов приблизительно равно 1опл и, где и — число сортируемых элементов, а й1 — чнсло входных лент для слияния, многофаз. ный метод обещает дать значительное улучшение по сравнению со сбалансированным слиянием.

Разумеется, в приведенных примерах было тщательно подобрано распределение начальных серий. Для того чтобы узнать, какие исходные распределения серий требуются для правильной работы алгоритма, мы пойдем обратным путем, начиная с окончательного распределения (последняя строка на рис. 2.!6).

Переписывая таблицы для этих двух примеров и поворачивая каждый ряд на одну позицию по отношению к предыдущему ряду, мы получаем табл. 2.13 и 2.14 для шести проходов и для трех и шести лент соответственно. Таблица 2.!8. Идеальное распределение серий на двух лентах а(п а)п ,'~ ап! х.а, Сортараваа аоахе<товательных фейхоа 131 и а(")=1, а<за)=0. Полагая а(<=(„мы получаем 11+)=11+11 ), для 1)1, ~1=1, 1а — — О. (2.41) Это — рекурсивные правила (или рекуррентные соотношения), определяющие так называемые числа Фибоначчщ О, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ....

(2.42) Подстановка 11 вместо а)! дает 1!+! = 11+ Л1-<+ Т(-3+11-3+ )( 3 для 1~ ~4, 1,=1, (2.43) 11=0 для ! (4. Эти числа являются так называемыми числами Фибоначчи порядка 4. В общем виде числа Фибоначчи порядка р определяются следующим образом; )(е), ='1<а)+ )<<Р), + ... + 1<е) для 1~~р, 7~ф = 1„ К<1" =-0 для 0(1( р. (2.44) Заметим, что обычные числа Фибоначчи имеют порядок 1. Теперь мы убедились, что исходные числа серий для идеальной многофазной сортировки с и лентами должны быть суммами п — 1, н — 2, ..., ! (см.

табл. 2.15) последовательных чисел Фибоначчи порядка и — 2. Из этого следует, что алгоритм многофазиого слияния применим только к таким входным данным, в которых число серий есть сумма Каждое число Фибоначчи представляет собой сумму двух предшествующих чисел. Итак, для того, чтобы многофазный метод с тремя лентами работал правильно, числа начальных серий иа днух входных лентах должны быть двумя соседними в ряду Фибоначчи. А что можно сказать относительно второго примера (табл.

2.14) с шестью лентамит Правила построения чисел легко записать в таком виде: , (1+!) п(1) о<!-т!) — о<1)+ о<о — оа)+ ф- ) 3 и<! ю)=а<" +о")=а< )+а(1 ')+ а<1-3), 3 ! ! ! о(!+!) = о(п+ ()(!) ан) + а<1-!) 1 а(1-3)+ п(1 — 3) 3 <(~а<! )<1) + дщ — о(1) ( о(1 — !) 1 о(1-3) + о(1-3) ( з(1-4) ! 2 ! 1 ! ! ! 2. Сортировка Таблица 2.!б. Количество серий, прн которых воаножно идеальное распределение | п 3 4 5 6 7 8 и — 1 таких сумм Фибоначчи. Итак, возникает важный вопрос: что делать, если число начальных серий не является такой идеальной суммойр Ответ прост (и типичен для подобных ситуаций): мы предполагаем существование гипотетических пустых серий, таких, что сумма реальных и гипотетических серий дает идеальну!о сумму.

Пустые серии называются 4иктиеными сериями. Но зтот ответ на самом деле неудовлетворителен, так как сразу вызывает следующий, более трудный вопрос: как распознаются фиктивные серии при слиянии? Перед тем как ответить на него, мы вернемся к упомянутой выше проблеме распределения действительных н фиктивных серий на и†1 лентах. Однако, для того чтобы найти подходящее правило распределения, мы должны знать, как сливаются настоя!цие и фиктивные серии. Ясно, что выбор фиктивной серии с 1-й ленты означает, что тся лента не участвует в слиянии; в результате слияние происходит с менее чем и — 1 лент. Слияние фиктивных серий со всех и†1 входных лепт не предполагает никакой действительной операции слияния, а означает просто запись фиктивной серии на выходную ленту.

Из этого можно 1 2 3 4 5 б 7 8 9 10 1! 12 13 14 15 16 17 18 19 20 2 3 5 8 13 21 34 55 89 144 233 37! 610 987 1597 2584 4181 6765 10946 177И 3 5 9 17 31 57 105 193 355 653 120! 2209 4063 7473 13745 25281 46499 85525 157305 289329 4 7 13 25 49 94 181 349 673 1297 2500 4819 Я289 17905 34513 66526 128233 247177 476449 918385 5 9 17 33 65 129 253 497 977 1921 3777 7425 14597 28697 56417 110913 218049 428673 842749 1656801 б !1 2! 41 В! 16! 321 636 1261 2501 4961 9841 19521 38721 76806 152351 302201 599441 1189041 2358561 7 13 25 4Я 97 193 385 769 1531 3049 6073 12097 24097 48001 95617 190465 379399 755749 1505425 2998753 2.3. Сортировка иоследовательных файлов !33 сделать вывод, что фиктивные серии нужно распределять на и — 1 лент как можно более равномерно, так как мы заин- тересованы в активном слиянии с наибольшего возможного числа входных лент. Забудем на некоторое время о фиктивных сериях и рас- смотрим задачу распределения неизвестного числа серий па и — 1 лент.

Ясно, что в процесге распределения можно полу- чать числа Фибоначчи порядка и — 2, определяющие жела- тельные количества серий на каждой ленте. Предположив, например, что и = 6, и ссылаясь на табл. 2.14, мы начинаем с распределения серий, указанных в строке с номером 1= 1(1, 1, 1, 1, 1); если имеются еше серии, мы переходим ко второй строке (2, 2, 2, 2, 1); если входные данные еше не исчерпаны, распределение производится в соответствии со следуюшей строкой (4, 4, 4, 3. 2) и т. д. Номер строки мы будем называть уровнем. Очевидно, что чем больше число серий, тем выше будет уровень чисел Фибоначчи, который в данном случае равен количеству проходов, или переключе- нии лент, необходимых для последуюшей сортировки.

Алгоритм распределения теперь, в первом приближении, можно сформулировать следующим образом: 1. Пусть перед нами стоит цель — числа Фибоначчи порядка и — 2, уровня 1. 2. Распределяем серии согласно поставленной цели. 3. Если цель достигнута, вычисляем следующий уровень чисел Фибоначчи; разность между числами зтого уровня и числами предыдущего уровня представляет собой новую цель распределения. Возвращаемся к шагу 2.

Если цели нельзя достичь, потому что входные данные исчерпаны, распределение заканчивается, Правила вычисления следуюшего уровня чисел Фибоначчи содержатсч в их определении (2.44), Итак, мы можем со- средоточить внимание на шаге 2, где прн заданной цели последовательные серии должны распределяться поочередно на и — 1 лент. Именно здесь в наших рассуждениях должны вновь появиться фиктивные серии. Предположим, что, повышая уровень, мы записываем следующую цель с помощью разностей с!с для ! = 1, ...

..., и — 1, где с(с обозначает число серий, которые на данном шаге нужно отправить на ленту й Теперь можно считать, что мы сразу помещаем с(, фиктивных серий на ленту 1 и рас- сматриваем последующее рзспределенне как замену фиктив- ных серий действительными тзк, что прн каждой замене сй уменьшается на 1. Таким образом, с(, будет указывать число фиктивных серий на ленте й когда входные данные будут исчерпаны. 2. Сортировка 134 8 7 6 6 4 3 2 1 Рис 2,!6. <Горизонтальное распределениеа серий.

Теперь мы можем описать алгоритм в виде процедуры, называемой зе1ес((аре, которая вызывается каждый раз, когда переписана какая-либо серия н нужно выбрать ленту, с которой берется очередная серия. Мы предполагаем, что существует переменная 1, обозначающая индекс текущей выходной ленты. Переменные а; и с(; обозначают числа идеального и фиктивного распределений для ленты й ,1: гарино; а,с): атгау (сарепо1 62 1пс)ех; 1внг1: 1пгеяет (2.45) Эти переменные иницинруются следующими значениями: а,=!, с(=! для 1=! ...и — 1, а = О, с1„=0 (фнктивные), 1~1, 1вое1 1.

Отметим что ве1гс1(аре должна вычислять следующую строку табл. 2.14, т. е. значения аза1, ..., а'„'! „каждый раз при уве- Неизвестно, какой алгоритм дает оптимальное распределение, но следующий, предлагаемый нами метод оказался очень хорошим.

Он называется горизонгальныл распределением (см. [2.71, т. 3, стр. 322); этот термин становится понятным, если представить себе серии сложенными в виде пирамиды, как показано на рис. 2.15 для и = б уровня 5 (см. табл. 2.!4). Для того чтобы получить равномерное распределение оставшихся фиктивных серий как можно более быстрым способом, при замене их на действительные уменьшается высота пирамиды: фиктивные серии берутся с горизонтальных уровней слева направо. При таком способе серии распределяются на ленты в последовательности, указанной числами на рис. 2.16. л.з.

Сортировка аоеледовательнь~к файлов личении уровня, В это же время вычисляется также аочеред- наЯ цель», т, е, Разности т(т =а~и а" ,". ПРиведенный алгоритм основан на том, что результирующее значение А умень. шается при увеличении номера строки (ведущие вниз ступени на рис. 2.!6). (Отметим, что исключением является переход с уровня 0 на уровень 1; следовательно, этот алгоритм долнссн использоваться, начиная с уровня 1.) Яе!есГ!аре заканчивает работу, уменьшая д, на 1; это соответствует замена фиктивной серии на ленте ! действительной сериен: ргосейпте ве!есмаре; тат 1: горело; а: !пгеивг,' Ьея!п !1 тт(Я < еГЦ+Ц !Ьеп 7':= 7'+! е)ае Ьей!п !1 И(Я = 0 гйеп Ьея!п!етв1:= 1ете1+ 1,' х:= а(!]; Гог т: =- 1 го и — 1 йо Ьей!п Щ:= а+а!(+11 — аД; а1!1:= к+а!!+11 (2.46) епй епй ; 7':= 1 епй; а!(Я:= 4Л -1 епй Предполагая, что у нас есть процедура для переписи се.

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

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

Список файлов учебной работы

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