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

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

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

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

Многие из этих результатов были обобщены для задачи о вычислении расстояния редактирования (задача 15.5). Ранняя работа Гильберта (О[1Ьет1) и Мура (Мооге) [132), посвященная бинарному кодированию переменной длины, нашла применениепри конструировании оптимального бинарного дерева поиска для случая, когда все вероятности р; равны О. В этой работе приведен алгоритм, время работы которого равно 0(пз). Ахо (АЬо), Хопкрофт (Норсгой) и Ульман (1ЛЬпап) [5) представили алгоритм, Глава !5. Дииаиичеелае ираграмиираваиие 447 описанный в разделе 15.5. Упр. 15.5.4 предложено Кнутом [211).

Ху и Такер (Тас(гег) [183] разработали алгоритм для случая, когда все вероятности р, равны 0; время работы этого алгоритма равно 0(пз), а количество несчислимой для него памяти — 0(п). Впоследствии Кнуту [210] удалось уменьшить это время до величины 0(п 18 и). Задача 15.8 принадлежит Авидану (Аи(бап) и Шамиру (БЬапш) [261, которые разместили в небе чудесную видеоиллюстрацию этого метода сжатия изображений. Глава 16. Жадные алгоритмы Алгоритмы, предназначенные для решения задач оптимизации, обычно представляют собой последовательность шагов, на каждом из которых предоставляется некоторое множество выборов. Определение наилучшего выбора с помощью принципов динамического программирования во многих задачах оптимизации напоминает стрельбу из пушки по воробьям; другими словами, для этих задач лучше подходят более простые и эффективные алгоритмы.

В жаднам алгоритме (ятеебу а!яоййпп) всегда делается выбор, который кажется самым лучшим в данный момент, т.е. проводится локально оптимальный выбор в надежде, что он приведет к оптимальному решению глобальной задачи. В этой главе рассматриваются задачи оптимизации, для которых жадные алгоритмы приводят к оптимальным решениям. Прежде чем приступить к изучению главы, следует ознакомиться с динамическим программированием, изложенным в главе 15, в частности с разделом 15.3. Жадные алгоритмы не всегда приводят к оптимальным решениям, но во многих задачах дают нужный результат.

В разделе 16.1 рассматривается простая, но нетривиальная задача о выборе процессов, эффективное решение которой можно найти с помощью жадного алгоритма. Чтобы прийти к жадному алгоритму, сначала будет рассмотрено решение, основанное на подходе динамического программирования, после чего будет показано, что оптимальное решение можно получить, исходя из принципов жадных алгоритмов.

В разделе 16.2 представлен обзор основных элементов подхода, в соответствии с которым разрабатываются жадные алгоритмы. Это позволяет упростить доказательство корректности жадных алгоритмов. В разделе 16.3 приводится важное приложение методов жадного прмраммирования: разработка кодов Хаффмана (Но%пап) для сжатия данных.

В разделе 16.4 исследуются теоретические положения„на которых основаны комбинаторные структуры, известные под названием "матроиды", для которых жадный алгоритм всегда дает оптимальное решение. Наконец в разделе 16.5 матроиды применяются для решения задачи о составлении расписания заданий равной длительности с крайним сроком выполнения и штрафами. Жадный метод обладает достаточной мощью и хорошо подходит для довольно широкого класса задач. В последующих главах представлены многие алгоритмы, которые можно рассматривать как применение жадного метода, включая алгоритмы поиска минимальных остовных деревьев (щ(шппнп-зрапп)пя-пее) (глава 23), алгоритм Дейкстры (О11КзПа) для определения кратчайших путей из одного ис- 449 Глава!б. Жадные авгаритмы точника (глава 24) и эвристический жадный подход Чватала (СЬ»ага!) к задаче о покрытии множества (яе1-сочеппй) (глава 35).

Алгоритмы поиска минимальных остовных деревьев являются классическим примером применения жадного метода. Несмотря на то что эту главу и главу 23 можно читать независимо одна от другой, может оказаться полезным прочитать их вместе. 16.1. Задача о выборе процессов В качестве первого примера рассмотрим задачу о составлении расписания для нескольких конкурирующих процессов, каждый из которых безраздельно использует общий ресурс. Цель этой задачи — выбор набора взаимно совместимых процессов, образующих множество максимального размера.

Предположим, имеется множество о = (ам аз,...,а„), состоящее из и процессов (ас41ч141ея). Процессам требуется некоторый ресурс, который одновременно может использоваться лишь одним процессом. Каждый процесс а, характеризуется начальным ме4»елжа» в, и конечным моментом ~ь где 0 < я, < г, < оо. Будучи выбранным, процесс а, длится в течение полуоткрытого интервала времени [яо (в). Процессы а, н а совместимы (сошрайЫе), если интервалы [а;, 1!) и [а,, г" ) не перекрываются (т.е. если я, > ! или я! > 14).

Задача о выборе лро44есеов (асйийу-яе1есйоп ргоЫеш) заключается в том, чтобы выбрать максимальное по размеру подмножество взаимно совместимых процессов. Например, рассмотрим описанное ниже множество Я процессов, отсортированных в порядке возрастания моментов окончания: Л < !г < 4з « . ! -! < ! (16.1) (Вскоре станет понятно, почему удобнее рассматривать процессы, расположенные именно в таком порядке.) Например, рассмотрим следующее множество процессов 5, В данном примере из взаимно совместимых процессов можно составить подмножество (аз,ав,а!4). Однако оно не является максимальным, поскольку существует большее подмножество (аыа4,аа,аы).

Фактически подмножество [ап а4, ав, аы) — наибольшее подмножество взаимно совместимых пРоцессов. Еще одно такое подмножество — (аг, а4, ав, аз! !. Разобьем решение этой задачи на несколько этапов. Начнем с того, что сформулируем решение рассматриваемой задачи, основанное на принципах динамического программирования.

Это оптимальное решение исходной задачи получается путем комбинирования оптимальных решений подзадач. Мы рассмотрим несколько вариантов выбора, который делается в процессе определения подзадачи, использующейся в оптимальном решении. Затем станет понятно, что заслуживает внимания лишь один выбор — жадный — и что, когда делается этот выбор, од- !вэвв 3744 450 Часть 5У. Усовертенствованные методы разраоотеи и аназиза на из подзадач гарантированно получается пустой. Остается лишь одна непустая подзадача. Исходя из этих наблюдений, мы разработаем рекурсивный жадный алгоритм, предназначенный для решения задачи о составлении расписания процессов.

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

Обозначим через о', множество процессов, которые запускаются после завершения процесса а, и завершаются до запуска процесса аз. Предположим, что необходимо найти максимальное множество взаимно совместимых процессов в эз и что такое максимальное множество представляет собой А,, которое включает некоторый процесс аь. Включая аь в оптимальное решение, мы оказываемся с двумя подзадачами: поиска взаимно совместимых процессов во множестве Я,ь (процессов, которые начинаются после завершения процесса а, и завершаются до начала процесса сь) и поиска взаимно совместимых процессов во множестве Яь (процессов, которые начинаются после завершения процесса аь н завершаются до начала процесса а ).

Пусть Аья = А; й о,ь и Аь = Азу г1 Яьз, так что Азь содеРжит пРоцессы в А,, котоРые завеРшаютсЯ до начала аы а Аяу содеРжит пРоцессы в А;, котоРые начинаютсЯ после того, как завеРшаетсЯ аь. Таким обРазом, мы имеем А, = Ась О 1аь) О Аьзч и множество максимального размера А; взаимно совместимых процессов в озз состоит из ]А,,] = ]Азя] + ]Аяу] + 1 процессов. Обычные рассуждения с применением метода "вырезания и вставки" показывают, что оптимальное решение А;. должно включать оптимальные решения двух подзадач для о,ь н оь . Если бы мы могли найти множество А'„. взаимно совместимых процессов в Я,5, такое, что ]Ась [ > [Аьз], то мы могли бы использовать Азь вместо Аье в решении подзадачи для о; . Таким образом, мы могли бы построить множество ]Ась] + [А~ц] + 1 > ]Аиа[+ [Аь;[ + 1 = ]А, ] взаимно совместимых задач, что противоречит предположению о том, что Ао является оптимальным решением.

Такие же рассуждения применимы и к процессам в ош. Этот способ характеристики оптимальной подструктуры дает основания для решения данной задачи методами динамического программирования. Если обозначить размер оптимального решения для множества о', как с[з,5], то мы получим рекуррентное соотношение с[з, 5] = с[з, 5е] + с[/4,5] + 1 . Конечно, если мы не знаем, что оптимальное решение для множества Я, включает процесс аы нам следует проверить все процессы в 5,5, чтобы найти, какой 451 Гяпеа ! К Жадные авгориягмы из них должен быть выбран, так что (о, если оз = 6, шах 1с1т', lс]+ с11с,Я+ 1), если Яб ~ 9.

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

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

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