Главная » Просмотр файлов » 1626435697-9d9ede204f9baad60159c2d6531787c7

1626435697-9d9ede204f9baad60159c2d6531787c7 (844297), страница 36

Файл №844297 1626435697-9d9ede204f9baad60159c2d6531787c7 (Хопкрофт, Ульман 1979 - Построение и анализ вычислительных алгоритмов) 36 страница1626435697-9d9ede204f9baad60159c2d6531787c7 (844297) страница 362021-07-16СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Аналогично соединяются деревья, расположенные справа от пути. Необходимые детали даны в процедуре ДЕЛЕНИЕ (рис. 4.34). 1гр ГЛ, 4. СТРУКТУРЪ| ДАННЫХ ДЛЯ ЗАДАЧ С МНОЖЕСТВАМИ ргосеппге ДЕЛЕНИЕ(а, Т): Ьей1п на пути из узла КОРЕНЬ(Т1 к листу с меткой а удалить все узлы, кроме этого листа: сопнпеп1 В данный момент дерево Т оказалось разделенным на два леса — левый, состоящий из всех деревьев, листья которых лежат слева от а, и из узла с меткой а, и правый, состоящий из всех деревьев, листья которых лежат справа от а; ТУЫ!е в левом лесу более одного дерева йо Ьея! п пусть Т' и Т" — два самых правых дерева в левом лесу; ИМПЛАНТАЦИЯ(Т', Т') ') епй; |УЫ!е в правом лесу более одного дерева йо Ьея)п пусть Т' и Т' — два самых левых дерева в правом лесу; ИМПЛАНТАЦИЯ(Т', Т ) епй епй ') Результат процедуры ИМПЛАНТАЦИЯ(Т', Т ) отнести к левому лесу.

Аналогично прн применения к деревьям на правого леса результат процедуры ИМПЛАНТАЦИЯ относится к правому лесу. Рнс. 4.34. Процедура для расцеплення 3-3-дерева. Теорема 4.7, Процедура ДЕЛЕНИЕ разбивает 2-3-дерево Т по листу а так, члю все листья слева от а и сам лист а оказываются в одном 2-3-дереве„а все листья справа от а — в другом. Эта процедура занимает время 0(ВЫСОТА(Т)). Порядок листьев сохраняется.

Д о к а з а т е л ь с т в о. Из свойств процедуры ИМПЛАНТАЦИЯ вытекает, что деревья объединены правильно. Результат о времени работы получается из следукнцих соображений. Вначале число деревьев любой данной высоты не более 2, только деревьев высоты О может быть 3. Когда два дерева соединяются, получается дерево, высота которого не более чем на единицу больше наибольшей из высот двух исходных деревьев. В случае когда получается дерево высоты, на единицу большей высоты любого из исходных деревьев, его корень имеет степень 2. Таким образом, если соединяются три дерева высоты Ь, то в результате получается дерево тва ь!3. РАзвивнив высоты не более Ь+1. Следовательно, на каждой стадии процесса число деревьев одинаковой высоты не превосходит 3.

Время, требуемое для соединения двух деревьев разной высоты, пропорционально разности их высот, а одинаковой высоты— постоянно. Поэтому объединение всех деревьев происходит за время, пропорциональное сумме числа деревьев и наибольшей из разностей высот любых двух деревьев. Таким образом, всего тратится времени порядка высоты исходного дерева. С) Заметим, что с помощью сцепляемой очереди последовательность 5, можно вставить между парой элементов последовательности 5, за время 0(МАХ (!оя!5,1, 1од!5,!)). Если 5,=Ь„Ь„... ..., Ь„, 5,=а„а„..., а и 5, нужно вставить между элементами а; и а;~„то можно применить операцию РАСЦЕПИТЬ(а!, 5,) и разбить 5, по элементу а, на две последовательности 5;=а„ ..., а! и 5 =а!.!„..., а„.

Затем применить операцию СЦЕПИТЬ(5;, 5,), результатом которой будет последовательность 5,=а„..., а!, Ь„..., Ь„, и, наконец, операцию СЦЕПИТЬ(5„5",), дающую нужную последовательность. 4Л3. Рл!ЗВИЕНИЕ Рассмотрим специальный тнп расцепления, называемый разбиением.

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

каждое множество Е, является подмножеством некоторого блока Ву), 2) если а и Ь принадлежат Еь то г" (а) и )'(Ь) принадлежат Еэ для некоторого 1. Будем называть и' грубейшим разбиением множества 5, совместимым с и и Г. Очевидное решение. состоит в повторном утончении блоков исходного разбиения следующим способом. Пусть В! — какой- нибудь блок.

Рассмотрим )(а) для каждого а из Вь Разобьем В, так, чтобы два элемента а и Ь попадали в один блок тогда и только тогда, когда ~(а) и г(Ь) оба принадлежат некоторому блоку В;. Процесс повторяется до тех пор, пока уже нельзя будет проводить дальнейшие утончения. Этот метод дает алгоритм сложности 0(п'), поскольку каждое утончение занимает время 0(п), а всего может «и гл. е стггктггы длниых для зхдлч с множаствлми быть 0(п) утончений. Пример 4.13 показывает, что действительно может потребоваться квадратичное число шагов.

Пример 4.13. Пусть 5=(1, 2,..., и) и В,=(1, 2,..., и — 1), В,=(а) — исходное разбиение. Пусть 1 — такая функция на 5, что 1(!)=!+1 для 1(1<п и [(п)=п. При первой итерации В, разбиваем на (1, 2,..., а — 2) и (и — 1). Эта итерация занимает п — ! шагов, поскольку надо просмотреть каждый элемент в В,. При следующей итерации разбиваем (1, 2, ..., а — 2) на (1, 2, ... л — 3) н (а — 2).

Продолжая в том же духе, выполняем всего и — 2 итерации, причем 1-я итерация занимает и — ! шагов. Следовательно, всего требуется л-2 ~ч,' („.) 1~ — ~> с=~ шагов. Окончательным разбиением будет Е,=(1) для !(и-.п. П Недостаток этого метода состоит в том, что утончение блока может потребовать 0(п) шагов, даже если из него удаляется только один элемент. Сейчас мы опишем алгоритм разбиения, который для разделения блока на два подблока требует время, пропорциональное размеру меньшего подблока. Этот подход приводит к алгоритму сложности 0(а [сап). Для каждого блока В~5 положим )-'(В)=(Ь[Г(Ь) ~ В). Вместо того чтобы разбивать В~ по значениям 1(а) для аЕВь разобьем относительно В, те блоки Вь которые содержат хотя бы один элемент из 1 "(В,) и один элемент не из ~-'(В ).

Иными словами, каждый такой блок В, разбивается на множества (Ь[Ь Е В! и 1(Ь) Е В,) и (Ь [Ь Е В~ и )(Ь) ( В;). Как только проведено разбиение относительно блока В„больше уже не нужно проводить разбиения относительно него, пока он сам не будет расщеплен. Если вначале 1(Ь) Е В~ для каждого элемента Ь ЕВ~ и В, расщеплен на В; и В",, то можно разбить В; относительно В; или В; и получить при этом один и тот же результат, поскольку (Ь[ЬбВ~ и [(Ь)ЕВ;) совпадает с В; — (Ь[ЬЕВ, и ![Ь) ЕВ ).

Так как можно выбирать, гю отношению к какому из блоков В;. или В проводить разбиение, то мы разбиваем относительно того, для которого это сделать проще. Точнее мы выбираем меньшее из множеств [ '(В;) и [-'(В ). Алгоритм приведен иа рис. 4.33. Алгоритм 4,3. Разбиение Вход. Множество 5 из п элементов, разбиение п=(В[11, ..., В[р!) и функция 1: 5-» 5, Выход. Грубейшее разбиение и'=(В[1[, В[2),..., В!ф) множе- ства 5, совместимое с и и [. 4ЗЗ, РАЗБИЕНИЕ ЬеФп 1. ОЖИДАНИЕ (1, 2,, Р)' 2. д -р; 3. вЬ)1е ОЖИДАНИЕ не пусто г)о Ьея!п 4. выбрать и удалить любое целое число ! из множества ОЖИДАНИЕ; 5. ОБРАЩЕНИŠ— [ '(В [!1); б.

!ог 1, для которых В [!1 П ОБРАЩЕНИЕ ~ )д и В [!1ф ОБРАЩЕНИЕ г)о Ьен(п д — о+1; создать новый блок В[д); В[д1 — В [1) () ОБРАЩЕНИЕ; В[!)-В[11 — В[д1; 1! ! Е ОЖИДАНИЕ !Ьеп добавить д в ОЖИДАНИЕ е)зе 11 (!В[!1!!((!В[о)!! !Ьез добавить ! в ОЖИДАНИЕ е!зе добавить д в ОЖИДАНИЕ епд 7 8 10 11 12 13 14 епд епг) Рис. 4.35. Аигорита1 разбиения. Метод. К и применяется программа, приведенная на рис. 4.35. В ней опущены некоторые детали, важные для ее реализации. Мы обсудим эти детали при анализе времени работы алгоритма.

г) Анализ алгоритма 4.5 начнем с доказательства того, что он разбивает 5 нужным образом. Пусть и — разбиение множества В и 1 — отображение множества В на себя. Множество Те=5 будем называть безопасным для и, если для любого блока В Ел либо В~ е:-1 '(Т), либо В()) '(Т)=О. Например, на рис. 4.35 строки 9 и!О гарантируют, что множество В(!! безопасно для получающегося разбиения, поскольку если В()1 з(ВИ)ФЗ для некоторого блока В, то либо В~ ОБРАЩЕНИЕ и тогда включение В~[ '(В!!)) очевидно, либо в строках 9 и 10 В разбивается иа два блока, один гл. 4. стггктггы алиных для злдлч с миожзствлми из которых является подмножеством множества ! '(В[В), а другой с ним не пересекается.

В доказательство корректности алгоритма 4.5 входит доказательство того, что окончательное разбиение не оказывается слишком грубым. Иными словами, надо доказать следующее. Лемма 4.7. После окончания работы алгоритма 4.5 каждый блок В в результирующем разбиении и' безопасен длн и'.

Доказательство. На самом деле мы покажем, что для каждого блока ВИ после каждого выполнения цикла в строках 4 — 14 на рис. 4.35, если 1(ОЖИДАНИЕ и 1(д, формируется такой список >1„ом ..., о (возможно, пустой), что д>6ОЖИДАНИЕ, 1(1(й, и множество В[1(0 В[дД0 ° 0 В[уз) безопасно для разбиения, построенного в данный момент. Интуитивно это можно изложить так: когда число 1 удаляется из множества ОЖИДАНИЕ, строки 6 — 14 делают блок ВЩ безопасным для разбиения, которое получается после строки 14.

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

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

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

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