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

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

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

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

Операции пад иеперееекаюптимиси множествами Структура данных для непересекающихся множеств (о)з)о)пьзе1 да1а яиасгше) поддерживает набор о = (Яы Яз,..., Яь) непересекающихся множеств. Каждое множество идентифицируется нредставнтелен (гергезеп1а11те), который представляет собой некоторый член множества. В одних приложениях не имеет значения, какой именно элемент множества используется в качестве представителя; главное, чтобы при запросе представителя множества дважды, без внесения изменений в множество между запросами, возвращался один и тот же элемент. В других приложениях может действовать предопределенное правило выбора представителя, например наименьшего члена множества (само собой разумеется, в предположении о возможности упорядочения элементов множества).

Как и в других изученных нами реализациях динамических множеств, каждый элемент множества представляет некоторый объект х. Мы хотим обеспечить поддержку следующих операций. Часть и Сложные сщрукщуры донных 598 МАКЕ-БЕТ(х) создает новое множество, состоящее из одного члена (который, соответственно, является его представителем) х. Поскольку множества непересекающиеся, требуется„чтобы х не входил ни в какое иное множество.

(ах)ох(х, у) обьединяет динамические множества, которые содержат х и у (обозначим их через о', и Яр), в новое множество. Предполагается, что до выполнения операции указанные множества не пересекались. Представителем образованного в результате множества является произвольный элемент Я 0 Яр, хотя многие реализации операции ()х)Ох выбирают новым представителем представителя множества Я, или Яр. Поскольку нам необходимо, чтобы все множества были непересекающимися, операция 1)х)Ох концептуально должна уничтожать множества Я, и Яр, удаляя их из коллекции Я. Р!ХО-ЯЕТ(х) возвращает указатель на представителя (единственного) множества, в котором содержится элемент х.

В этой главе мы проанализируем зависимость времени работы структуры данных для непересекающихся множеств от двух параметров; количества операций МАке-Бет и и общего количества операций МАке-бет, (Зх!Ох и Р!хп-Бег т. Поскольку множества непересекающиеся, каждая операция 1)х)Ох уменьшает количество множеств на 1. Следовательно, после и — 1 операций 1)х)Ох останется только одно множество, так что количество операций ()Х)ОХ не может превышать и — 1. Заметим также, что поскольку в общее количество операций т включены операции МАке-Бет, то т ) и. Предполагается также, что и операций МАкеЯЕТ являются первыми и выполненными операциями.

Приложение струкчур данных длн непересекающихся множеств Одно из многих применений структур данных для непересекающихся множеств — в задаче об определении связных компонентов неориентированного графа (см. раздел Б.4). Так, на рис. 21.1,(а) показан граф, состоящий из четырех связных компонентов.

Процедура Соххестеп-СОМРОхехтз, приведенная ниже, использует операции над непересекающимися множествами для вычисления связных компонентов графа. После того как процедура СОХХЕСТЕО-СОМРОХЕХТЗ разобьет множество вершин графа на непересекающиеся множества, процедура ЯАме-СОмРОхехт в состоянии определить, принадлежат ли две данные вершины одному и тому же связному компоненту). (Множество вершин графа С обозначим как С.

)У, а множество ребер — как С.Е.) Если ребра графа являются "статичеакимиз т,е, не изменяются а течением времени, то вычислить авязныс компоненты можно быатргм а помощью поиака в глубину 1см. упр, 22.3.12). Одныю иногда ребра дабажщюгся "динамически", к нам нужно поддерживать связные компоненты при добавлении нового ребра. В этой ситуюии лривсденнаа здесь реализации оказывается эффективнее, чем повторное выполнение поиске вотубь для каждого нового ребра.

Глана вб Смрузаннян данник дяя нснярссскающшся мнажсста (а) (б1 Рис. 21.1. (а) Граф с четырьмя связными яомпоиситами: (а, Ь, с, д), (с, з, д), (6, з» и (3). (б) Набор испсрсссяазоппоыя миожсств попас обработки каждого ребра. СО(чХЕСТЕГЗ-СОМРО(чисЗТЗ (С) 1 (ог каждой вершины и Е ск. Ь' 2 МАКЕ-БЕТ(и) 3 (ог каждого ребра (и, и) б С. Е 4 !Р Р(м0-Бет(и) Ф Р!нп-Бет(и) 5 (ЛПОМ(и, и) БАМЕ-СОМРОЫЕХТ(и, и) 1 Ы Р(нп-Бет(и) == Р(г((з-Бег(и) 2 гегигп тк((е 3 е(ае ге(пгп РАьЗЕ Процедура Соынесте(з-СОМРОнентб сначала помещает квкдую вершину и в ее собственное множеспю.

Затем для каждого ребра (и, и) выполняется обьединение множеств, содержащих и и и. В соответствии с упр. 21.1.2 после обработки всех ребер две вершины будут находиться в одном связном компоненте тоща и только тогда, когда соответствующие объекты находятся в одном множестве. Таким образом, процедура СОннесте(з-СОМРОыЕНТЗ вычисляет множества так, что процещра БАме-Сомрохент может определить, находятся ли две вершины в одном и том же связном компоненте. На рис. 21.1, (б) показан процесс вычисления непересекающихся множеств процедурой Сонместеп-СОМРОмемтб.

В реальной реализации описанного алгоритма представления графа и структуры непересекающихся множеств требуют наличия взаимных ссылок, т.е. обь- Часть и Сяансные структуры данные 000 ект, представляющий вершину, должен содержать указатель на соответствующий объект в непересекающемся множестве и наоборот. Зти детали программной реализации зависят от используемого для реализации языка программирования и здесь не рассматриваются. Упражнения 21.1.1 Предположим, что процедура Сохнестеп-СомРОментз вызывается для неориентированного графа С = (Ъ;Е), где 1с = (а,Ь,с,й,е,1',д,й,ю',1,Ц, а ребра из Е обрабатываются в следующем порядке: (Й, 1), (1, Й), (д, 1), (Ь, д), (о, л), (г, 3), (с(, /с), (Ь, 1), (и, 1), (д, т), (а, е). Перечислите вершины в каждом связном компоненте после выполнения каждой итерации в строках 3 — 5.

21.1.2 Покажите, что после того, как все ребра будут обработаны процедурой СОмхестеО-СОмРОхехтз, две вершины находятся в одном связном компоненте тогда и только тогда, когда они находятся в одном и том же множестве. 21.1.З Сколько раз вызывается процедура г|нп-Бег в процессе выполнения процедуры Соннестеп-Сомроментз над неориентированным графом С = (Г, Е) с lс связными компонентами? Сколько раз вызывается процедура 13ьпон? Выразите ваш ответ через (И, )Е( и к. 21.2. Представление непересекающихся множеств с помощью связанных списков На рис. 21.2, (а) показан простейший способ реализации структуры данных для непересекающихся множеств: каждое множество представлено своим связанным списком.

Объект каждого множества имеет атрибуты ЬеаН, указывающий на первый объект списка, и 1ае(, указывающий на последний обьект списка. Каждый объект списка содержит член множества, указатель на следующий объект в списке и указатель на объект множества. Обьекты в пределах каждого списка могут располагаться в любом порядке. Представителем множества является член в первом объекте списка. Прн использовании такого представления в виде связанных списков процедуры МАке-Бег и Р~нп-Бет легко реализуются и время их работы равно 0(1). Процедура МАКЕ-ЯЕт(х) создает новый связанный список с единственным объектом х, а процедура г1хп-Яет(х) просто следует по указателю на объект множества и возвращает член обьекга, на который указывает ЬеаЫ.

Например, на рис. 21.2„(а) вызов гпчп-Бег(д) вернет 1. Глава дй Сндгунтуры данньгх для непересекающихся множеств Рис. 21.2. (а) Представление двух мнвкесгв в виде связанных списков. Множество ог содержит члены г(, Г' и д, с предсгалнтлем У, а множество Яз содержит члены Ь, с, е и Ь, с представителем с. Каждый обьекг в списке содержит член множества, указатель на следующий объект в списке и ухвзатель на обьекз множества.

Кюкдый обьект множества имеет указатели Ьеад и Гагт на первый и последний обьекгы соответственно. (6) Результат операции ()игом(д, е), которая добавляет связанный список. содержащий е, к связанному списку, содержащему д. Представителем полученного в результате множества является /. Объект множества оз для списка е уничтожается. Простая реализация объединения Простейшая реализация операции ())чюи при использовании связанных списков требует гораздо больше времени, чем процедуры МАке-Яет и Рпчп-Бет. Как показано на рис.21.2,(б), мы выполняем процедуру ()н)О)ч(х, у), добавляя список с элементом х в конец списка, содержащего у. Представитель списка х становится представителем результирующего списка.

Мы используем указатель (аз( для списка с элементом х для того, чтобы быстро определить, куда следует добавить список, содержащий р. Поскольку все члены списка у обьединяются со списком х, можно уничтожить объект множества для списка у. К сожалению, требуется обновить указатель на объект множества для каждого объекта, исходно входящего в список у, что требует времени, линейно зависящего от длины списка у. На рис. 21.2, например, операция ())ч)о)ч(д, е) требует обновления указателей объектов Ь, с, е и 6. Действительно, нетрудно построить последовательность из гп операций над и объектами, которая требует 9(п ) времени. Предположим, что у нас есть объекты хз, хз,..., х„.

Мы выполняем последовательность из и операций Мдке-Бет, за которой следует последовательность из п — 1 операций (3)ч1о)ч, показанных на рис.21.3, так что т = 2п — 1. На выполнение п операций МАке-Бет мы тратим время 9(п). Поскольку г-я операция ())чю)ч обновляет з объектов, общее количество объектов, обновленных всеми и — 1 операциями 13)ч)о)ч, равно и-1 з = е)(пз) г=1 602 Часть и Сложные структуры доплыл Количество обновленных объектов Операция МАке-Яет(хт) МАке-Яет(хз) МАКЕ-ЯЕТ (Хп) ()мюм(хз, х,) Ш'110М (ХЗ, Х2) 1)м!Ом(ха, хз) 1)м1ом(х, х -1) и — 1 Рнс. 21.3.

Последовательность 2п — 1 операций над и обьеатамн, воторал требует 9(п~) времена (в среднем ез(п) на одну операцнзо) прн представленнн с использованием свлзаннмл спнсвов н простой реалнзацлн процедуры 1)к!он. Общее юличество операций равно 2п — 1, так что каждая операция в среднем требует для выполнения времени 9(п). Таким образом, амортизированное время выполнения операции составляет 9(п). Весовая эвристнка В наихудшем случае представленная реализация процедуры ()мюм требует в среднем б!(п) времени на один вызов, поскольку может оказаться, что мы присоединяем длинный список к юроткому н должны при этом обновить поля указателей на представителя всех членов длинного списка.

Предположим теперь, что каждый список включает также поле длины списка (которое легко поддерживается) и что мы всегда добавляем меньший список к большему (при одинаковых длинах порядок добавления не имеет значения). При такой простейшей весовой эвристике (зуезй)з)ес)-цл(оп Ьецпзг)с) одна операция ПМЮМ может потребовать время П(п), если оба множества имеют по П(п) членов.

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

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

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