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

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

Файл №1162189 Т. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013) (Т. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013)) 120 страницаТ. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013) (1162189) страница 1202019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Недтее. Буден атрибут х. тагк указывает, были ли потери узлом х дочерних узлов начиная с момента, когда х стал дочерним узлом какого-то другого узла Вновь создаваемые узлы не помечены, а имеющаяся ~авва згм 54б Часть К Сложные структуры данньи пометка снимается, если узел становится дочерним узлом какого-то другого узла. До тех пор, пока мы не встретимся с операцией Рвскклзк-Кку в разделе 19.3, мы просто устанавливаем все атрибуты пьаг)с равными гльзв.

Обращение к данной фибоначчиевой пирамиде Н выполняется посредством указателя Н, т1п на корень дерева, содержащего минимальный ключ. Этот узел называется минимальным узлам (ппппппш поде) фибоначчиевой пирамиды. Если ключ с минимальным значением имеют более одного корня, то минимальным узлом может служить любой такой корень. Если фибоначчиева пирамида Н пуста„ то Н. ппп равен мп.. Корни всех деревьев в фибоначчиевой пирамиде связаны с помощью указателей 1е5г и пд61 в циклический дважды связанный слисок корней (гоо1 йа1) фнбоначчиевой пирамиды. Указатель Н, ппп, таким образом, указывает на узел списка корней, ключ которого минимален. Порядок деревьев в списке корней может быть любым.

Фибоначчиева пирамида, кроме того, имеет еще один атрибут — текущее количество узлов в фибоначчиевой пирамиде Н содержится в Н. и. Функция потенциала Как упоминалось, для анализа производительности операций над фибоначчиевыми пирамидами мы будем использовать метод потенциалов из раздела 17.3.

Для данной фибоначчиевой пирамиды Н обозначим через 1(Н) количество деревьев в списке корней Н, а через т(Н) — количество помеченных узлов в Н. Тогда потенциал Ф(Н) фибоначчиевой пирамиды Н определяется как (19.1) ф(Н) =1(Н) + 2т(Н) . (Подробнее об этой функции потенциала мы поговорим в разделе 19.3.) Например, потенциал фибоначчиевой пирамиды, показанной на рис.19.2, равен б + 2 . 3 = 11. Потенциал множества фибоначчневых пирамид представляет собой сумму потенциалов составлякицнх его пирамид. Будем считать, что единицы потенциала достаточно для оплаты константного количества работы, где константа достаточно велика для покрытия стоимости любой операции со временем работы 0(1).

Кроме того, предполагается, что приложение начинает свою работу, не имея ни одной фибоначчиевой пирамиды, так что начальный потенциал равен О и, в соответствии с формулой (19.1), во все последующие моменты времени потенциал неотрицателен. Из (17.3) верхняя граница общей амортиэированной стоимости является, таким образом, верхней границей общей фактической стоимости последовательности операций.

Максимальная степень Амортизационный анализ, который будет выполнен в оставшихся разделах главы, предполагает, что известна верхняя граница Р(п) максимальной степени любого узла в фнбоначчиевой пирамиде из и узлов. Мы не доказываем этого, но при поддержке только операций над объединяемыми пирамидами Р(п) < ~1б и(. 547 Глава!д Фчбочаччиевы лирамиды (В упр. 19.2,(г) читателям предлагается самостоятельно доказать зто свойство.) В разделах 19.3 и 19.4 мы покажем, что при дополнительной поддержке операций РескеАБе-Кеу и Рееете Р(п) = О(1б п).

19.2. Операции над объединяемыми пирамидами Операции над объединяемыми пирамидами в случае фибоначчиевых пирамид откладывают выполнение работы настолько, насколько это возможно. По сути, зто компромисс между реализациями различных операций. Например, мы вставляем узел, добавляя его в список корней, что требует только константного времени. Если начать с пустой фибоначчневой пирамиды и вставить в нее )с узлов, то фибоначчиева пирамида будет представлять собой просто список корней из к узлов. Компромисс заключается в том, что если затем мы выполняем над фибоначчиевой пирамидой Н операцию ЕхткАст-Меч, то после удаления узла, на который указывает Н. тт, мы должны просмотреть каждый из остающихся в списке корней й — 1 узлов в поисках нового минимального узла. Раз уж мы все равно должны пройти по всему списку корней в процессе выполнения операции ЕХТКАСТ-МИЧ, мы заодно собираем узлы в неубывающие деревья, чтобы уменьшить размер списка корней.

Мы увидим, что независимо от того, как выглядел список корней непосредственно перед выполнением операции ЕхтдАст-Мпч, после нее каждый узел в списке корней имеет степень, уникальную в пределах списка, а это приводит к тому, что размер списка корней не превышает Р(п) + 1.

Создание фибоначчиевой пирамиды Для создания пустой фибоначчиевой пирамиды процедура МАКЕ-Вв-НЕАЕ выделяет память и возвращает объект фибоначчиевой пирамиды Н, причем Н. и = О и Н. тт = мц.; деревьев в Н нет. Поскольку 1(Н) = О и т(Н) = О, потенциал пустой фнбоначчиевой пирамиды Ф(Н) = О. Таким образом, амортизированная стоимость процедуры МАке-Вв-НеАе равна ее фактической стоимости 0(1). Вставка узла Приведенная далее процедура вставляет узел х в фибоначчиеву пирамиду Н в предположении, что узлу уже выделена память и атрибут узла х.кеу уже заполнен. Часть Е Слажные струюпуры данныл 54о Н. пап (а) Рис.

19З. Вставка узла в фибоначчиеву пирамиду. (а) Фибоначчиева пирамщм Н. (б) Фибоначчиева пирамида Н после вставки узла с ключом 21. Узел становится собственным неубывающим деревом и добавляется в список юрнея, оказываясь левым братом юрия. Г1В-НВАР-11ззект(Н, х) 1 х.Неугее = 0 2 х.р = 141е 3 х.сЬзЫ = )41е 4 х.злого = РАЕЯЕ 5 ГН.нззп =9 ип. 6 Создать список корней Н, содержащий только х 7 Н.пззп = х 8 е1ве Вставить х в список корней Н 9 й'х.)сеу с Н.тзп.)сер 10 Н.пззп = х 11 Н.п = Н.п+ 1 В строках 1-4 инициализируются некоторые структурные атрибуты узла х. В строке 5 выполняется проверка, является ли фибоначчиева пирамида Н пустой. Если является, то в строках 6 и 7 узел х делается единственньзм узлом списка корней Н, а атрибут Н.

тзп получает значение, указывающее на х. В противном случае в строках 8-10 выполняются вставка х в список корней Н и при необходимости обновление атрибута Н. пззп. Наконец а строке 11 увеличивается значение Н. и, отражая добавление нового узла, На рис. 19.3 показана вставка узла с ключом 21 в фибоначчиеву пирамиду, приведенную на рис. 19.2. Для определения амортнзнрованной стоимости Р(В-НеАР-1хзект рассмотрим исходную фибоначчиеву пирамиду Н и фибоначчиеву пирамиду Н', которая получается в результате вставки узла. Тогда 1(Н') = ((Н) + 1 и зп(Н') = т(Н), и увеличение потенциала составляет ((1(Н) + 1) + 2 т(Н)) — (1(Н) + 2 т(Н)) = 1 . Поскольку фактическая стоимость равна О(1), амортизированная стоимость рав- на О(1) + 1 = О(1). Поиск минимального узла На минимальный узел фнбоначчневой пирамиды Н указывает указатель Н.

ппп, так что поиск минимального узла занимает время О(1). Поскольку по- 549 Глава!9. Фибаиаччиевы ииралчиды тенциал Н при этом ие изменяется, амортизированная стоимость этой операции равна ее фактической стоимости О(1). Обьединение двух фибоначчиевых пирамид Приведенная далее процедура объединяет фибоначчиевы пирамиды Н! и Нг, уничтожая их в процессе объединения. Процедура попросту соединяет списки корней Н! и Нг и находит затем новый минимальный узел.

По окончании работы объекты, представляющие Н! и Нг, далее использоваться не могут. Р !В-НВАР-АР!!О!4(Н!, Нг) 1 Н = МАКЕ-Р!В-НЕАРО 2 Н.гпт = Н!.т!и 3 Конкатенация списков корней Нг и Н 4 И (Н!. тгп == !ч!е) или (Нг тш ф !ч!е и Нг, твпЛееу < Н!. т!п.'кеу) 5 Н.т!п = Нг.твп 6 Н.п = Н!.и+Нг.п 7 гепзгв Н В строках 1-3 выполняется конкатенация списков корней фибоначчиевых пирамид Н! и Нг в новый список корней фибоначчиевой пирамиды Н. Строки 2, 4 и 5 устанавливают минимальный узел фибоначчиевой пирамиды Н, а в строке 6 определяется общее количество узлов Н. и.

Возврат полученной фибоначчиевой пирамиды Н вьпюлняется в строке 7. Как и в процедуре г!В-НВАР-1!4зект, все юрии остаются корнями. Изменение потенциала составляет ф(Н) — (ф(Н,) + ф(Н,)) = (!(Н) + 2 т(Н)) — ((!(Нг) + 2 т(Нг)) + (!(Нг) + 2 т(Нг))) =О, посюльку !(Н) = !(Н!)+!(Нг) и т(Н) = т(Н!)+т(Нг). Таким образом, амортизированная стоимость р!в-НВАР-13н!о!4 равна ее фактичесюй стоимости О(1). Извлечение минимального узла Процесс извлечения минимального узла наиболее сложный из всех операций, рассматриваемых в данном разделе.

Это также то место, где выполняются отложенные действия по объединению деревьев. Псевдокод процедуры извлечения минимального узла приведен ниже. Для удобства предполагается, что, когда узел удаляется из связанного списка, указатели, остающиеся в списке, обновляются, но указатели в извлекаемом узле остаются неизменными. В этой процедуре используется вспомогательная процедура Соызое!ВАте, которая будет рассмотрена чуть позже. Часть и Сложные структуры данные 550 Г!и-НеАР-ЕхткАст-М11ч(Н) 1 з = Н.ш(п 2 Из~МИ. 3 1ог каждый дочерний узел х узла х 4 Добавить х в список корней Н 5 х.р = ын. 6 Удалить г из списка корней Н 7 Ы з == з, т1дЫ 8 Н.т(п = ьш.

9 е!зе Н.т(п = г.пд)ьг 10 С о из ош и Ате (Н) 11 Н. п = Н. п — 1 12 гегигп з Как показано на рис. 19.4, процедура Гш-НеАЕ-ЕхткАст-Мпч сначала создает список корней из дочерних узлов минимального узла, а затем удаляет последний из списка корней. Затем выполняется уплотнение списка корней путем связывания корней одинаковой степени, пока в списке останется не больше одного корня каждой степени.

Работа начинается в строке 1, где в переменной з сохраняется указатель на минимальный узел фибоначчиевой пирамиды, — именно этот указатель процедура вернет в конце работы. Если з = и1е, это означает, что фибоначчиева пирамида Н пуста, и работа на этом заканчивается. В противном случае мы удаляем узел з из Н, делая все дочерние узлы узла г корнями в Н в строках 3-5 (помещая их в список корней) и вынося из него з в строке 6.

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

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

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