Главная » Просмотр файлов » Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.)

Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.) (1123758), страница 113

Файл №1123758 Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.) (Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.)) 113 страницаТ. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.) (1123758) страница 1132019-05-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Поскольку проверить надо не более [1я и] + 1 корней, время работы процедуры В1ыомы. НнАР М1ы1мим составляет 0 (оп). Глава 19. Биномиальные пирамиды Слияние двух биномиальных пирамид Операция по слиянию двух биномиальных пирамид используется в качестве подпрограммы в большинстве остальных операций. Процедура В!ном!Ап НеА!' Умом многократно связывает биномиальные деревья с корнями одинаковой степени.

Приведенная далее процедура связывает дерево Вь ! с корнем у с деревом Вь ! с корнем «, делая «родительским узлом для у, после чего узел «становится корнем дерева Вь.' Впчомы. 1.пчк(у, «) 1 р[у] + — « 2 «1Ызпд[у] + — сЬ1Ы[«] 3 сЬ11а[«] - у 4 Йедтее[«] +- Йеутее[«] + 1 Процедура Впчом!и. 1.!нк делает узел у новым заголовком связанного списка дочерних узлов узла «за время О (1). Работа процедуры основана на том, что представление с левым дочерним и правым сестринским узлами каждого биномиального дерева отвечают свойству упорядоченности дерева: в биномиальном дереве Вь крайний левый дочерний узел корня является корнем биномиального дерева Вь !.

Приведенная далее процедура сливает биномиальные пирамиды Н! и Нз, возвращая получаемую в результате биномиальную пирамиду, причем в процессе слияния представления биномиальных пирамид Н! и Нз уничтожаются. Помимо процедуры Впчом!м. 1.пчк, данная процедура использует вспомогательную процедуру Впчом!Ап НеАР Мекое, которая объединяет списки корней Н! и Нз в единый связанный список, отсортированный по степеням в монотонно возрастающем порядке. Процедура Впчом!Ап НеАР Мекое, написание которой мы оставляем в качестве упражнения 19.2-1, подобна процедуре Мекое из раздела 2.3.1. Впчом!Ап НБАР 13х!ОР!(Нг, Нз) 1 Н +- МАке Вциом!Ап НеАРО 2 ЬеаИ[Н] — Впчом!АП НеАР Мекае(Н!,Нз) 3 Освобождение объектов Н! и Нз, но не списков, на которые они указывают 4 и Ьеай[Н] = гШ. 5 тпеп ге1пгп Н 6 ртес-х — !ч!ь 7 х +- Ьеад[Н] 8 яехт-х — аеЬ1гпд[х] 9 юй1!е пех1-х ф !ч!ь 1О бо и (Йеутее[х] ~ !1еутее[пехвх]) или («161гпд[пехвх] ф нй.

и Иедтее[НЫ1пд[пехт-х]] = аеутее[х]) Часть Ч. Сложные структуры данных Феп с Случаи 1 я1 [> Случаи 1 и 2 11 12 13 е1зе 14 15 16 17 18 19 20 21 пех1-х +- 22 гетцгп Н Ргеи-х +- х х — пех1-х Ы йеу[х] < *кеу[пехе-х] тйеп вебйпд[х] +- в1б(гпд[пехе-х] В1МОМ1АЬ Ь1МК(пвхб-х, х) е1зе !1' ргее-х = ньь Феп беай[Н] — пехт-х е1яе в1б(гпд[ргее»-х] - пех1-х ВПЧОМЬАЬ Ь1МК(х, пех1-х) х +- пех1-х вгб(епд [х] 1> Случай 3 с Случай 3 1> Случай 4 г» Случай 4 с Случай4 с Случай4 с Случай 4 На рис.

19.4 показан пример работы процедуры ВпчОМ1АЬ НКАР 1)н1ом для всех четырех случаев, приведенных в псевдокоде. На рис. 19.4а показаны исходные биномиальные пирамиды Н1 и Нз. Рис. 19.4б иллюстрирует биномиальную пирамиду Н, которая является результатом работы процедуры В1но. м!Аь НеАР Мекбе(Нг, Нз). Изначально х является первым юрием в списке корней Н. Поскольку и х, и пехг-х имеют степень О, и 1ееу [х] ( йеу [пех1-х], реали. зуегся случай 3. После связывания, как видно из рис. 19.4в, х является первым из трех корней с одной и той же степенью, так что реализуется случай 2.

После того как все указатели сдвигаются на одну позицию в списке юрней (рис. 19.4г), реализуется случай 4 (х является первым из двух корней равной степени). После связывания реализуется случай 3 (рис. 19.4д). После очередного связывания степень х становится равной 3, а степень пехе-х — 4, так что реализуется случай 1 (рис. 19.4е). Эта итерация цикла — последняя, поскольку после очередного перемещения указателей пеат-х становится равным М1Ь. Процедура В1ном1Аь НеАР Ыч1Он имеет две фазы. Первая фаза осуществляется вызовом процедуры В!хОм!Аь НеАР Мекбе, объединяет списки корней биномиальных пирамид Н1 и Нз в единый связанный список Н, который отсортировав по степеням юрней в монотонно возрастающем порядке.

Однако в списке может оказаться по два (но не более) корня каждой степени, так что вторая фаза связывает юрии одинаковой степени до тех пор, пока все юрии не будут иметь разную степень. Поскольку связанный список Н отсортирован по степеням, все операции по связыванию выполняются достаточно быстро.

Более подробно процедура работает следующим образом. Процедура начинается с объединения в строках 1-3 списков корней биномиальных пирамид Н1 и Нз в единый список корней Н. Списки юрней Н1 и Нз отсортированы в строго возрастающем порядке; процедура В1мОм1Аь НеАР МекОе возвращает список корней Н, который также отсортирован в строго возрастающем порядке степеней корней.

Если списки корней Н1 и Нз содержат всего тп корней, то время работы 547 Глава 19. Биномиальные пирамиды процедуры В!ыом!Аь Нел!' Мекое составляет О (т). Процедура на каждом шаге сравнивает корни в начале двух списков корней и добавляет в результирующий список корень с меньшей степенью, удаляя его из исходного списка. Затем процедура В!ном!Аь НеАР Уьлоы инициализирует ряд указателей в списке корней Н. В случае, если происходит слияние двух пустых биномиальных пирамид, в строках 4-5 выполняется возврат пустой биномиальной пирамиды.

Начиная со строки б, нам известно, что в биномиальной пирамиде Н имеется по крайней мере один корень. В процедуре поддерживаются три указателя внутрь списка корней. ° х указывает на текущий корень. ° ргев-х указывает на корень, предшествующий х в списке корней: иИгпд [ргее-х) = х. Поскольку изначально х не имеет предшественника, мы начинаем работу со значения ргее-х, равного ьп! .

° пехг-х указывает на корень, следующий в списке корней за х: згб11пд [х) = = пех1-х. Изначально в списке корней Н имеется не более двух узлов с данной степенью: поскольку Н! и Нз были биномиальными пирамидами, каждая из них имела не более одного корня данной степени. Кроме того, процедура В!ном!Аь Нелв Мекое гарантирует, что если два корня в Н имеют одну и ту же степень, то эти корни соседствуют в списке корней. В действительности, в процессе работы Впчом!Аь НеАР 1)яон в некоторый момент в списке корней Н могут оказаться три корня данной степени — вскоре вы увидите, как может реализоваться такая ситуация. При каждой итерации цикла ч~Ь11е в строках 9-21, мы должны решить, следует ли связывать х и пех1-х, учитывая их степени и, возможно, степень ай1гпд [пех1-х). Инвариантом цикла является то, что в начале каждого выполнения тела цикла и х, и пех1-х не равны н! (в упражнении 19.2-4 рассматривается точный инвариант цикла).

Случай 1, показанный на рис. 19.5а, реализуется, когда !1едгее [х] ф ~ аедгее [иех1-х), т.е. когда х является корнем Вь-дерева, а пех1-х — корнем В!-дерева, причем 1 ) й. Эта ситуация обрабатывается в строках 11-12. Мы не связываем х и пех1-х, так что мы просто смещаем указатели на одну позицию по списку. Обновление указателя пехг-х, который указывает на корень, следующий за х, выполняется в строке 21, поскольку это действие — общее для всех случаев.

Случай 2 (рис. 19.56) реализуется, когда х является первым из трех корней с одинаковой степенью, т.е. когда г1едгее [х] = !1едгее [пех1-х) = г1едгее [зга11пд [пех8-х)) . Эта ситуация обрабатывается так же, как и случай 1 — мы просто перемещаем указатели по списку. В следующей итерации цикла будет обработан случай 3 Часть Ч. Сложные структуры данна в) ММ)Н~) — ~()г) — --~"(7 ) — — — -э~15~ (25) (251 (33~ ® а3~ Омм) нььР некое де1'63()г) '«~ ~ ® ф~ 1555) б) вел) и) — ) г ) — — 3"® — Š— -мХ)— (25) ф ~А)) Щ )25) ~~)),) ® ® КФ(2225"') Э 45 (32) )24) ~~)) ГЗГ~,ьг ) г в) 6ем)Л) --~()23- — -э-;*'~)- — -~ )3. — — — ~))5' — — — — — — — — — — — ~(5) б)53 ~"253 ф) Я~ (33) Я д~29 ~~Я Я4 2 (5)",) Я) 23 ® Г~~г ® )1).') ци ав ~~5Э " 55 Рис.

19.4. Выполнение процедуры В)ном)Аь Нвлг 1)н)он или 4, когда объединяются второй и третий из трех корней с одинаковой степенью. В строке 10 выполняется проверка реализации случаев 1 и 2, а в строках 11-1 2— их обработка. Случаи 3 и 4 реализуются, когда х представляет собой первый из двух корней одинашвой степени, т.е. когда Недгее [х] = )гедгее [пехФ-х] ф Иедгее [азЫгид [пех5-х]] . Эти случаи могут возникнуть на любой итерации, в частности, всегда — непосредственно после обнаружения случая 2.

В случаях 3 и 4 мы связываем х и пехг-х. Различие между случаями 3 и 4 определяется тем, какой из этих узлов имеет меньший ключ и, соответственно, будет выступать в роли нового корня после связывания. В случае 3 (рис. 19.5в) )веу [х] < )веу [пех1-х], поэтому пех$-х привязывается к х. В строке 14 происходит удаление пех5-х из списка корней, а в строке 15 пехг-х становится крайним левым дочерним узлом х. В случае 4, показанном на рис.

19.5г, пехг-х имеет меньший ключ, так что х привязывается к пех5-х. В строках 1б-18 происходит удаление х из списка корней; Глава 19. Биномиальные пирамиды  хе' '~ м жл х П Мад1Л! — -э312.— — -ъ(Л вЂ” — ~~ 3 '- — — — "э. 15 !- — — — — — — — — — — — — - — — Я~6 ! (16) ®,31) ф$2 233.! .,)- фй® %64 "1®Ф ® С~1 ия 3 вел-х !а 3еан 132! — — ~(12 ) — — -- — -э"(3 !"- -- — ! 115 '- — — — — — — — — — ~".6 ! 6 -.)":.".':,-,~--'.-'У' | ® (ф ~Ю;(23» (222') Я 313 ф» ;Ф5 ! 132 ! 1241~50) Я; ' е! Аеас 1Н1 — ~12) — — — — — --~3 !— (23) (Я 1255» — 6', фф ф ® Сэ> ии ! (41» в зависимости от того, является х первым элементом списка (строка 17) или нет (строка 18).

В строке 19 х делается крайним слева дочерним узлом пехг-х, а в строке 20 происходит обновление х для следующей итерации. Настройки для следующей итерации цикла 3тЫ1е после случаев 3 и 4 одинаковы. Мы должны просто связать два Вь-дерева в Вь+1-дерево, на которое указывает х. После него в списке может находиться от нуля до двух В~+1-деревьев, так что х теперь указывает на первое в последовательности из одного, двух или трех В1,+3-деревьев в списке корней. Если дерево только одно, на следующей итерации мы получаем случай 1: сергее [х) 36 11едгее (пехсх~1. Если х — первое из двух деревьев, то на следующей итерации получаются случаи 3 или 4. И наконец, если х — первое из трех деревьев, то в следующей итерации получаем случай 2.

Время работы процедуры Вичом1ль Нели 133ч1о3ч равно О (1к и), где п — общее количество узлов в биномиальных пирамидах Н1 и Нз. Убедиться в этом можно следующим образом. Пусть Н1 содержит 331 узлов, а Нз — пз узлов, так что и = п1 + 232. Тогда Н1 содержит не более ~18 3311+ 1 корней, а Нз — не более '(18 пзбг' + 1 корней. Таким образом, Н содержит непосредственно после вызова Часть Ч.

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

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

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