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

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

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

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

В темно-серых ячейках массива А содержатся значения, которые будут заменены другими, а в темно-серых ячейках массивов Ь и Л— значения, уже скопированные обратно в массив А. В частях рисунка а — з показано состояние массивов А, Ь и Л, а также соответствующие индексы lс, з и 7' перед каждой итерацией цикла в строках !2-17. В части и показано состояние массивов и индексов по завершении работы алгоритма.

На данном этапе подмассив А [9..16] отсортировал, а два сигнальных значения в массивах Ь и Л вЂ” единственные элементы, оставшиеся в этих массивах и не скопированные в массив А. В строках 10-17, проиллюстрированных на рис. 2.3, выполняется г — р+ 1 основных шагов. в ходе каждого из которых производятся манипуляции с инвариантом цикла, описанным ниже. Глава 2. Приступаем к изучению 75 Л фф~~ф~4$~~,'~!»4~~$ ~~и[[ 2 3 4 5 !» 2 4 5 я! л ЯЩ.'» !» '„. ! яЯ 2 ! 334 !-1 3 фЯ Я 6»~:1 ! 2 3 4 5 2 3 4 5 ., ЯЯ< [7 Я Я ~~~~Я 4 -] !,Т"! Рис. 2.3.

Операции, выполняемые в строках 10 — 17 процедуры Маков(А, 9, 12, 16), когда в подмасснве А [9..16] содержится последовательность (2,4,5,7,1,2,3,6) Перед каждой итерацией цикла 1ог в строках 12-17, подмассив А [р..24 — Ц содержит 24 — р наименьших элементов массивов Е [1. л2 + 1] и В [1..пэ + 1] в отсортированном порядке. Кроме того, элементы Ь [4] и В [4] являются наименьшими элементами массивов Ь и Я, которые еще не скопированы в массив А. 8 а !О »! !2 »3 Д !5 !Ь !! 4 [Я"' 2 3 4 5 ! 2 3 4 2 3 4 ! 2 3 4 1 ' 7[ 3» Я " ''. !»] 1 ! 1 к! 4 И !! !2 !3 !4 !5 !Ь 2 3 4 5 ! 2 3 4 я Щь~~ф~'] л! ! , ')5!$$2,"..,: !»! »! Д !, П;» !4 6»Ь !! 4 ! ![2!2 »' 2, 4 5 !» 3 ! ~ф4 ! 5 Л !! !! !2 !3 »4 !.ЯЩ5 ! ~ ~ »2 8 9 !33 !3! !2 !3 !4 15 !4 !1 !,2! !» 4 3 4 5 ! 2 3 4 а" 2 ["-! я,; ЯЯ:3 76 Часть Е Основы Необходимо показать, что этот инвариант цикла соблюдается перед первой итерацией рассматриваемого цикла 1ог, что каждая итерация цикла не нарушает его, и что с его помощью удается продемонстрировать корректность алгоритма, когда цикл заканчивает свою работу.

Инициализация. Перед первой итерацией цикла 1с = р, поэтому подмассив А [р..1с — 1] пуст. Он содержит 1с — р = О наименьших элементов массивов Ь и Л. Поскольку г = 7' = 1, элементы Т, [1] н В[7] — наименьшие элементы массивов Т, и В, не скопированные обратно в массив А. Сохранение. Чтобы убедиться, что инвариант цикла сохраняется после каждой итерации„сначала предположим, что Ь [1] ( тс [у]. Тогда Ь [з] — наименьший элемент, не скопированный в массив А. Поскольку в подмассиве А [р..1с — 1] содержится й-р наименьших элементов, после выполнения строки 14, в которой значение элемента Т, [з] присваивается элементу А [1с], в подмассиве А [р..1с] будет содержаться 1с — р+ 1 наименьший элемент. В результате увеличения параметра 1с цикла 1ог и значения переменной з (строка 15), инвариант цикла восстанавливается перед следующей итерацией.

Если же выполняется неравенство Ь [з] > А [7], то в строках 16 и 17 выполняются соответствующие действия, в ходе которых также сохраняется инвариант цикла. Завершение. Алгоритм завершается, когда й = т + 1. В соответствии с инвариантом цикла, подмассив А [р..й — 1] (т.е. подмассив А [р..т]) содержит й— — р = т — р+ 1 наименьших элементов массивов Ь [1..п1 + 1] и В [1..пз + 1] в отсортированном порядке. Суммарное количество элементов в массивах Т н В равно пт + пз + 2 = т — р+ 3. Все они, кроме двух самых больших, скопированы обратно в массив А, а два оставшихся элемента являются сигнальными.

Чтобы показать, что время работы процедуры Мексзе равно 9 (и), где п = т— — р+ 1, заметим, что каждая нз строк 1 — 3 и 8 — 11 выполняется в течение фиксированного времени; длительность циклов 1ог в строках 4 — 7 равна О (пз + пз) = = 9 (п),т а в цикле 1ог в строках 12 — 17 выполняется и итераций, на каждую из которых затрачивается фиксированное время. Теперь процедуру МЕКОЕ можно использовать в качестве подпрограммы в алгоритме сортировки слиянием.

процедура мекое Болт(А, р, т) выполняет сортировку элементов в подмассиве А [р..т]. Если справедливо неравенство р > т, то в этом подмассиве содержится не более одного элемента, и, таким образом, он отсортировал. В противном случае производится разбиение, в ходе которого В главе 3 будет показано, как формально интерпретируются уравнения с Э-обозначениями. Глава 2. Приступаем к изучению 77 Отсортированная последовательность )! 2 2 3 ' Е: 5- 6 2 3 ь .

/~.'лкьпвс"'Ь Исходная последовательность Рнс. 2.4. Процесс сортировки массива А = (5,2,4,7,1,3,2,6) методом сли- яния. Длины подлежащих объединению отсортированных подпоследователь- ностей возрастают по мере работы алгоритма вычисляется индекс д, разделяющий массив А [р..г] на два подмассива: А [р..д] с [и/2] элементами и А [д.ж] с [и/23 элементамиа. Чтобы отсортировать последовательность А = (А [1], А [2],..., А [тз]), вызывается процедура Мексе Зонт(А,1, 1епдгд [А]), где 1епдгй [А] = и. На рис. 2.4 проиллюстрирована работа этой процедуры в восходящем направлении, если п — это степень двойки.

В ходе работы алгоритма происходит попарное объединение одноэлементных последовательностей в отсортированные последовательности длины 2, затем — попарное обьединение двухэлементных последовательностей в отсортированные последовательности длины 4 и т.д., пока не будут "Выражение (х) обозначает наименьшее целое число, которое больше или равно х, а выражение [х) — наибольшее целое число, которое меньше или равно х. Эти обозначения вводятся в главе 3.

Чтобы убелиться в том, что в результате присваивания переменной о значения ((р+ г)/2) длины подмассивов А (р..о) и А [О + 1.х) получаются равными (и/2) и [и/2), достаточно проверить четыре возможных случая, в которых каждое из чисел р и г либо четное, либо нечетное. [л 7 /Слклнпе Ъ МЕКОЕ БОКТ(А, р, г) 1 11р(т 2 Феп д — [(р+ т)/2) 3 Мекке Яокт(А,р,д) Мексе Бокт(А, д + 1, т) 5 МЕКСЕ(А, р, д, г) Г:~чи ам /лХ /у 1 Часть 1. Основы 78 получены две последовательности, состоящие из и/2 элементов, которые объеди- няются в конечную отсортированную последовательность длины и.

2.3.2 Анализ алгоритмов, основанных на принципе "разделяй и властвуй" Если алгоритм рекурсивно обращается к самому себе, время его работы часто описывается с помощью рекуррентного уравнения, или рекуррентного соотношения, в котором полное время, требуемое для решения всей задачи с объемом ввода и, выражается через время решения вспомогательных подзадач. Затем данное рекуррентное уравнение решается с помощью определенных математических методов, и устанавливаются границы производительности алгоритма.

Получение рекуррентного соотношения для времени работы алгоритма, основанного на принципе "разделяй и властвуй", базируется на трех этапах, соответствующих парадигме этого принципа. Обозначим через Т (и) время решения задачи, размер которой равен и. Если размер задачи достаточно мал, скажем, и < с, где с — некоторая заранее известная константа, то задача решается непосредственно в течение определенного фиксированного времени, которое мы обозначим через О (1). Предположим, что наша задача делится на а подзадач, объем каждой из которых равен 1/Ь от объема исходной задачи.

(В алгоритме сортировки методом слияния числа а и Ь были равны 2„ однако нам предстоит ознакомиться со многими алгоритмами разбиения, в которых а ~ Ь.) Если разбиение задачи на вспомогательные подзадачи происходит в течение времени Р (и), а объединение решений подзадач в решение исходной задачи — в течение времени С (и), то мы получим такое рекуррентное соотношение: 6 (1) прн и < с, Т(и) = аТ (и/Ь) + Р (и) + С (и) в противном случае.

В главе 4 будет показано, как решаются рекуррентные соотношения такого вида. Анализ алгоритма сортировки слиянием Псевдокод Мнкон Бокт корректно работает для произвольного (в том числе и нечетного) количества сортируемых элементов. Однако если количество элементов в исходной задаче равно степени двойки, то анализ рекуррентного уравнения упрощается. В этом случае на каждом шаге деления будут получены две подпоследовательности, размер которых точно равен и/2. В главе 4 будет показано, что это предположение не влияет на порядок роста, полученный в результате решения рекуррентного уравнения.

Чтобы получить рекуррентное уравнение для верхней оценки времени работы Т (и) алгоритма, выполняющего сортировку и чисел методом слияния, будем Глава 2. Приступаем к изучению 79 рассуждать следующим образом. Сортировка одного элемента методом слияния длится в течение фиксированного времени. Если и > 1, время работы распреде- ляется таким образом. Разбиение.

В ходе разбиения определяется, где находится средина подмассива. Эта операция длится фиксированное время, поэтому Р (п) = 0 (1). Покорение. Рекурсивно решаются две подзадачи, объем каждой из которых составляет гз/2. Время решения этих подзадач равно 2Т (гз/2). Комбинирование.

Как уже упоминалось, процедура Мбкгзб в п-элементном подмассиве выполняется в течение времени 9 (гт), поэтому С (и) = с1 (и). Сложив функции Р (гг) и С (и), получим сумму величин О (и) и О (1), которая является линейной функцией от и, те. 0 (и). Прибавляя к этой величине слагаемое 2Т (гг/2), соответствующее этапу "покорения*'„получим рекуррентное соотношение для времени работы Т (гь) алгоритма сортировки по методу слияния в наихудшем случае: 0 (1) при гь = 1, 2Т(гг/2) + 0(гг) при гг > 1. (2.1) В главе 4 мы ознакомимся с теоремой, с помощью которой можно показать, что величина Т (гг) представляет собой 6 (гз 1я и), где 1к п обозначает 1кз и.

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

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

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