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

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

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

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

В соответствии со случаем 2 основной теоремы (теорема 4.1) это рекуррентное соотношение имеет решение Т(и) = 6(п 1к п). При сбалансированности двух частей разбиения на каждом уровне рекурсии мы получаем асимптотически более быстрый алгоритм. Часть Рй Сортировка и порядковая статистика Сбалансированное разбиение Как станет ясно из анализа, проведенного в разделе 7.4, в асимптотическом пределе поведение алгоритма быстрой сортировки в среднем случае намного ближе к его поведению в наилучшем случае, чем к поведению в наихудшем случае. Чтобы стало ясно, почему это так, нужно понять, как баланс разбиения отражается на рекуррентном соотношении, описывающем время работы алгоритма.

Предположим, например, что разбиение всегда происходит в соотношении один к девяти, что, на первый взгляд, весьма далеко от сбалансированности. В этом случае для времени работы алгоритма быстрой сортировки мы получим рекуррентное соотношение Т(п) = Т(9п(10) + Т(п,110) + сп, в которое явным образом входит константа с, скрытая в члене ьВ(п). На рис.7.4 показано дерево рекурсии, отвечающее этому рекуррентному соотношению. Обратите внимание, что каждый уровень этого дерева имеет стоимость сп, и так до тех пор, пока не будет достигнуто граничное условие на глубине !о8ю и = св(!8 п); после этого стоимость более глубоких уровней не превышает величину сп.

Рекурсия прекращается на глубине 1обзо7а п = 9(18 п); таким образом, общая стоимость быстрой сортировки равна О!п18п), Итак, если на каждом уровне рекурсии разбиение производится в соотношении один к девяти (что интуитивно воспринимается как сильный дисбаланс), время работы алгоритма быстрой сортировки равно 0(п18п) — асимптотически такое же, как и при сбалансированном разбиении. Фактически любое разбиение, характеризующееся конечной константой пропорциональности, приводит к образованию дерева рекурсии высотой св(18 и) со стоимостью каждого уровня, равной 0(п).

Следовательно, при любой постоянной пропорции разбиения полное время работы быстрой сортировки составляет 0(п 18 п). Интуитивные рассуждения для среднего случая Чтобы получить ясное представление о рандомизированном поведении алгоритма быстрой сортировки, необходимо сделать предположение о том, как часто ожидается появление тех или иных входных данных. Поведение быстрой сортировки зависит от относительного расположения значений во входном массиве, а не от их конкретных величин.

Как и при вероятностном анализе задачи о найме в разделе 5.2, пока что предположим, что все перестановки входных чисел равновероятны. Если алгоритм быстрой сортировки работает со случайным образом выбранным входным массивом, то маловероятно, чтобы разбиение на каждом уровне происходило в одном и том же соотношении, как это было в ходе проведенного выше неформального анализа. Ожидается, что одни разбиения будут хорошо сбалансированы, в то время как другие окажутся сбалансированными плохо. Например, в упр. 7.2.6 нужно показать, что соотношение размеров подзадач на выходе процедуры РАкт!тюн примерно в 80% случаев сбалансировано лучше, чем девять к одному, и примерно в 20% случаев — хуже.

Глава Х оыстроя сортировка 705 1 !ли 9 тб и и сй 100 100 /з /з, / 1 1обз 9 п 81 !!и й в сй /~ /'з 1оя10 91 729 1000 1000 /~ /', --в < сй 1 "-"в' < сй О(и!би) Рис. 7.4. Дерево рекурсии для алгоритма Ошскзоит, в котором процедура Рлкт!тюн всегда выполняет разбиение в соотношении девять к одному, дающее время рабаты 0(и 1я и). Узлы показывают размеры подзадач; стоимости уровней показаны справа.

Стоимость уровня неявно включает константу с в члене О(и). В среднем случае процедура Рдкт1т(о!4 производит как "хорошие", так и "плохие" деления. В дереве рекурсии, соответствующем среднему случаю, хорошие и плохие разбиения равномерно распределены по всему дереву. Для упрощения интуитивных рассуждений предположим, что уровни дерева с плохими и хорошими разбиениями чередуются, и что хорошие разбиения получаются такими, как в наилучшем случае, а плохие — такими, как в наихудшем. На рис.7.5,(а) показаны разбиения на двух соседних уровнях такого дерева рекурсии. В юрие дерева стоимость разбиения равна п, а размеры полученных подмассивов равны п — 1 и О, что соответствует наихудшему случаю. На следующем уровне подмассив размером п — 1 делится оптимальным образом на подмассивы размерами (и — 1)/2 — 1 и (п — 1)/2.

Будем считать, что для подмассива размером О стоимость равна 1. Комбинация плохого и хорошего разбиений приводит к образованию трех подмассивов с размерами О, (п — 1)/2 — 1 и (п — 1)/2 и суммарной стоимостью В(п) + 9(п — 1) = тз(п). Эта ситуация, определенно, не хуже показанной на рис. 7.5, (б), на котором представлен один уровень разбиения со стоимостью Н(п), создающий два подмассива размерами (п — 1)/2. Однако в этом случае разбиение получается сбалансированным! Интуитивно понятно, что время 0(п — 1), которое требуется для плохого разбиения, поглощается временем тЭ(п), которое требуется для хорошего разбиения, а полученное в результате разбиение оказывается хорошим.

Таким образом, время работы алгоритма быстрой сортировки, при юторой иа последовательных уровнях чередуются плохие и хорошие разбиения, ведет себя так же, как время работы быстрой сортировки для одних лишь хороших разбиений. Оно также равно 0(п )я п), просто константа, скрытая в О-обозначении, Часть 11 Сортировка и оорядковав статистика 206 :,'ъ.:,.-- ------- - - ю 8(л) **- *-ч* 8(л) (б) (а) Рнс.

7.5. (а) Два уровня дерева рекурсии для быстрой сортировки. Стоимость разбиения в корне равна п и генерирует плохое разбиение, т.е. подмассивы размерами О и п — 1. Разбиение подмасснва размером п — 1 имеет стоимость и — 1 и генерирует хорошее разбиение — подмассивы размерами (и — 1)/2 — 1 и (и — 1)/2.

(б) Хорошо сбалансированный уровень дерева рекурсии. В обеих частях стоимость разбиения для задач в заштрихованнмх эллипсах составляет 9(п). Задачи, которые остается решить в случае (а), и показанные в заштрихованных прямоугольниках, оказываются не больше подзадач, которые следует решить в случае (б). в этом случае несколько больше. Строгий анализ ожидаемого времени работы рандомизированной версии быстрой сортировки содержится в разделе 7А.2. Упражнении 7.2.1 С помощью метода подстановки докажите, что решение рекуррентного соотношения Т(п) = Т(п — 1)+9(п) имеет вид Т(п) = тз(пз), как угверхщалось в начале раздела 7.2. 7.2.2 Чему равно время работы процедуры О()1СКЗОКт в случае, когда все элементы массива А одинаковы по величине? 7.2.3 Покажите, что если все элементы массива А различаются по величине и расположены в убывающем порядке, то время работы процедуры О()1СКЗОКт равно ~( 2) 7.2.4 Сведениа о банковских операциях часто записываются в хронологическом порядке, но многие предпочитают получать отчеты о состоянии своих банковских счетов в порядке нумерации чеков.

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

гог Глава Х Быстрал сортировка 7.2.5 Предположим, что в ходе быстрой сортировки на каждом уровне происходит разбиение в пропорции 1 — о к ск, где О < сл < 1/2 — константа. Покажите, что минимальная глубина, на которой расположен лист дерева рекурсии, приблизительно равна — !ко/1я о, а максимальная глубина — приблизительно — 1я и/1к(1 — ск). (Об округлении до целочисленных значений можно не беспокоиться.) 7.2.6 * Докажите, что для любой константы О < си < 1/2 вероятность того, что процедура РАнт1тюн поделит случайно выбранный входной массив в более сбалансированной пропорции, чем 1 — ск к о, приблизительно равна 1 — 2св. 7.3.

Раидомизироваииая быстрая сортировка Исследуя поведение алгоритма быстрой сортировки в среднем случае, мы делали предположение, что все перестановки входных чисел встречаются с равной вероятностью. Однако на практике это далеко не всегда так (см. упр. 7.2А). Как мы знаем из раздела 5.3, можно добавить в алгоритм рандомизацию, чтобы получить хорошую ожидаемую производительность для всех входных данных. Многие считают такую рандомизированную версию алгоритма быстрой сортировки оптимальным выбором для обработки достаточно больших массивов. В разделе 5.3 рандомизация алгоритма проводилась путем явной перестановки его входных элементов.

В алгоритме быстрой сортировки можно было бы поступить точно так же, однако анализ упростится, если применить другой метод рандомизации, получивший название случайной выборки (гапбош зипрйпй). Вместо того чтобы в качестве опорного элемента всегда использовать А[т), такой элемент будет выбираться в массиве А[р .. т) случайным образом.

Подобная модификация, при которой опорный элемент выбирается случайным образом среди элементов с индексами от р до т, обеспечивает любому из т — р+ 1 элементов подмассива равную вероятность оказаться опорным. Благодаря случайному выбору опорного элемента можно ожидать, что разбиение входного массива в среднем окажется довольно хорошо сбалансированным. Изменения, которые нужно внести в процедуры РАкт1тюн и О111скзокт, незначительны.

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

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

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