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

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

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

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

Список свободных позиций работает как стек: очередной выделяемый объект является последним освобожденным. Таким образом, реализовать процедуры выделения и освобождения памяти для объектов можно с помощью стековых операций Рпэн и Рор. Глобальная переменная Тгее, использующаяся в приведенных ниже процедурах, указывает на первый элемент списка свободных позиций.

А[Л.ОСАТЕ-ОВ5ЕСТ О 1 К (гее == ИП. 2 еггог аНе хватает памяти" 3 е1ве х = 5гее 4 5гее = х.пехт 5 геплгп х РКЕЕ-ОВ5ЕСТ(х) 1 х.пехт = утее 2 угее = х Часть Ш Струюлуры данных 27б (б) (а) ! 2 3 4 5 6 7 8 (а) Рнс. 10.7. Результат вызовов процедур Аы.ослтп-Овшст и Ркяп-Ов)пст. (в) Список с рис. 10.5 (светлая штриховка) и список свободных позиций (темная штриховка). Стрелки показывают структуру списка свободньп! позиций.

(б) Результат вызова Аи.ослтя-Ов)вст() (возвращающего индекс 4), установки )гер]4] равным 25 и вмзова С)зт-!ызпкт(Ь,4). Головным элементом нового списка свободных позиций являетса обьеат 8, мпорый в списке свободных позиций представлял собой пссг]4]. (в) после выполнения 1)зт-пяьвте(ь, 8) вызывается ркяе-Ов)вст(б). Обьект 5 становнтся новым заголовком списка свободных позиций; следующим в списке за ним идет обьекг 8. Изначально список свободных позиций содержит все и объектов, для которых не выделено место.

Когда в списке свободных позиций больше не остается элементов, процедура Ап,осАтн-Ов)нст выдает сообщение об ошибке. Один список свободных позиций может обслуживать несколько связанных списков. Но рнс. 10.8 показаны два связанных списка и список свободных позиций, связанные посредством массивов лер, петг и ргеп. Время выполнения обеих процедур равно 0(1), что делает их весьма практичными.

Эти процедуры можно модифицировать так, чтобы они работали с любым набором однородных обьектов, лишь бы один из атрибутов объекта работал в качестве атрибута пех( списка свободных позиций. 2 3 4 5 6 7 8 9 (О лгх! Рнс. 10.8. Связанные списки Ь! (свстло-серый) и 4.7 (темно-серый) и обслукивающий их список свободных позиций (черный).

Глава 1О. Элеиенеларные структуры данник 777 Упражнения 10.3.1 Изобразите последовательность (13, 4, 8, 19, 5, 11), хранящуюся в дважды связанном списке, представленном с помощью нескольких массивов. Выполните зто же задание для представления с помощью одного массива. 10.3.г Разработайте процедуры Ап.осяте-Овзест и Ркее-Оврест для однородного набора объектов, реализованного с помощью одного массива.

10.3.3 Почему нет необходимости присваивать или вновь устанавливать значения атри- бутов ргее при реализации процедур Аееослте-Овзест и Ркее-Оврвот? 10.3.4 Зачастую (например, при страничной организации виртуальной памяти) все элементы списка желательно располагать компактно, в непрерывном участке памяти, например, используя т первых позиций в представлении списка несколькими массивами. Поясните, как реализовать процедуры АееосАте-Овзест и РкееОвуест так, чтобы получить компактное представление.

Считаем, что нет никаких указателей на элементы связанного списка извне. (Указание: восполъзуйтесь реализацией стека с помощью массива.) 10.3.5 Пусть 1, — дважды связанный список длиной и, который хранится в массивах )ееу, ргеэ и пезт длиной т. Предположим, что управление этими массивами осуществляется с помощью процедур Ап.осяте-Овзест и Ркее-Овзест, использующих дважды связанный список свободных позиций г'. Предположим также, что ровно и из т элементов находятся в списке Ь, а остальные гп — п элементов— в списке свободных позиций.

Разработайте процедуру СОМЕАСт1ру-1ЛЗт(1,, Г), которая в качестве параметров получает список Ь и список свободных позиций Г и перемещает элементы списка 1 таким образом, чтобы они занимали ячейки массива с индексами 1,2,..., и, а также преобразует список свободных позиций Г так, что он остается корректным и содержит ячейки массива с индексами п + 1, п + 2,..., тп. Время работы этой процедуры должно быть равным 9(и), а объем используемой ею дополнительной памяти не должен превышать некоторую фиксированную величину.

Докажите корректность разработанной процедуры. 10.4. Представление корневых деревьев Приведенные в предыдущем разделе методы представления списков подходят для любых однородных структур данных. Данный раздел посвящен задаче пред- 278 Часть!и. Структуры даиньи т. тост Рз.!, Рнс.!99. Представление бинарного дерева Т. Каждый узел х имеет атрибуты хр (вверх), х.

(еут (влево вниз) и х. т(р)з( (вправо вниз). Атрибуты /сер не показаны. стааления корневых деревьев с помощью связанных структур данных. Мы начнем с рассмотрения бинарных деревьев, а затем рассмотрим представление деревьев с произвольным количеством дочерних элементов. Каждый узел дерева представляет собой отдельный объект. Как и при изучении связанных списжзв, предполагается, что в каждом узле содержится атрибут )сед.

Остальные интересующие нас атрибуты представляют собой указатели на другие узлы, и их вид зависит от типа дерева. Бинарные деревья Как показано на рис. 10.9, для хранения указателей на родительский, дочерний левый и дочерний правый узлы бинарного дерева Т используются атрибуты р, 1еу( и пдл(. Если х.р = Нпо то х — корень дерева.

Если у узла х нет левого дочернего узла, х, 1ей = )чп.; аналогичное утверждение справедливо в случае отсутствия правого дочернего узла. Атрибут Т. гоо( указывает на корневой узел дерева Т. Если Т. гоо1 = ыи., то дерево Т пустое. Корневые деревья с произвольным ветвлением Схему представления бинарных деревьев мозно обобщить для деревьев любого класса, в которых количество дочерних узлов не превышает незюторой константы )с.

При этом атрибуты 1еу( и гздЬ1 заменяются атрибутами сЬзЫП сЫс(э,..., сЫс(ь Если количество дочерних элементов узла не ограничено, то эта схема не работает, поскольку заранее не известно, место для какого количества атрибутов (массивов при использовании представления с помощью нескольких массивов) нужно выделить.

Кроме того, даже если количество дочерних элементов )с ограничено большой константой, но на самом деле у многих узлов потомков намного меньше, то значительный объем памяти расходуется напрасно. 279 Глава ) О. Элементарные структуры данных ~'+у Рнс. 10.10. Представление дерева Т с левым дочерним и правым сестринским узлами. Каждый узел х имеет атрибуты х р (вверх), х. (еЯ-сЫВ (влево вниз) и х. МдМ взьнпд (вправо).

Атрибуты )мд ие показаны. К счастью, существует остроумная схема представления деревьев с произвольным количеством дочерних узлов. Преимущество этой схемы в том, что для любого корневого дерева с и дочерними узлами требуется объем памяти 0(п). На рис. 10.10 проиллюстрировано представление с левым дочерним и правим сесзнримским узлами (!ей-сЬИд, пйЬ(-з(ЬИпй гергезепгайоп).

Как и ранее, в каждом узле этого представления содержится указатель р на родительский узел, а атрибут Т. гоо1 указывает на юрень дерева Т. Однако вместо указателей на каждый дочерний узел каждый узел х содержит всего два указателя: 1. х. 1еД-сбзЫ указывает на крайний слева дочерний узел узла х; 2. х. Нд61-м6йпд указывает на узел, расположенный на одном уровне с узлом х, справа от него и непосредственно рядом с ним.

Если узел х не имеет потомков, то х. 1еу(-сбзЫ = )чй., а если узел х является крайним справа дочерним узлом своего родителя, то х. тзд61-вз61зпд = )чп.. Другие представления деревьев Иноща встречаются и другие способы представления корневых деревьев. Например, в главе 6 описано представление пирамиды, основанной на полном бинарном дереве, с помощью одного массива и индекса последнего узла пирамиды.

Деревья, о которых идет речь в главе 21, обходятся только по направлению к корню, поэтому в них содержатся лишь указатели на родительские элементы; указатели на дочерние элементы отсутствуют. Здесь возможны самые различные схемы. Наилучший выбор схемы зависит от юнкрегного приложения. 2ае Часть 01 Структуры даннык Упражнения 10.4.1 Начертите бинарное дерево, корень которого имеет индекс 6, и которое представлено приведенными ниже атрибутами.

Индекс кеу 1еД пд1ь! 1 12 7 3 2 15 8 ХП 3 4 1О ХП. 4 10 5 9 5 2 ХП. ХП. б 18 1 4 7 7 ХП. Х!ь 8 14 6 2 9 21 ХП. ХП. 1О 5 ХП. ХП. 70.4.г Разработайте рекурсивную процедуру, которая за время 0(и) выводит ключи всех и узлов бинарного дерева. 10.4.3 Разработайте нерекурсивную процедуру, которая за время 0(и) выводит ключи всех и узлов бинарного дерева.

В качестве вспомогательной структуры данных используйте стек. 10.4.4 Разработайте процедуру, которая за время 0(и) выводит ключи всех и узлов произвольного корневого дерева. Дерево реализовано в представлении с левым дочерним и правым сестринским элементами.

10.45 * Разработайте нерекурсивную процедуру, которая за время 0(и) выводит ключи всех и узлов бинарного дерева. Объем дополнительной памяти (кроме той, которая отводится под само дерево) не должен превышать некоторую константу. Кроме того, в процессе выполнения процедуры дерево (даже временно) не должно модифицироваться. 10.4.б * В представлении произвольного корневого дерева с левым дочерним и правым сестринским узлами в каждом узле есть по три указателя: 1е1т-с1ьгЫ, пдМ-ег61ьид и ратеи1. Если задан какой-то узел дерева, то определить его родительский узел и получить к нему доступ можно в течение фиксированного времени. Определить же все дочерние узлы и получить к ним доступ можно в течение времени, линейно зависящего от количества дочерних узлов. Разработайте способ хранения дерева с произвольным ветвлением, в каждом узле которого используются только два (а не три) указателя и одно логическое значение, при котором ро- 2И Глоее!О.

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

10.1. Реализация объединяемых пирамид с помощью связанных списков В о6ьединпеиой пирамиде (шегйаые ))еар) поддерживаются следующие операции: МАке-Недр (создание пустой пирамиды), 1ь)еект, М(ь((м()м, ЕхткдстМ(ы)м()м и П)ч(оы). Покажите, как в каждом из перечисленных ниже случаев реализовать объединяемые пирамиды с помощью связанных списков.

Постарайтесь, чтобы каждая операция выполнялась с максимальной эффективностью. Проанализируйте время работы каждой операции по отношению к размеру обрабатываемого динамического множества. зь Списки отсортированы. 0. Списки не отсортированы. г поскольку в пирамиде полдерживыогсл операции Мгюмцм и Ехтклст-мпсгмцм,такую пирамиду можло назвать ейаейннлеией неубывающей ннркинйой (тегяаме пип-Ьеар). Аналогично, если бы в пирамиде полдсрживались операции Мах гм им и Ехткяст-махгмцм, ес ыткио было бы назвать ойьейннлемой неыпрлпиеющей пнрелтдой (пыгяаЫе пюк-Ьсар) 2В2 Часть Ш.

Структуры данньск в. Списки не отсортированы, а объединяемые динамические множества не пересекаются. 10.3. Поиск в отсортированном компактном списке В упр. 10.3.4 предлагается разработать компактную поддержку и-элементного списка в первых п позициях массива. Предполагается, что все ключи различны и что компактный список отсортирован, т.е.

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

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

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