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

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

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

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

13.7. Перед тем как приступить к детальному рассмотрению каждого случая, убедимся, что в каждом из случаев преобразования сохраняется свойство 5. Ключевая идея заключается в необходимости убедиться, что при преобразованиях в каждом случае количество черных узлов (включая дополнительную черноту в х) на пути от корня включительно до каждого из поддеревьев ск,,З, ..., ~ остается неизменным. Таким Как и в проиелуре йВ 1нзякт Вхов, случаи ие являются взвимоискл|очающими. 354 Часть 1П. Структуры данных Нооыах1 л гг ,4В. Сэ оог ~ — о ~о )г Со оооо 4 ,.Ф о 11 г о Иовом г = гож ~71 Рис.

13.7. Возможные ситуации, возникающие в цикле и Ы1е процедуры КВ 0вьвта Яхин Темные узлы имеют цвет вьАск, темно-серые — квп, а светлые могут иметь любой цвет (на рисунке показан как с и с'). Греческими буквамн показаны произвольные поддеревья образом, если свойство 5 выполнялось до преобразования, то оно выполняется и после него. Например, на рис.

13.7а, который иллюстрирует случай 1, количество черных узлов на пути от корня до поддеревьев гз и )3 равно 3, как до, так и после преобразования (не забудьте о том, что узел х — дважды черный). Аналогично, количество черных узлов на пути от корня до любого из поддеревьев 7, б„е и г, равно 2, как до, так и после преобразования. На рис. 13.7б подсчет должен включать значение с, равное значению атрибута со1ог корня показанного поддерева, которое может быть либо кап, либо вьАск. Так, на пути от корня до поддерева а количество черных узлов равно 2 плюс величина, равная 1, если с равно ньлск, и О, если с равно инп; эта величина одинакова до и после выполнения преобразований.

В такой ситуации после преобразования новый узел х имеет атрибут со1от, равный с, но реально это либо красно-черный узел (если с = КЕ13), Глава 13. Красно-черные деревья 355 либо дважды черный (если с = В1.АСК). Прочие случаи могут быть проверены аналогичным способом (см. упражнение 13.4-5). Случай 1: узел ю красный. Случай 1 (строки 5-8 процедуры КВ Рн.ЕТЕ г!Х!!Р и рнс. 13.7а) возникает, когда узел ю (" брат'* узла х) — красный. Поскольку ю должен иметь черных потомков, можно обменять цвета ю и р [х], а затем выполнить левый поворот вокруг р [х] без нарушения каких-либо красно-черных свойств.

Новый "брат" х, до поворота бывший одним из потомков ю, теперь черный. Таким путем случай 1 приводится к случаю 2, 3 илн 4. Случаи 2, 3 и 4 возникают при черном узле ю и отличаются друг от друга цветами дочерних по отношению к ю узлов. Случай 2: узел ю черный, оба его дочерних узла черные. В этом случае (строки 10-11 процедуры КВ Реьете г!х!л и рис. 13.7б) оба дочерних узла ю черные. Поскольку узел ю также черный, мы можем забрать черную окраску у х и ю, сделав х единожды черным, а ю — красным.

Для того чтобы компенсировать удаление черной окраски у х и ю, мы можем добавить дополнительный черный цвет узлу р [х], который до этого мог быть как красным, так и черным. После этого будет выполнена следующая итерация цикла, в которой роль х будет играть текущий узел р [х]. Заметим, что если мы переходим к случаю 2 от случая 1, новый узел х — красно-черный, поскольку исходный узел р [х] был красным. Следовательно, значение с атрибута со1от нового узла х равно ке!э и цикл завершается при проверке условия цикла. После этого новый узел х окрашивается в обычный черный цвет в строке 23. Случай 3: узел ю черный, его левый дочерний узел красный, а правый— черный.

В этом случае (строки 13-16 процедуры КВ 13еьете Р!хпР и рис. 13.7в) узел ю черный, его левый дочерний узел красный, а правый — черный. Мы можем обменять цвета ю и 1ег! [ю], а затем выполнить правый поворот вокруг ю без нарушения каких-либо красно-черных свойств. Новым "братом" узла х после этого будет черный узел с красным правым дочерним узлом, и таким образом мы привели случай 3 к случаю 4.

Случай 4: узел ю черный, его правый дочерний узел красный. В этом случае (строки 17-21 процедуры КВ 13еьете Р!хпР и рис. 13.7г) узел ю черный, а его правый дочерний узел — красный. Выполняя обмен цветов и левый поворот вокруг р [х], мы можем устранить излишнюю черноту в х, делая его просто черным, без нарушения каких-либо красно-черных свойств. Присвоение х указателя на корень дерева приводит к завершению работы при проверке условия цикла при следующей итерации. Часть 1П.

Структуры данных 356 Анализ Упражнения Покажите, что после выполнения процедуры КВ Ре!.ете Р!хг!Р корень дерева должен быть черным. Покажите, что если в процедуре ВВ 1зеьете и х, и р [х] красные, то прн вызове КВ 13ЕЕЕТЕ Р!Х!Л*(Т, х) свойство 4 будет восстановлено. В упражнении 13.3-2 вы построили красно-черное дерево, которое яв- ляется результатом последовательной вставки ключей 41, 38, 31, 12, 19 и 8 в изначально пустое дерево.

Покажите теперь, что в результате по- следовательного удаления ключей 8, 12, 19, 31, 38 и 41 будут получаться красно-черные деревья. В каких строках кода процедуры ВВ Рн.ЕТЕ Р!х!!Р мы можем обращать- ся к ограничителю пп [2'] или изменять его? Для каждого из случаев, показанных на рис. 13.7, подсчитайте количе- ство черных узлов на пути от корня показанного полдерева до каждого из поддеревьев о, !3,..., С и убедитесь, что оно не меняется при выпол- нении преобразований. Если узел имеет атрибут со1от, равный с или с', воспользуйтесь функцией соип1 (с), которая для красного узла равна О, а для черного — 1. Профессор озабочен вопросом, не может ли узел р [х] не быть черным в начале случая 1 в процедуре КВ 1Зееете Р!х!!Р. Если профессор прав, то строки 5-6 процедуры ошибочны.

Покажите, что в начале случая 1 узел р [х] не может не быть черным, так что профессору нечего волно- ваться. 13.4-1. 13.4-2. 13.4-3. 13.4-4. 13.4-5. 13.4-6. 13.4-7. Предположим, что узел х вставлен в красно-черное дерево при помощи процедуры ВВ 1!чзект, после чего немедленно удален из этого дерева. Будет ли получившееся в результате вставки и удаления красно-черное дерево таким же, как и исходное? Обоснуйте ваш ответ. Чему равно время работы процедуры КВ 0е!.ете? Поскольку высота дерева с и узлами равна О(18п), общее время работы процедуры без выполнения вспомогательной процедуры ВВ Оееете Р!хт!Р равно О (18п).

В процедуре ВВ 13а.ете Р!х!!Р в случаях 1, 3 и 4 завершение работы происходит после выполнения постоянного числа изменений цвета и не более трех поворотов. Случай 2— единственный, после которого возможно выполнение очередной итерации цикла М!1!е, причем указатель х перемещается вверх по дереву не более чем О (18п) раз, и никакие повороты при этом не выполняются. Таким образом, время работы процедуры КВ Ое!.ете Р!х!!Р составляет О (18п), причем она выполняет не более трех поворотов.

Общее время работы процедуры ВВ !зенте, само собой разумеется, также равно О (18 и). Глава 13. Красно-черные деревья 357 / / '>--- 2 7 (а Рис. 13.8. Бинарное дерево поиска с ключами 2, 3, 4, 7, 8 и 1О (а) и перманентное бинарное дерево поиска, получающееся в процессе вставки ключа 5 (б) Задачи 13-1. Перманентные динамические множества Иногда полезно сохранять предыдущие версии динамического множества в процессе его обновления. Такие множества называются перманенпьчыми (регз)з1еп1).

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

Рассмотрим перманентное множество Я с операциями 1нзнит, Рнытн и ЯБАнсн, которое реализуется с использованием бинарных деревьев поиска, как показано на рис. 13.8а. Для каждой версии множества мы храним отдельный корень. Для добавления ключа 5 в множество создается узел с ключом 5, который становится левым дочерним узлом нового узла с ключом 7, так как менять существующий узел с ключом 7 мы не можем. Аналогично, новый узел с ключом 7 становится левым потомком нового узла с ключом 8, правым потомком которого является существующий узел с ключом 10. Новый узел с ключом 8 становится, в свою очередь, правым потомком нового корня г' с ключом 4, левым потомком которого является существующий узел с ключом 3.

Таким образом, мы копируем только часть дерева, а в остальном используем старое дерево, как показано на рис. 13.8б. Предположим, что каждый узел дерева имеет поля кеу, 1е7г и тюдор, но не имеет поля с указателем на родительский узел (см. также упражнение 13.3-6). 358 Часть 111. Структуры данных а) Определите, какие узлы перманентного бинарного дерева поиска должны быть изменены при вставке в него ключа /с или удалении узла у в общем случае.

б) Напишите процедуру Рекязтнчт Ткеп 1нзнкт, которая для данного перманентного дерева Т и вставляемого ключа Л возвращает новое перманентное дерево Т', получающееся в результате вставки й в Т. в) Если высота перманентного бинарного дерева поиска Т равна Л, сюлько времени будет работать ваша реализация Рекязтнчт Ткее 1нзпкт и какие требования к памяти она предъявляет? (Количество требуемой памяти пропорционально количеству новых узлов.) г) Предположим, что в каждом узле имеется поле указателя на родительский узел. В этом случае процедура Рекытент Тине 1нзект должна выполнять дополнительное копирование. Докажите, что в этом случае время работы процедуры и объем необходимой памяти равны й [и), где и — количество узлов в дереве. д) Покажите, как можно использовать красно-черные деревья для того, чтобы при вставке и удалении в наихудшем случае время работы процедуры и объем необходимой памяти были равны О (18 и).

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

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

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