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

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

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

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

Часть 111. Структуры данных 350 Анализ Чему равно время работы процедуры КВ 1мзнит? Поскольку высота красно- черного дерева с и узлами равна О (18п), выполнение строк 1 — 16 процедуры КВ 1нзект требует О (1бп) времени. В процедуре КВ 1ыеект Р!АР цикл ттЫ!е повторно выполняется только в случае 1, и в этом случае указатель з перемещается вверх по дереву на два уровня. Таким образом, общее количество возможных выполнений тела цикла ттй1!е равно О (18 и).

Таким образом, общее время работы процедуры КВ 1ызект равно О (18и). Интересно, что в ней никогда не выполняется больше двух поворотов, поскольку цикл и ййе в случаях 2 и 3 завершает работу. Упражнения 13.3-1. В строке 16 процедуры КВ 1ызект мы окрашиваем вновь вставленный узел в красный цвет. Заметим, что если бы мы окрашивали его в черный цвет, то свойство 4 не было бы нарушено. Так почему же мы не делаем этого? 13.3-2. Изобразите красно-черные деревья, которые образуются при последовательной вставке ключей 41, 38, 31, 12, 19 и 8 в изначально пустое красно- черное дерево.

13.3-3. Предположим, что черная высота каждого из поддеревьев а,,В, у, 6 и е на рис. 13.5 и 13.6 равна Й. Найдите черные высоты каждого узла на этих рисунках, чтобы убедиться, что свойство 5 сохраняется при показанных преобразованиях. 13.3-4. Профессор озабочен вопросом, не может ли в процедуре КВ 1ызеит Р~хг1Е произойти присвоение значение ке0 узлу пг1[Т] — ведь в этом случае проверка в строке 1 не вызовет окончания работы цикла в случае, если г — корень дерева. Покажите, что страхи профессора безосновательны, доказав, что процедура КВ 1ызект йхиг никогда не окрашивает пи [Т[ в красный цвет. 13.3-5. Рассмотрим красно-черное дерево, образованное вставкой и узлов при помощи процедуры КВ 1ыьект.

Докажите, что если п > 1, то в дереве имеется как минимум один красный узел. 13.3-6. Предложите эффективную реализацию процедуры КВ 1ызнкт в случае, когда представление красно-черных деревьев не включает указатель на родительский узел. Глава 13. Красно-черные деревья 351 13.4 Удаление Как и остальные базовые операции над красно-черными деревьями с и узлами, удаление узла выполняется за время 0 (1ки). Удаление оказывается несколько более сложной задачей, чем вставка. Процедура КВ Редеете представляет собой немного измененную процедуру Ткее !За.ете из раздела 12.3. После удаления узла в ней вызывается вспомогательная процедура КВ 13ет.ете Ртхиг, которая изменяет цвета и выполняет повороты для восстановления красно-черных свойств дерева: КВ !Знаете(Т,з) 1 !Г 1ет2(з] = и!1(Т] или пдйф] = и11[Т] 2 г!теп у — з 3 е1зе у — Ткее Бгтссеззок(г) 4 !!' 1е71[у] ф ий[Т] 5 Феп х — 1ефу] 6 е!зе х — пди1[у] 7 р[х] — р(у] 8 !!' р[у] = и!1(Т] 9 !!зеп тоо1(Т] +- х 10 е1зе !!' у = 1еГ1(р[у]] 11 Феп 1е7г(р[у]] — х 12 е!зе пдМ[р[у]] — х 13 гауфа 14 Феп йеу[з] ~ — Йеу[у] 15 Копируем сопутствующие данные у в з 16 !! со1от'[у] = В1.Аск 17 !!теп КВ !Зеваете Р!АР(Т, х) 18 ге!ига у Имеется три различия между процедурами Ткее !Зеваете и КВ Ре1ете.

Вопервых, все ссылки на ми. в Ткее !Зенте заменены в КВ !Зеваете ссылками на ограничитель и!! [Т]. Во-вторых, удалена проверка в строке 7 процедуры Ткее !Зеваете (равно ли х н1е), и присвоение р(х] — р(у] выполняется в процедуре КВ 13ЕЕЕтЕ безусловно. Таким образом, если х является ограничителем и!! [Т], то его указатель на родителя указывает на родителя извлеченного из дерева узла у. В-третьих, в строках 16-17 процедуры КВ Рн.втн в случае, если узел у — черный, выполняется вызов вспомогательной процедуры КВ 13е~.ете Р1хнк Если узел у — красный, красно-черные свойства при извлечении у из дерева сохраняются в силу следующих причин: ° никакая черная высота в дереве не изменяется; ° никакие красные узлы не становятся соседними; 352 Часть П1.

Структуры данных ° так как у не может быть корнем в силу своего цвета, корень остается черным. Узел х, который передается в качестве параметра во вспомогательную процедуру КВ !3а.ЕТЕ Р!ХОР, является одним из двух узлов: либо это узел, который был единственным потомком у перед извлечением последнего из дерева (если у у был дочерний узел, не являющийся ограничителем), либо, если у узла у нет дочерних узлов, х является ограничителем и!1 [Т]. В последнем случае безусловное присвоение в строке 7 гарантирует, что родительским по отношению к х узлом становится узел, который ранее был родителем у, независимо от того, является ли х внутренним узлом с реальным ключом или ограничителем и!! [Т]. Теперь мы можем посмотреть, как вспомогательная процедура КВ 1мзеет р!ХОР справляется со своей задачей восстановления красно-черных свойств дерева поиска. КВ !Зеваете Р!хОР(Т, х) ! е!з!!е х Ф тооЯ[Т] и со1от[х] = вьАск 2 !!о !Т х = 1е71[р[х]] 3 г!зеп ю — пдй1[р[х)) 4 !! со!от(ю] = КЕО 5 т!яеп со1от[ю] вьАск > Случай ! 6 со1от(р[х]] — КЕО !> Случай 1 7 ЬЕРТ КОТАТЕ(Т, р[х]) с Случай 1 8 ю — пдМ[р[х)] с Случай 1 9 !Г со1от[1е1! [ю]] = В!.АСК и со1от[пдй![ю]] = В!.АСк !О 1!!еп со1от[ю] — КЕО с Случай 2 !! х — р[х] !> Случай 2 !2 е!зе !Т со1от(пдЫ[ю)] = В! Аск !3 т!зеп со!от [1еЯиЦ вЂ” в!.Аск !> Случай 3 !4 со1от[ю] — КЕО с Случай 3 !5 К!ОНТ КОТАТЕ(Т, ю) с> Случай 3 !6 ю — ад!!1[р[х]] !> Случай 3 !7 со 1 от [ю] — со1от !р[х]] !> Случай 4 !8 со1от[р[х]] < — ВЬАСК !> Случай 4 !9 со1от [тядЩиф — В!.АСК !> Случай 4 20 ЬЕРТ КОТАТЕ(Т, р[х)) !> Случай 4 2! х — таодТ] с Случай 4 22 е!зе (то же, что и в "!!зеп", с заменой 1е7г на пдву и наоборот) 23 со1от[х] — В!.АСК Если извлекаемый из дерева в процедуре КВ 13н.ЕТЕ узел у черный, то могут возникнуть три проблемы.

Во-первых, если у был корнем, а теперь корнем стал красный потомок у, нарушается свойство 2. Во-вторых, если и х, и р(у) (который теперь является также р [х)) были красными, то нарушается свойство 4. И, в-третьих, удаление у приводит к тому, что все пути, проходившие через у, Глава 13. Красно-черные деревья 353 теперь имеют на один черный узел меньше. Таким образом, для всех предков у оказывается нарушенным свойство 5. Мы можем исправить ситуацию, утверждая, что узел х — "сверхчерный", т.е. при рассмотрении любого пути, проходящего через х, добавлять дополнительную 1 к количеству черных узлов. При такой интерпретации свойство 5 остается выполняющимся. При извлечении черного узла у мы передаем его "черноту" его потомку.

Проблема заключается в том, что теперь узел х не является ни черным, ни красным, что нарушает свойство 1. Вместо этого узел х окрашен либо "дважды черным", либо "красно-черным" цветом, что дает при подсчете черных узлов на пути, содержащем х, вклад, равный, соответственно, 2 или 1. Атрибут со1ог узла х при этом остается равен либо вг.лск (если узел дважды черный), либо кнп (если узел красно-черный). Другими словами, цвет узла не соответствует его атрибуту со1ог. Процедура КВ РньнтЕ Рахов восстанавливает свойства 1, 2 и 4.

В упражнениях 13.4-1 и 13.4-2 требуется показать, что данная процедура восстанавливает свойства 2 и 4, так что в оставшейся части данного раздела мы сконцентрируем свое внимание на свойстве 1. Цель цикла угй11е в строках 1-22 состоит в том, чтобы переместить дополнительную черноту вверх по дереву до тех пор, пока не выполнится одно из перечисленных условий. 1. х указывает на красно-черный узел — в этом случае мы просто делаем узел х "единожды черным" в строке 23. 2. х указывает на корень — в этом случае мы просто убираем излишнюю черноту. 3.

Можно выполнить некоторые повороты и перекраску, после которых двойная чернота будет устранена. Внутри цикла зу)н)е х всегда указывает на дважды черную вершину, не являющуюся корнем. В строке 2 мы определяем, является лн х левым или правым дочерним узлом своего родителя р [х]. Далее приведен подробный код для ситуации, когда х — левый потомок. Для правого потомка код аналогичен и симметричен, и скрьгг за описанием в строке 22. Указатель ш указывает на второго потомка родителя х. Поскольку узел х дважды черный, узел ш не может быть п11 [2'] — в противном случае количество черных узлов на пути от р [х] к (единожды черному) листу было бы меньше, чем количество черных узлов на пути от р[х] к х. Четыре разных возможных случая' показаны на рис.

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

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

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