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

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

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

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

Сортировка и порядковая статистика Время работы процедуры Нвлг Ехтклст Млх равно О (1би), поскольку перед запуском процедуры Млх Нвлшгт, выполняющейся в течение времени О(1йи), в ней выполняется лишь определенная постоянная подготовительная работа. Процедура Нелг !мскелзв Кеу реализует операцию 1хскелзе Кву. Элемент очереди с приоритетами, ключ которого подлежит увеличению, идентифицируется в массиве с помощью индекса 1.

Сначала процедура обновляет ключ элемента А (1]. Поскольку это может нарушить свойство невозрастающих пирамид, после этого процедура проходит путь от измененного узла к корню в поисках надлежащего места для нового ключа. Эта операция напоминает реализованную в цикле процедуры 1мз витюша Яокт (строки 5-7) из раздела 2.1. В процессе прохода выполняется сравнение текущего элемента с родительским. Если оказывается, что ключ текущего элемента превышает значение ключа родительского элемента, то происходит обмен ключами элементов и процедура продолжает свою работу на более высоком уровне. В противном случае процедура прекращает работу, поскольку ей удалось восстановить свойство невозрастающих пирамид.

(Точная формулировка инварианта цикла этого алгоритма приведена в упражнении 6.5-5.) Нелг 1мсквлзв Кву(А,1, йеу) 1 11 1:еу < А[1] 2 гпеп еггог "Новый ключ меньше текущего" 3 А [1] — 1:еу згп1!е 1 > 1 и А(Рлкечт(1)] < А[1] сто Обменять А[1] А[рлкнчт(1)] 6 1 — Рлкечт(1) На рис. 6.5 приведен пример работы процедуры Нелг 1мснвлзд Кеу. В части а этого рисунка изображена невозрастающая пирамида, в которой будет увеличен ключ узла, выделенного темно-серым цветом (кроме выделения цветом, возле этого узла указан индекс 1). В части б рисунка показана эта же пирамида после того, как ключ выделенного узла был увеличен до 15. В части в обрабатываемая пирамида изображена после первой итерации цикла зчЫ1е (строки 4 — 6).

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

Это объясняется тем, что длина пути от обновляемого в строке 3 элемента до корня равна О (1к и). Процедура Млх Нплг 1мзвпт реализует операцию 1мзект. В качестве параметра этой процедуре передается ключ нового элемента. Сначала процедура добавляет в пирамиду новый лист и присваивает ему ключ со значением — оо. Затем вызывается процедура Нелг 1мскелзе Кву, которая присваивает корректное зна- Глава 6. Пирамидальная сортировка 193 гч ) у з ) / гг Рис. 6.5. Работа процедуры Нелв 1нскелзе Кет чение ключу и помещает его в надлежащее место, чтобы не нарушалось свойство невозрастающих пирамид: Млх НелР 1нзект(А, Йеу) 1 Беар згае[А[ — Беар згае[А[+ 1 2 А[йеар змее[А]) г — — оо 3 НЕЛР 1МСНЕЛБЕ КЕу(А,Беар згзе[А],йеу) Время вставки в гг-элементную пирамиду с помощью процедуры Млх Неле 1нзент составляет О (16 и).

Подводя итог, заметим, что в пирамиде время выполнения всех операций по обслуживанию очереди с приоритетами равно О (16 и). УПРажНЕНИЯ 6.5-1. Проиллюстрируйте работу процедуры Нелв Ехтнлст Млх с пирамидой А = (15, 13, 9, 5, 12, 8, 7, 4, О, 6, 2, 1). 6.5-2. Проиллюстрируйте работу процедуры Млх Нелв 1мзект(А., 10) с пирамидой А = (15,13,9,5,12,8,7,4,0,6,2,1). Воспользуйтесь в качестве модели рисунком 6.5. Часть й. Сортировка и порядковая статистика 194 6.5-3. Напишите псевдокод процедур НелР М|ьлмим, Нелл Ехтклст Мщ Нелв Пескелзе Кеу и Мпч НелР 1нзект, реализующих на базе неубывающей пирамиды неубывающую очередь с приоритетами.

6.5-4. Зачем нужна такая мера предосторожности, как присвоение ключу добавляемого в пирамиду узла в строке 2 процедуры Млх НелР 1хзект значения — оо, если уже при следующем шаге значение этого ключа увеличивается до требуемой величины? 6.5-5. Обоснуйте корректность процедуры Нелл 1~чскелзе Кеу с помощью следующего инварианта цикла. Перед каждой итерацией цикла ттЫ1е в строках 4-6, массив А [1.. Ьеар атяе [А]] удовлетворяет свойству невозрастающих пирамид, за исключением одного возможного нарушения— элемент А [1] может быть больше элемента А [РатеттФ (1)]. 6.5-6.

Покажите, как с помощью очереди с приоритетами реализовать очередь "первым вошел — первым вышел". Продемонстрируйте, как с помощью очереди с приоритетами реализовать стек. (Очереди и стеки определены в разделе 10.1.) 6.5-7. Процедура НелР Редеете(А, 1) удаляет из пирамиды А узел г. Разработайте реализацию этой процедуры, которой требуется время О (1к и) для удаления узла из и-элементной невозрастающей пирамиды. 6.5-В.

Разработайте алгоритм„объединяющий )с отсортированных списков в один список за время О (и 1я 1с), где и — общее количество элементов ао всех входных списках. (Указание: для слияния списков воспользуйтесь неубывающей пирамидой.) Задачи 6-1. Создание пирамиды с помощью вставок Описанную в разделе 6.3 процедуру Втал Млх НелР можно реализовать путем многократного использования процедуры Млх НелР 1нзект для вставки элементов в пирамиду. Рассмотрим следующую реализацию: Вцпл Млх НелР'(А) 1 Ьеар атее[А] — 1 2 Гог г' — 2 1о 1еидй[А] 3 бо Млх НелР 1мзект(А, А[1]) а) Всегда ли процедуры Випп Млх НелР и ВБ!сп Млх НелР/ для одного и того же входного массива создают одинаковые пирамиды? Докажите, что это так, или приведите контрпример. Глава 6.

Пирамидальная сортировка б) Покажите, что в наихудшем случае для создания и-элементной пи- рамиды процедуре Вий.п Млх Нвлкг требуется время 9 (п1яп). 6-2. Анализ пирамид, отличных от бинарных Ы-арные пирамиды (6-агу Беар) похожи на бинарные, с тем исключением, что узлы, отличные от листьев, имеют не по 2, а по д дочерних элементов. а) Как бы вы представили а-арную пирамиду в виде массива? б) Как выражается высота Н-арной и-элементной пирамиды через п и д? в) Разработайте эффективную реализацию процедуры Ехтклст Млх, предназначенную для работы с Н-арной невозрастающей пирамидой.

Проанализируйте время работы этой процедуры и выразите его в терминах и' и и. г) Разработайте эффективную реализацию процедуры 1нзвкт, предназначенную для работы с Н-арной невозрастающей пирамидой. Проанализируйте время работы этой процедуры и выразите его в терминах 6 и п. д) Разработайте эффективную реализацию процедуры 1мскнлзн Кну(А,(, й), в которой сначала выполняется присвоение А [1] +- +- шах(А [1], 1с), а затем — обновление а-арной невозрастающей пирамиды.

Проанализируйте время работы этой процедуры и выразите его в терминах и' и и. 6-3. Таблицы Юнга Таблица Юнга (г'оипб 1аЫеап) т х п — это матрица т х п, элементы которой в каждой строке отсортированы слева направо, а в каждом столбце — сверху вниз. Некоторые элементы таблицы Юнга могут быть равны оо, что трактуется как отсутствие элемента. Таким образом, в таблице Юнга можно разместить т < тп конечных чисел. а) Начертите таблицу Юнга 4 х 4, содержащую элементы (9, 16, 3, 2, 4, 8, 5, 14, 12). б) Докажите, что таблица Юнга У размером т х п пустая, если У [1, 1] = со. Докажите, что таблица У полностью заполнена (т.е.

она содержит тп элементов), если У [т, и] < со. в) Разработайте алгоритм, реализующий процедуру Ехтклст Мпч для непустой таблицы Юнга т х п за время 0(т+ и). В алгоритме следует использовать рекурсивную подпрограмму, которая решает задачу размером т х п путем рекурсивного сведения к задачам (т — 1) х п или т х (и — 1). (Указание: вспомните о процедуре 196 Часть П. Сортировка и порядковая статистика Млх Нихшгу.) Обозначим максимальное время обработки произвольной таблицы Юнга т х и с помощью процедуры Ехтклст Мп~ как Т (р), где р = т + и.

Запишите и решите рекуррентное соотношение, которое дает границу для Т(р), равную О (т+ и). г) Покажите, как вставить новый элемент в незаполненную таблицу Юнга размером т х п за время О (т + и). д) Покажите, как с помощью таблицы Юнга и х п выполнить сортировку пз чисел за время О [пз), не используя при этом никаких других подпрограмм сортировки.

е) Разработайте алгоритм, позволяющий за время О [т + п) определить, содержится ли в таблице Юнга размером т х п заданное число. Заключительные замечания Алгоритм пирамидальной сортировки был предложен Вильямсом (МП1ашз) [316], который также описал, каким образом с помощью пирамиды можно реализовать очередь с приоритетами. Процедура Впьо Млх Нклк разработана Флойдом (Р[оуб) [90].

В главах 16, 23 и 24 будут реализованы очереди с приоритетами с помощью неубывающих пирамид. В главах 19 и 20 вы познакомитесь с реализацией некоторых операций с улучшенными временными характеристиками. Для целочисленных данных можно реализовать очереди с приоритетами, работающие быстрее, чем те, в которых не делаются предварительные предположения о типе данных. В структуре данных, предложенной Боасом (чап ЕпЫе Воаз) [301], поддерживаются операции Мммим, Млх|мим, 1мзвкт, 13н.итв, Бвлксн, Ехтклст Мпч, Ехтклст Млх, Ркеэесиззок и Яиссиззск.

При условии, что ключи выбираются из множества [1, 2,..., С), время работы этих операций в наихудшем случае оценивается как О (1к 1кС). Фредман (Ргейпап) и Виллард (М!1ап1) [99] показали, как реализовать операцию Мммим со временем работы О(1) и операции 1ювкт и Ехтклст Мпч со временем работы О [~([б п), если данные представляют собой 6-битовые целые числа, а память компьютера состоит из адресуемых 6-битовых слов.

В работе Торупа (ТЬогыр) [299] граница О [~Лд и) была улучшена до О (1к 1к п). При этом используемая память не ограничена величиной п, однако такого линейного ограничения используемой памяти можно достичь с помощью рандомизированного хеширования. Важный частный случай очередей с приоритетами имеет место, когда последовательность операций Ехтклст Мпч является монотонной, т.е. возвращаемые этой операцией последовательные значения образуют монотонную возрастающую Глава б.

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

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

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