Главная » Просмотр файлов » Алгоритмы - построение и анализ

Алгоритмы - построение и анализ (1021735), страница 73

Файл №1021735 Алгоритмы - построение и анализ (Алгоритмы - построение и анализ) 73 страницаАлгоритмы - построение и анализ (1021735) страница 732017-07-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Во многих случаях (в частности, в случае поля зтзе в деревьях порядковой статистики) время, необходимое для обновления полей после вращения, составляет О (1), а не О (!я и), приведенное в доказательстве теоремы 14.1. Пример такого поведения можно также найти в упражнении 14.2-4. Упражнения 14.2-1. Покажите, каким образом расширить дерево порядковой статистики, чтобы операции МАх!мгли, Мгх!мг!м, БггссеББОЕ и РкепесеББОЕ выполнялись за время О (1) в наихудшем случае. Асимптотическая производительность остальных операций над деревом порядковой статистики должна при этом остаться неизменной. (Указание: добавьте к узлам указатели.) 14.2-2.

Может ли черная высота узлов в красно-черном дереве поддерживаться как поле узла дерева без изменения асимптотической производительности операций над красно-черными деревьями? Покажите, как этого достичь (или докажите, что это невозможно). 14.2-3. Может ли глубина узлов в красно-черном дереве эффективно поддерживаться в виде поля узла? Покажите, как этого достичь (или докажите, что это невозможно). * 14.2-4. Пусть ® — ассоциативный бинарный оператор, а а — поле, поддерживаемое в каждом узле красно-черного дерева. Предположим, что мы хотим включить в каждый узел х дополнительное поле Г", такое что Г [х] = = а[хг] З а[ха] З З а[х„,], где хг,хз,...,х,„— центрированный список узлов поддерева, корнем которого является х.

Покажите, что после поворота все поля г" могут быть корректно обновлены за время О (1). Проведите подобное рассуждение для поля а!хе. Глава 14. Расширение структур данных 375 * 14.2-5. Мы хотим добавить к красно-черным деревьям операцию КВ Ем~меклте(х,а,6), которая выводит все ключи а < й < 6 в дереве, корнем которого является х. Опишите, как можно реализовать процедуру ВВ Ехимеклте, чтобы время ее работы составляло 6 (т + 1к п), где и — количество внутренних узлов в дереве, а т — число выводимых ключей. (Указание: добавлять новые поля в красно-черное дерево нет необходимости.) 14.3 Деревья отрезков В этом разделе мы расширим красно-черные деревья для поддержки операций над динамическими множествами промежутков. Отрезком называется упорядоченная пара действительных чисел [1~,1з], таких что 1з < 8з.

Отрезок [$~,1з] представляет множество (Х Е В,: тг < т < тз). Интервал (Фз,тз) представляет собой отрезок без конечных точек, т.е. множество (8 Е К: 1з < 1 < 1з), а полуиктервалы [1ы гз) и (1з,1з] образуются из отрезка при удалении из него одной из юнечных точек. В случае, когда принадлежность концов несущественна, обычно говорят о крамезкучкках. В данном разделе мы будем работать с отрезками, но расширение результатов на интервалы и полуинтервалы не должно составить для читателя никакого труда.

Отрезки удобны для представления событий, которые занимают некоторый промежуток времени. Мы можем, например, сделать запрос к базе данных о том, какие события происходили в неюторый промежуток времени. Рассматриваемая в данном разделе структура данных обеспечивает эффективное средство для поддержки такой базы данных, работающей с промежутками. Мы можем представить отрезок [1м1з) в виде обьекта з с полями 1ою [1) = 1з (левый, или нижний, конец отрезка) и Ьгдй [1] = 1з (правый, или верхний, конец). Мы говорим, что отрезки 1 и Г лерекрываются (очег1ар), если 1П Г ф 9, т.е.

если 1ош [1) < 61дй [г'] и 1ою [г') < йгдй [1). Для любых двух отрезков 1 и г' выполняется только одно из трех свойств (трихотомия отрезков): а) 1 и 1' перекрываются; б) 1 находится слева от г' (т.е. бардл [1] < 1оиг [г']); в) г находится справа от г' (т.е. 61дй [г') < 1ош [1) ). Эти варианты взаимного расположения отрезков проиллюстрированы на рис.

14.3. Дерево олгрезков представляет собой красно-черное дерево, каждый элемент которого содержит отрезок 1п1 [х]. Деревья отрезков поддерживают следующие операции. 1нтекчА!. 1нзект(Т, х), которая добавляет в дерево отрезков Т элемент х, поле тФ юторого содержит некоторый отрезок. Часть й!. Структуры данных 376 ) — ~ — 11 а) 1 — — 1 в) Рнс. 14.3. Варианты взаиморасположения отрезков 1 н Р 1нтекчиЛЭн.ете(Т, х), которая удаляет элемент х нз дерева отрезков Т.

1нтенуА1 БеАксн(Т, 1), которая возвращает указатель на элемент х из дерева отрезков Т, такой что 1п1 [х] перекрывается с отрезком 1 (либо ограничитель пП [Т], если такого элемента в дереве нет). На рис. 14.4 показано множество отрезков и его представление в виде дерева отрезков. Давайте рассмотрим этапы расширения структур данных из раздела 14.2 при решении задачи разработки дерева отрезков и операций над ним.

Шаг 1. Выбор базовой структуры данных. В качестве базовой структуры данных мы выбираем красно-черное дерево, каждый узел х которого содержит отрезок 1пФ [х], а ключом узла является левый конец отрезка 1ою [1п1[х]]. Таким образом, центрированный обход дерева приводит к перечислению отрезков в порядке сортировки по их левым концам. Шаг 2. Дополнительная информация. В дополнение к самим отрезкам, каждый узел х содержит значение глах [х], которое представляет собой максимальное значение всех конечных точек отрезков, хранящихся в поддереве, корнем которого является х. Шаг 3.

Поддержка информации. Мы должны убедиться, что вставка и удаление в дереве с п узлами могут быть выполнены за время О (1йп). Определить значение поля тах в узле х можно очень просто с использованием полей гпах дочерних узлов: тах [х] = шах (Ьгдй [1пт [ж]], тах [1е9 [х]], гпах [г1дМ [х]]) . Таким образом, по теореме 14.1, вставка в дерево отрезков и удаление из него может быть выполнена за время О (1к и). В действительности, как показано в упражнениях 14.2-4 и 14.3-1, обновление поля тах после вращения может быть выполнено за время О (1).

377 26н26 25 ! — — ~~30 19 н20 17 ! — ~19 22 21 12 22 8н9 6~ — — ~!О 5~ — -~8 0~ — ~3 0 5 10 15 20 25 30 а) 419.20) ', 1;--~Г-) 6) Рис. 14.4. Множество отрезков и его представление в виде дерева отрезков Шаг 4. Разработка новых операций. Единственная новая операция, которую мы хотим разработать, — это 1нтекчАЕ ЗКАксн(Т,1), которая осуществляет поиск отрезка в дереве Т, который перекрывается с данным. Если такого отрезка в дереве нет, процедура возвращает указатель на ограничитель п11 )Т]: 1хтекчА$.

БеАксн(Т,г) 1 х + — то!)Т] 2 и2ЬПе х 56 пгЦТ) и 1 не перекрывается с 1п1')х] 3 йо Ы !ей) ф паяй)Т] и тех)1еЯ)х)) > 1ош]1) 4 Феп х — 1ефх] 5 е!ве х — ттдй1]х) 6 гетпгп х Для поиска отрезка, который перекрывается с г, мы начинаем с присвоения указателю х корня дерева и выполняем спуск по дереву. Спуск завершается когда мы находим перекрывающийся отрезок или когда х указывает на ограничитель Глава 14. Расширение структур данных ,8Я '! ®' Ю ДО,3) 1 16,10) ) 1 125120) 1 :1 . -- 22222х 69 Ю Часть йй Структуры данных 378 ит1 [Т]. Поскольку каждая итерация основного цикла выполняется за время О [1), а высота красно-черного дерева с п узлами равна О [18 и), время работы процедуры 1нтнкуи.

Знлксн равно О [18 и). Перед тем как мы убедимся в корректности процедуры 1нтекум. Белксн, давайте посмотрим, как она работает, на примере дерева, показанного на рис. 14.4. Предположим, что мы хотим найти отрезок, перекрывающийся с отрезком г' = = [22, 25]. Мы начинаем работу с корня, в котором содержится отрезок [16,21], который не перекрывается с отрезком г'. Поскольку значение тах [1е~~ (х]] = 23 превышает 1ото (1] = 22, цикл продолжает выполнение с х, указывающим на левый дочерний узел корня.

Этот узел содержит отрезок [8,9], который также не перекрывается с отрезком 1. Теперь тах (1ег2 [х]] = 10 меньше 1ою [1] = 22, так что мы переходим к правому дочернему узлу. В нем содержится отрезок (15, 23], перекрывающийся с х, так что процедура возвращает указатель на данный узел. В качестве примера неудачного поиска попробуем найти в том же дереве отрезок, перекрывающийся с отрезком г' = [11, 14].

Мы вновь начинаем с корня. Поскольку отрезок в корне [16, 21] не перекрывается с г, и поскольку тах [1е~1 [х]] = = 23 больше, чем 1ото (г] = 11, мы переходим к левому дочернему узлу корня с отрезком [8, 9]. Отрезок (8, 9] также не перекрывается с г, а тах [1ег2 [х]] = 10, что меньше, чем 1ою [г] = 11, поэтому мы переходим вправо (обратите внимание, что теперь в левом поддереве нет ни одного отрезка, перекрывающегося с т. Отрезок [15,23] не перекрывается с г, его левый дочерний узел — ит1 [Т], так что цикл завершается и процедура возвращает указатель на ограничитель ит2 [Т]. Для того чтобы убедиться в корректности процедуры 1нтнкчль Яклксн, нам надо разобраться, почему для поиска нам достаточно пройти по дереву всего лишь по одному пути.

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

Более точно это свойство сформулировано в следующей теореме. Теорема 14.2. Процедура 1нтнкуль Бнлксн[Т, 1) либо возвращает узел, отрезок которого перекрывается с отрезком г, либо, если в дереве Т не содержится отрезка, перекрывающегося с г, возвращает ит1 (Т].

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

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

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

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