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

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

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

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

Таким образом, количество процессов, входящее в состав решения задачи 5;з,— это сумма количества процессов в решении задачи 5;ьн количества процессов в решении задачи Яя и еще одного процесса (аь). Опишем оптимальную подструктуру этой задачи. Предположим, что оптимальное решение А, задачи Яг включает в себя процесс аь. Тогда решения Агя задачи Ягь и Аьу задачи Яь в рамках оптимального решения Я, тоже должны быть оптимальными. Как обычно, это доказывается с помощью рассуждений типа "вырезания и вставки".

Если бы сушествовало решение А,', задачи Яд,, включающее в себя большее количество процессов, чем Апо в решение Ац можно было бы вместо Аьь подставить А',.ь, что привело бы к решению задачи Я,т, в котором содержится больше процессов, чем в А; . Поскольку предполагается, что А, оптимальное решение, мы приходим к противоречию. Аналогично, если бы сушествовало решение Аь задачи Яц, содержащее больше процессов, чем Аь, то путем замены Аь на А', можно было бы получить решение задачи Я;зч в которое входит больше процессов, чем в А, .

Теперь с помошью сформулированной выше оптимальной подструктуры покажем, что оптимальное решение задачи можно составить из оптимальных решений подзадач. Мы уже знаем, что в любое решение непустой задачи Я, входит некоторый процесс аь и что любое оптимальное решение задачи содержит в себе 'Иногда о множествах Ян мы будем говорить не как о множествах пронсссов. а как о вспомогательных задачах. Из контекста всегда будет понятно, что именно обозначает оч — множество пропессов иди вспомогательную задачу, входными данными для которой яавястся зто множество.

Часть!У. Усовершенствованные методы разработки и анализа 446 оптимальные решения подзадач Я,ь и Яя . Таким образом, максимальное подмножество взаимно совместимых процессов множества Я; можно составить путем разбиения задачи на две подзадачи (определение подмножеств максимального рвзмеРа, состоЯщих из взаимно совместимых пРоцессов в задачах Я;ь и Яьз) — собственно нахождения максимальных подмножеств Агь и Аь взаимно совместимых процессов, являющихся решениями этих подзадач, и составления подмножества А; максимального размера, включающего в себя взаимно совместимые задачи: А; =Агя0(аь)ОАь. (16.2) Оптимальное решение всей задачи представляет собой решение задачи Яо „+и Рекурсивное решение Второй этап разработки решения по методу динамического программирования — определение значения, соответствующего оптимальному решению.

Пусть в задаче о выборе процесса с [г, у'] — количество процессов в подмножестве максимального размера, состоящем из взаимно совместимых процессов в задаче ЯО. Эта величина равна нулю при Я; = 9; в частности, с [г, Я = О при г > ~. Теперь рассмотрим непустое подмножество Я; . Мы уже знаем, что если процесс аь используется в максимальном подмножестве, состоящем из взаимно совместимых процессов задачи 5;, то для подзадач Я;ь и Яь также используются подмножества максимального размера. С помощью уравнения (16.2) получаем рекурреитное соотношение с [г, у] = с [г, Й] + с [Й, у] + 1. В приведенном выше рекурсивном уравнении предполагается, что значение 1г известно, но на самом деле это не так.

Это значение можно выбрать из у — г — 1 возможных значений: й = г'+ 1,..., з — 1. Поскольку в подмножестве максимального размера для задачи Я; должно использоваться одно из этих значений Й, нужно проверить, какое из них подходит лучше других. Таким образом, полное рекурсивное определение величины с [г, Я принимает вид: О при Яз =9, с[и,з] = шах (с[1,к]+с[1, т]+1) при Я; ф 9. (16.З) 1<в<1 и ааел,~ Преобразование решения динамического программирования в жадное решение На данном этапе не составляет труда написать восходящий алгоритм динамического программирования, основанный на рекуррентном уравнении (16.3).

Это Глава 1б. Жадные алгоритмы 447 предлагается сделать читателю в упражнении (16.1-1). Однако можно сделать два наблюдения, позволяющие упростить полученное решение. Теорема 16.1. Рассмотрим произвольную непустую задачу Я; и пусть а,„— про- цесс, который оканчивается раньше других: 1„, = пшт Ць . аь Е Я! 1.

В этом случае справедливы такие утверждения. 1. Процесс а,„используется в некотором подмножестве максимального размера, состоящем из взаимно совместимых процессов задачи Я; . 2. Подзадача Я! пустая, поэтому в результате выбора процесса а непустой остается только подзадача Я„,зз Доказатаиьстлво. Сначала докажем вторую часть теоремы, так как она несколько проще. Предположим, что подзадача Я; непустая и существует некоторый процесс аы такой что ~, < аь < гь < а < г' . Тогда процесс аь также входит в решение подзадачи Я;,„, причем он оканчивается раньше, чем процесс а, что противоречит выбору процесса а . Таким образом, мы приходим к выводу, что решение подзадачи Я, — пустое множество. Чтобы доказать первую часть, предположим, что А; — подмножество максимального размера взаимно совместимых процессов задачи ЯЗ, и упорядочим процессы этого подмножества в порядке возрастания времени их окончания.

Пусть аь — первый процесс множества А; . Если аь = а, то доказательство завершено, поскольку мы показали, что процесс а используется в некотором подмножестве максимального размера, состоящем из взаимно совместимых процессов задачи Я; . Если же аь ~ а, то составим подмножество А'," = А, — (аь) 0 1а,„). Процессы в А, 'не перекрываются, поскольку процессы во множестве А; не перекрываются, аь — процесс из множества Ачп который оканчивается раньше всех, и 1 < Гь.

Заметим, что количество процессов во множестве А'," совпадает с количеством процессов во множестве Ачн поэтому А', — подмножество максимального размера, состоящее из взаимно совместимых процессов задачи 5; и включающее в себя процесс а,„. Почему теорема 16.1 имеет такое большое значение? Из раздела 15.3 мы узнали, что оптимальные подструктуры различаются количеством подзадач, использующихся в оптимальном решении исходной задачи, и количеством возможностей, которые следует рассмотреть при определении того, какие подзадачи нужно выбрать. В решении, основанном на принципах динамического программирования, в оптимальном решении используется две подзадачи, а также до т' — 1 — 1 вариантов выбора для подзадачи Я! . Благодаря теореме 16.1 обе эти величины значительно 448 Часть |Ч.

Усовершенствованные методы разработки и анализа уменьшаются: в оптимальном решении используется лишь одна подзадача (вторая подзадача гарантированно пустая), а в процессе решения подзадачи ЯО достаточно рассмотреть только один выбор — тот процесс, который оканчивается раньше других. К счастью, его легко определить. Кроме уменьшения количества подзадач и количества выборов, теорема 16.! дает еще одно преимущество: появляется возможность решать каждую подзадачу в нисходящем направлении, а не в восходящем, как это обычно происходит в динамическом программировании. Чтобы решить подзадачу ЯО, в ней выбирается процесс а, который оканчивается раньше других, после чего в зто решение добавляется множество процессов, использующихся в оптимальном решении подзадачи 5 з.

Поскольку известно, что при выбранном процессе и,„в оптимальном решении задачи Яз безусловно используется решение задачи Я, нет необходимости решать задачу Я до задачи Я! . Чтобы решить задачу ЯЗ, можно снпчила выбрать а, который представляет собой процесса из 5,1, который заканчивается раньше других, а потом решать задачу Я Заметим также, что существует единый шаблон для всех подзадач, которые подлежат решению. Наша исходная задача — Я = Яц„.„п Предположим, что в качестве процесса задачи Яо „ч.ы который оканчивается раньше других, выбран процесс а,. (Поскольку процессы отсортированы в порядке монотонного возрастания времени их окончания, и Го = О, должно выполняться равенство тз = 1.) Следующая подзадача — 5, „ч.п Теперь предположим, что в качестве процесса задачи 5,„, „.„ы который оканчивается раньше других, выбран процесс а„,я (не обязательно, чтобы пза = 2).

Следующая на очереди подзадача — Я,„, „+~. Продолжая рассуждения, нетрудно убедиться в том, что каждая подзадача будет иметь вид Я„ч „!.з и ей будет соответствовать некоторый номер процесса т+ Другими словами, каждая подзадача состоит из некоторого количества процессов, завершающихся последними, и это количество меняется от одной подзадачи к другой. Для процессов, которые первыми выбираются в каждой подзадаче, тоже сушествует свой шаблон. Поскольку в задаче Я,„, „„~ всегда выбирается процесс, который оканчивается раньше других, моменты окончания процессов, которые последовательно выбираются во всех подзадачах, образуют монотонно возрастаюшую последовательность. Более того, каждый процесс в процессе решения задачи можно рассмотреть лишь один раз, воспользовавшись сортировкой в порядке возрастания времен окончания процессов.

В ходе решения подзадачи всегда выбирается процесс а,„, который оканчивается раньше других. Таким образом, выбор является жадным в том смысле, что интуитивно для остальных процессов он оставляет как можно больше возможностей войти в расписание. Таким образом, жадный выбор — это такой выбор, который максимизирует количество процессов, пока что не включенных в расписание. Глава 16. Жадные алгоритмы 449 Рекурсивный жадный алгоритм После того как стал понятен путь упрощения решения, основанного на принципах динамического программирования, и преобразования его в нисходящий метод, можно перейти к рассмотрению алгоритма, работающего исключительно в жадной нисходящей манере. Здесь приводится простое рекурсивное решение, реализованное в виде процедуры Кес1!кз1че Аст1щтч Беьесток.

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

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

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