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

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

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

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

Управляющие операции, перемещение данных и все другие аспекты алгоритма игнорируются. На рис. ЗЛ показано дерево решений, которое соответствует представленному в разделе 2.1 алгоритму сортировки вставкой, обрабатывающему входную последовательность нз трех элементов. В дереве решений каждый внутренний узел помечен двухиндексной меткой т: т, где индексы т и т принадлежат интервалу 1 < з, т' < п, а и представляет собой количество элементов входной последовательности. Каждый лист также помечен — перестановкой (зг(1), зг(2),..., зг(п)). (Детальный материал по перестановкам содержится в разделе В.1.) Выполнение алгоритма сортировки соответствует прохождению пути от корня дерева до одного нз его листьев. Каждый внутренний узел соответствует выполнению сравнения а; < а .. Левое поддерево после этого сравнения определяет последующие сравнения после того, как мы выяснили, что а; < аз, а правое — в случае а; > а.. Дойдя до какпгонибудь из листьев, алгоритм сортировки устанавливает соответствующее этому листу упорядочение элементов а (и < а (2) « а„(„).

Поскольку каждый корректный алгоритм сортировки должен быть способен произвести любую пе- Часть 11 Сортировка и порядковая статистика 222 рестановку входных элементов, необходимое условие корректности сортировки сравнением заключается в том, что в листьях дерева решений должны размещаться все и! перестановок и элементов и что из корня дерева к каждому его листу можно проложить путь, соответствующий одному из реальных вариантов работы сортировки сравнением. (Назовем такие листы достижимыми.) Таким образом, мы будем рассматривать только такие деревья решений, в которых каждая из перестановок представлена в виде достижимого листа.

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

Эту оценку дает приведенная ниже теорема. Теорема 8.1 Любой алгоритм сортировки сравнением в наихудшем случае требует выполнения Й(и 18 и) сравнений. Доказательство. Из приведенных выше рассуждений понятно, что для доказательства теоремы достаточно определить высоту дерева, в котором каждая перестановка представлена достижимым листом. Рассмотрим дерево решений высотой !т с 1 достижимыми листьями, которое соответствует сортировке сравнением и элементов.

Поскольку каждая из и'. перестановок входных элементов сопоставляется с одним из листьев, и! < 1. Так как бинарное дерево высотой 6 имеет не более 2" листьев, имеем и~ < 1 < 2л откуда после логарифмирования следует Ь > 18(и!) (поскольку 18 — строго возрастающая функция) = Й(и 18 и) (согласно уравнению (3.19)) . Следствие 8.2 Пирамидальная сортировка и сортировка слиянием являются асимптотически оп- тимальными сортировками сравнением.

Доказательство. Верхние границы 0(и 18 и) времени работы пирамидальной сортировки и сортировки слиянием совпадают с нижней границей Й(и !к и) для наихудшего случая из теоремы 8.1. ггз Глава 8. Сортировка эа яииейиое врвив Упражнения 8.1.1 Чему равна наименьшая возможная глубина, на которой находится лист дерева решений сортировки сравнением? 8.1.2 Получите асимптотически точные границы для величины 18(п!), не используя приближение Стирлинга. Вместо этого воспользуйтесь для оценки суммы 2.", 1я й методами из раздела А.2. 8.1.3 Покажите, что не существует алгоритмов сортировки сравнением, время работы которых линейно по крайней мере для половины из и! вариантов входных данных длиной и.

Что можно сказать по поводу 1/и-й части всех вариантов входных данных длиной и? По повсду 1/2"-й части? 8.1.4 Предположим, что у вас имеется последовательность, состоящая из и элементов. Входная последовательность состоит из и/и подпоследовательностей, в каждой из которых )с элементов. Все элементы данной подпоследовательности меньше элементов следующей подпоследовательности и больше элементов предыдущей подпоследовательности.

Таким образом, для сортировки всей и-элементной последовательности достаточно отсортировать !е элементов в каждой из и/й подпоследовательностей. Покажите, что нижняя граница количества сравнений, необходимых для решения этой разновидности задачи сортировки, равна Й(п!йй). (Указаниеэ просто скомбинировать нижние границы для отдельных подпоследовательностей недостаточно.) 8.2. Сортировка подсчетом В сортировке подсчетам (совлбпй аоП) предполагается, что каждый из и входных элементов — целое число, принадлежащее интервалу от 0 до к, где ив некоторая целая константа. Если и = 0(п), то время работы алгоритма сортировки подсчетом равно 9(п). Основная идея сортировки подсчетом заключается в том, чтобы для каждого входного элемента х определить количество элементов, которые меньше к.

С помощью этой информации элемент х можно разместить в той позиции выходного массива, где он должен находиться. Например, если всего имеется 17 элементов, которые меньше х, то в выходной последовательности элемент к должен занимать 18-ю позицию. Если возможна ситуация, когда несколько элементов имеют одно и то же значение, зту схему нужно слегка модифицировать, поскольку все такие элементы не могут размещаться в одной и той же позиции. Часть Рл Сортировка и иоридкотт статистика 224 В коде сортировки подсчетом предполагается, что входные данные представляют собой массив А(1.. и], и, таким образом, А.1епд!Ь = п.

Требуются также два дополнительных массива: массив В[1 .. и( хранит отсортированные выходные данные, а массив С[0 .. Гс] предоставляет временное рабочее пространство. Сопнтпяп-Яокт(А, В, !с) ! Пусть С(0., й] — новый массив 2 !ог г' = 0 то lс 3 С[1]=0 4 !ог !' = 1 Го А.!епдй 5 С[А[2]] = С[А[7]] + 1 6 // Сейчас С[1] содержит количество элементов, равных 1. 7 Гог1 = 1 Го й 8 С[!] = С[1]+С[1 — 1] 9 // Сейчас С[1] содержит количество элементов, не превышающих г.

!О Гог 2 = А.1епд!!в с)оивпго 1 11 В[С[А[2]]] = А[2] !2 С(А(2]] = С(А[Д вЂ” 1 Работа алгоритма сортировки подсчетом проиллюстрирована на рис.8.2. После того как в цикле Гог в строках 2 и 3 массив С инициализирован нулевыми значениями, цикл !ог в строках 4 и 5 просматривает каждый входной элемент. Если значение входного элемента равно в, мы увеличиваем С(1]. Таким образом, после строки 5 элемент С(1] содержит количество входных элементов, равных г, для каждого целого значения 1 = 0,1,..., !с. В строках 7 и 8 для каясдого ! = О, 1,..., Г путем суммирования элементов массива С определяется, сколько входных элементов не превышают Г, Наконец в цикле Гог в строках 10 — 12 каждый элемент А[2] помещается в надлежашую позицию выходного массива В.

Если все и элементов различны, то при первом переходе к строке 10 для каждого элемента А(2] в переменной С(А[Д хранится корректный индекс конечного положения этого элемента в выходном массиве, поскольку имеется С[А[2]] элементов, меньших или равных А(2]. Поскольку разные элементы могут иметь одни и те же значения, помещая значение А[2] в массив В, мы каждый раз уменьшаем С[А(Д на единицу.

Благодаря этому следующий входной элемент, значение которого равно А(2] !если таковой имеется), в выходном массиве размещается непосредственно перед элементом А(2]. Сколько времени требуется для сортировки методом подсчета? Цикл !ог в строках 2 и 3 выполняется за время кэ(!с), цикл Гог в строках 4 и 5 выполняется за время Г3[п), цикл Гог в строках 7 и 8 выполняется за время В(!с) и цикл Гог в строках 10 — ! 2 выполняется за время В(п).

Таким образом, общее время составляет 6(!с+ п). На практике обычно сортировка подсчетом применяется, когда !с = 0(п), и в этом случае общее время работы равно 9(п). Сортировка подсчетом превосходит нижнюю границу П(п!8п), доказанную в разделе 8. 1, поскольку не является сортировкой сравнением. Фактически нигде в коде не производится сравнение входных элементов. Вместо этого непосред- Глана В. Сортировка за лиивйкон время 225 ! 2 3 4 5 б 7 В ! 2 3 4 5 6 7 В А [72'..32 ( 3 [ (3„',2!Л:~В ~:,:~! О ! 2 3 4 5 С [2"[':э !'8 [:7)[;.уз[':78~~ О ! 2 3 4 5 с '.

[О!."-".:Зе[[бе'~ ), О ! 2 3 4 5 с (2'['2.')-л '['б'[""; 8! (е) (в) (6) ! 2 3 4 5 6 7 В 1 2 3 4 5 6 7 В 1 2 3 4 5 6 7 В в ~С ["Е([."О ';2 х.'.З'.~~'-".3 ', О 1 2 3 4 5 с ) ! ! 71418 ! 7! $',' О ! 2 3 4 5 с [(г71'4 ['л' 55,), 57~~ (г) (е) (л) Рис. 8.2. Работа алгоритма Сон нтгно-йоит с входным массивом А[1 .. 8], гдс кая!дый элемент А прсдставляст собой нсотрицатсльнос целое число, нс прсвыааюлхсс Ь = б. (а) Массив А и вспомогатсльный массив С после строки 5. (8) Массив С после строки 8.

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

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

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