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

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

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

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

В качестве параметра этой процедуре передается ключ нового элемента, вставляемого в невозрастающую пирамиду А. Сначала процедура добавляет в пирамиду новый лист и присваивает ему ключ со значением — оо. Затем вызывается процедура НКАР1хскеАБе-Кеу, которая присваивает корректное значение ключу нового узла и помещает его в надлежащее место, чтобы не нарушалось свойство невозрастающей пирамиды. ?94 Часть ЕС Сортировка и порядковая статистика 6.5.3 Напишите псевдокоды процедур Нели-М|н1мпм, Нелр-Ехтилст-Мпч, НелгПескеАее-Кеу и М1м-Нелр-1мзеет, реализующих неубывающую очередь с приоритетами на базе неубывающей пирамиды. 6.5.4 Зачем нужна такая мера предосторожности, как присвоение ключу добавляемого в строке 2 процедуры МАх-НеАЕ-1мзее г в пирамиду узла значения — оо, если уже на следующем шаге значение этого ключа увеличивается до требуемой величины? 6.5.5 Докажите корректность процедуры НеАЕ-1мскеАее-Кеу с помощью следующего инварианта цикла, В начале каждой итерации цикла зиЫ1е в строках 4-6 А[РАкент(1)] ) А[1.еет(1)] и А[РАкент(1)] > А[Ксилит(г)], если эти узлы существуют, а подмассив А[1..

А.)ьеар-вше] удовлетворяет свойству невозрастающей пирамиды, за исключением, возможно, одного нарушения: А[1] может быть больше, чем А[РАЕЕХТ(1)]. Можно считать, что в момент вызова процедуры НеАР-1хскеАБе-Кеу подмас- сив А[1 .. А. Ьеар-вие] удовлетворяет свойству невозрастающей пирамиды. 6.5.6 Каждая операция обмена в строке 5 процедуры НЕАР-1ЯСЕЕАБЕ-КЕу обычно требует трех присваиваний.

Покажите, как воспользоваться идеей внутреннего цикла процедуры 1НЗЕКт1ОН-БОКт, чтобы вместо трех присваиваний обойтись только одним. 6.5. 7 Покажите, как с помощью очереди с приоритетами реализовать очередь "первым вошел — первым вышел". Продемонстрируйте, как с помощью очереди с приоритетами реализовать стек. (Очереди и стеки определены в разделе 10.1.) 6.5.8 Процедура НеАР-Песете(А,1) удаляет из пирамиды А узел 1. Разработайте реализацию этой процедуры, которой требуется время 0(1я и) для удаления узла из п-элементной невозрастающей пирамиды. 6.5. 9 Разработайте алгоритм, объединяющий к отсортированных списков в один список за время 0(п1я/с), где и — общее количество элементов во всех входных списках. (Указаниес для слияния списков воспользуйтесь неубывающей пирамидой.) 195 Глава д Пиаттлтьиая сортировка Задачи 6.1.

Построение лирамиды оголовками Пирамиду можно построить с помощью многократного вызова процедуры МАХ-НеАР-1!чзект для вставки элементов в пирамиду. Рассмотрим следующий вариант процедуры Вппл)-МАХ-НеАР. В0!еп-МАх-НеАР (А) ! А.Ьеар-веге = 1 2 1ог 1 = 2 Го А. 1еид16 3 МАх-НеАР-1!чхект(А, А[1)) а Всегда ли процедуры В!5!еп-МАХ-НеАР и В!леп-МАХ-НеАР' для одного и того же входного массива создают одну и ту же пирамиду? Докажите, что это так, или приведите коитрпример. й Покажите, что в наихудшем случае для создания и-элемеитиой пирамиды процедуре В!5и.п-МАХ-НеАР потребуется время б!(и 1я и).

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

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

Проанализируйте время работы этой процедуры и выразите его через л? и и. 6.3. Таблицы Юнга Таблица Юнга (Топай !аЫеап) ги х и представляет собой матрицу размером т х и, злемеиты которой в каждой строке отсортироваиы слева направо, а в каж- 19б Часть П. Сортировка и оорвдковак статистика дом столбце — сверху вниз. Некоторые элементы таблицы Юнга могут быть равны оо, что трактуется как отсутствие элемента. Таким образом, таблицу Юнга можно использовать для хранения т < тпп конечных чисел. в. Начертнте таблицу Юнга 4 х 4, в которой содержатся элементы (9, 16, 3, 2, 4, 8.

5, 14, 12). б. Докажите, что таблица Юнга У размером т х п пуста, если У[1,1] = сс. Докажите, что таблица У полностью заполнена (т.е. содержит гпп элементов), если У[т,и] с оо. в. Разработайте алгоритм, реализующий процедуру Ехтклст-Мпч для непустой таблицы Юнга т х и за время 0(т + и). В алгоритме следует использовать рекурсивную подпрограмму, которая решает задачу размером гп х и путем рекурсивного сведения к задачам (т — 1) х п или т х (и — 1).

(Указание: вспомните о процедуре МАх-НлА91ру.) Обозначим максимальное время обработки произвольной таблицы Юнга т х п с помощью процедуры ЕХТКАСт-М1Н как Т(р), где р = гп+ и. Запишите и решите рекуррентное соотношение, которое дает для Т(р) границу 0(т + п). а Покажите, как вставить новый элемент в незаполненную таблицу Юнга размером т х и за время 0(т + п). д.

Покажите, как с помощью таблицы Юнга п х п выполнить сортировку пз чисел за время 0(п ), не используя при этом никаких других подпрограмм сортировки. в. Разработайте алгоритм, позволяющий за время 0(т+ и) определить, содержится ли в таблице Юнга размером т х и заданное число. Заключительные замечания Алгоритм пирамидальной сортировки был разработан Вильямсом (%'!!!!ашз) [355], который также описал, каким образом с помощью пирамиды можно реализовать очередь с приоритетами. Процедура Вп!сп-МАх-Нцлр предложена Флойдом (Р!оуб) (105]. В главах 16, 23 и 24 неубывающие пирамиды будут использованы для реализации неубывающих очередей с приоритетами. В главе 19 будет представлена реализация с улучшенными временными границами, а в главе 20 — усовершенствованная реализация для случая, когда ключи выбираются иэ ограниченного множества неотрицательных целых чисел. Для случая, когда данные представляют собой Ь-битовые целые числа, а память компьютера состоит из адресуемых Ь-битовых слов, Фредман (Ргебшал) и Уиллард (1й!!!аго) (114] показали, как реализовать процедуру М11ч1мпм со временем работы 0(1) и процедуры 1нзект и ЕхткАст-М[ы со временем работы Глава б.

Пираиидальиаа сартиравка 797 О( Яп). Торуп (ТЬогцр) [335] улучшил границу 0(ч7Г8 и) до 0(1818п). При этом используемая память не ограничена величиной и, однако такого линейного ограничения используемой памяти можно достичь с помощью рандомизированного хеширования. Важный частный случай очередей с приоритетами имеет место, когда последовательность операций ЕхткАст-Мгм является монотонной, т.е. возвращаемые последовательными операциями ЕхткАст-МП4 значения образуют монотонно неубывающую последовательность.

Такая ситуация встречается во многих важных приложениях, например в алгоритме поиска кратчайшего пути Дейкстры (Р1]кзгга), который рассматривается в главе 24, или при моделировании дискретных событий. Для алгоритма Дейкстры особенно важна эффективность реализации операции РесккАзк-Клч. Для частного случая монотонности для целочисленных данных из диапазона 1,2,...,С Ахуйя (АЬц]а), Мельхорн (Мей(йопэ), Орлин (Ог!ш) и Таржан (Таг]ап) [8] описали, как с помощью структуры данных под названием "позиционная пирамида" (гагйх Ьеар) реализовать операции Ехтклст-Мпв и 174зцкт с амортизированным временем работы 0(18С) (более подробные сведения на эту тему можно найти в главе 17) и операцию Рксккхзк-Кеч со временем работы 0(1). Граница 0(18С) может быть улучшена до 0(ч7187,') путем совместного использования пирамид Фибоначчи (см.

главу 19) и позиционных пирамид. Дальнейшее улучшение этой границы до 0(18'7з+в С) было осуществлено Черкасски (СЬегказзку), Гольдбергом (Оо)ОЬегй) и Сильверстайном (%1чегзгеш) [64], которые обьединили многоуровневую груплирующую структуру (пш!й-1ече! Ьцс1се6пй з1гцсшге) Денардо (Репагбо) и Фокса (Рох) [84] с уже упоминавшейся пирамидой Торупа. Раману (йашап) [289] удалось еще больше улучшить эти результаты и получить границу, которая равна 0(ппп(18'74+' С, 18'7з+' и)) для произвольной фиксированной величины 4 > О.

Глава 7. Быстрая сортировка Алгоритм быстрой сортировки имеет в наихудшем случае для входного массива из и элементов время работы, равное 9(пз). Несмотря на такую медленную работу в наихудшем случае, этот алгоритм на практике зачастую оказывается оптимальным благодаря тому, что в среднем время его работы намного лучше: 6(п 1к и).

Кроме того, постоянный множитель, скрытый в выражении 6(п 1к и), достаточно мал по величине. Алгоритм обладает также тем преимуществом, что сортировка в нем выполняется на месте, без использования дополнительной памяти (см. с. 39), поэтому он хорошо работает даже в средах с виртуальной памятью. В разделе 7.1 описаны сам алгоритм и важная подпрограмма, использующаяся в нем для разбиения массива. Поскольку поведение алгоритма быстрой сортировки достаточно сложное, мы начнем с нестрогого„интуитивного обсуждения производительности этого алгоритма в разделе 7.2, а строгий анализ отложим до конца данной главы.

В разделе 7,3 представлена версия быстрой сортировки, в которой используется случайная выборка. У этого алгоритма хорошее ожидаемое время работы, при этом никакие конкретные входные данные не могут ухудшить его производительность до уровня наихудшего случая. Этот рандомизнрованный алгоритм анализируется в разделе 7А, где показано, что время его работы в наихудшем случае равно Э(пз), а среднее время работы в предположении, что все элементы различны, составляет 0(п!ли). 7.1. Описание быстрой сортировки Быстрая сортировка, подобно сортировке слиянием, применяет парадигму "разделяй и властвуй", представленную в разделе 2.3.1.

Ниже описан процесс сортировки подмассива А[р .. г), состоящий, как и все алгоритмы с использованием декомпозиции, из трех этапов. Разделение. Массив А[р .. г[ разбивается на два (возможно, пустых) подмассива А [р .. о — Ц и А [д+ 1 .. г1 таких, что каждый элемент А [р .. о — Ц меньше или равен А[з], который, в свою очередь, не превышает любой элемент подмассива А[д + 1 .. г[, Индекс д вычисляется в ходе процедуры разбиения. 799 Глава 7.

Быслираи сортировка Властвование. Подмассивы А[р .. ц — 1] и А[4 + 1 .. т[ сортируются с помощью рекурсивного вызова процедуры быстрой сортировки. Комбинирование. Поскольку подмассивы соргируются на месте, для их объединения не требуются никакие действия: весь массив А[р..т] оказывается отсортированным. Быстрая сортировка реализуется следующей процедурой, Япскзокт(А, р, т) ! !Гр<т 2 д = Рлкт!тюм(А,р,т) 3 Оо!скзокт(А, р, о — 1) 4 ОГ71СКЗОКт(А,д+ 1,т) Для сортировки всего массива А начальный вызов процедуры должен иметь вид Орлскзокт(А, 1, А.

!еп9Ф). Разбиение массива Ключевой частью рассматриваемого алгоритма сортировки является процедура РЛКт1т!О1Ч, изменяющая порядок элементов подмассива А[р .. т] без привлечения дополнительной памяти. Рлкт1т!он(А Р т) 1 х=А[т] 2 !кр — 1 3 !ог 7' = р Го т — 1 4 !г" А[7] < х 5 1=!+1 6 Обменять А[!] и А[7'] 7 Обменять А[1+ 1] и А[т! 8 гегнгв 1+ 1 На рис. 7. ! показано, как процедура Рлкт1тю!ч работает с 8-элементным массивом.

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

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

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