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

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

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

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

Динамическое программирование 401 стоимостей т [1,7] и вспомогательная таблица а[1..п,1..п], в которую заносятся индексы )с, при которых достигаются оптимальные стоимости т [г',Я. Таблица а будет использоваться при построении оптимального решения. Чтобы корректно реализовать восходящий подход, необходимо определить, с помощью каких записей таблицы будут вычисляться величины т [г, Я.

Из уравнения (15.12) видно, что стоимость т [г, 7] вычисления произведения последовательности 7' — 1+ 1 матриц зависит только от стоимости вычисления последовательностей матриц, содержащих менее 7' — 1+ 1 матриц. Другими словами, при й = г', 1+ 1,..., 7' — 1 матрица А, ь представляет собой произведение й — г'+ 1 < < 7 — 1+ 1 матриц, а матрица Аь+~ — произведение 7 — 1с < 7' — 1+ 1 матриц.

Таким образом, в ходе выполнения алгоритма следует организовать заполнение таблицы т в порядке, соответствующем решению задачи о расстановке скобок в последовательностях матриц возрастающей длины: МАтщх СнАпч Ок1эек(р) 1 и — 1епд1й[р] — 1 2 1ог 1 — 1 1о п 3 бо т[1,1] - О 4 1ог1 - 2 1о и с 1 — длина последовательности 5 йо 1ог г' — 1 1о п — 1+ 1 6 по 7' — 1+1 — 1 7 т[1, 7] — оо 8 1ог Й вЂ” 1 1о 7' — 1 9 йо д — т[г, й] + т[)с + 1, 7] + р; ~рьру 10 [1 7'1 11 1пеп т[1,7] — д 12 э[1,7'] — Й 13 гегпгп т и а Сначала в этом алгоритме (строки 2-3) вычисляются величины т[г,г] — 0 (г = 1,2,..., п), которые представляют собой минимальные стоимости для последовательностей единичной длины.

Затем в первой итерации цикла в строках 4 — 12 с помощью рекуррентного соотношения (15.12) вычисляются величины т [1,1+ 1] при 1 = 1, 2,..., и — 1 (минимальные стоимости для последовательностей длины 1 = 2). При втором проходе этого цикла вычисляются величины т [г', г' + 2] при 1 = 1, 2,..., п — 2 (минимальные стоимости для последовательностей длины 1 = 3) и т.д. На каждом этапе вычисляемые в строках 9-12 величины т[и',3] зависят толью от уже вычисленных и занесенных в таблицу значений т [1, к] и т [1с + 1, 7']. На рис.

15.3 описанный выше процесс проиллюстрирован для цепочки, состоящей из п = б матриц, размеры которых равны: Аз — 30 х 35, Аз — 35 х 15, Аз— 15 х 5, А4 — 5 х 10, Аь — 10 х 20, Аа — 20 х 25. Поскольку величины т [г, 7] опре- Часть !У. Усовершенствованные методы разработки и анализа 402 а,х, ~ л; А, ла Матрица Размерность Аз Аз Аз Ал Аь Аа 30 х 35 35х15 15 х 5 5 х 10 10 х 20 20 х 25 Рис. 15.3. Таблицы т и а, вычисленные процедурой Млтих Силач Оапвк для п = 6 делены только при г < у', используется только часть таблицы т„расположенная над ее главной диагональю. То же можно сказать и о таблице а На рис. ! 5.3 таблица повернута так, чтобы ее главная диагональ была расположена горизонтально. В нижней части рисунка приведен список матриц, входящих в последовательность. На этой схеме легко найти минимальную стоимость т [г, у] перемножения частичной последовательности матриц А1А1+~ ...

А . Она находится на пересечении линий, идущих от матрицы А; вправо и вверх, и от матрицы А — влево и вверх. В каждой горизонтальной строке таблицы содержатся стоимости перемножения частных последовательностей, состоящих из одинакового количества матриц. В процедуре МАтк1х Силач Оа1энк строки вычисляются снизу вверх, а элементы в каждой строке — слева направо. Величина т [1, у] вычисляется с помощью произведений р; зрьр для !а = 1, г + 1,...,у — 1 и величин внизу слева н внизу справа от т [г,у]. Из таблицы т видно, что минимальное количество скалярных умножений, необходимых для вычисления произведения шести матриц, равно т [1, б] = 15 125.

Для пояснения приведем пример. При вычислении элемента т [5,2] использовались пары элементов, идущие от матриц Аз и Аз Глава 15. Динамическое программирование 403 и имеющие одинаковый оттенок фона: т[2, 2] + т[3, 5] + рзрзрь = 0+ 2500 + 35 15 20 = 13000, гп[2, 5] = пйп т[2, 3] + т[4, 5] + р1 рзрз = 2625 + 1000+ 35 .

5 . 20 = 7125, т[2, 4] + т[5, 5] + рьрярз = 4375+ 0+ 35 ° 10 ° 20 = 11375 = 7125 . Несложный анализ структуры вложенных циклов в процедуре МАтк(х СЕА(и Ок(эек показывает, что время ее работы составляет О (пз). Глубина вложения циклов равна трем, а индексы в каждом из них (1, г и (г) принимают не более п — 1 значений. В упражнении 15.2-4 предлагается показать, что время работы этого алгоритма фактически равно П (пз). Для хранения таблиц т и э требуется объем, равный 9 (пз). Таким образом, процедура МАтк1х СнАпч Оквек намного эффективнее, чем метод перебора и проверки всевозможных способов расстановки скобок, время работы которого экспоненциально зависит от количества перемножаемых матриц.

Четвертый этап: конструирование оптимального решения Несмотря на то, что в процедуре МАтк(х СнАпч Ок(эек определяется оптимальное количество скалярных произведений, необходимых для вычисления произведения последовательности матриц, в нем не показано, как именно перемножаются матрицы. Оптимальное решение несложно построить с помощью информации, хранящейся в таблице а. В каждом элементе э [г, у] хранится значение индекса и, где при оптимальной расстановке скобок в последовательности А1А;ч1...А. выполняется разбиение. Таким образом, нам известно, что опти- мальное вычисление произведения матриц Аь.п выглядит как Аь.з(1,и(А8(1,и(+ь.и. Эти частные произведения матриц можно вычислить рекурсивно, поскольку элемент э [1, э[1, т1]] определяет матричное умножение, выполняемое последним при вычислении Аь,(1 „(, а э [э[1, и] + 1, п] — последнее умножение при вычислении А,(1 „(+1 „.

Приведенная ниже рекурсивная процедура выводит оптимальный способ расстановки скобок в последовательности матриц (А;, А1+1,..., А ), по таблице а, полученной в результате работы процедуры МАтк(х СнАпч Окпек, и индексам з и 11 В результате вызова процедуры Ркпчт Огт(мль РАкехз(э, 1, п) выводится оптимальная расстановка скобок в последовательности (А1, Аз,..., А„): РК(МГ ОРТ!МАЬ РАКЕХБ(э, г, 1) 1 (Гг=у 2 Феп рпп1 "А"1 3 е(ае рпп1 "(" Часть 1Ч. Усовершенствованные методы разработки и анализа 404 4 Ркзхт ОРт!мА$. РАкенз(8, 1, а[1, Я) Рщнт Огт~мль РАкнчз(з,а[г, з]+ 1, т) 6 рппг ")" В примере, проиллюстрированном на рис. 15.3, в результате вызова процедуры Ркичт Огт~мл~.

РАккнз(в, 1,6) выводится строка ((А1 (АзАз)) ((А4 4ь) 4в)). Упражнения 15.2-1. Определите оптимальный способ расстановки скобок в произведении последовательности матриц, размеры которых равны (5, 10, 3, 12, 5, 50, 6). 15.2-2. Разработайте рекурсивный алгоритм МАтк~х СнА1н Мн т]их(А, в,1, 1), в котором оптимальным образом вычисляется произведение заданной последовательности матриц (А|Аз,..., А„). На вход этого алгоритма также подаются индексы 1 и т', а также таблица з, вычисленная с помощью процедуры МАтюх СнАпч Окпвк.

(Начальный вызов этой процедуры выглядит следующим образом: МАтнх Снлпч Мы.тпчл'(А, в, 1, и).) 15.2-3. Покажите с помощью метода подстановок, что решение рекуррентного соотношения (15.11) ведет себя как й (2"). 15.2-4. Пусть Л (1, з) — количество обращений к элементу матрицы т [1, т], которые выполняются в ходе вычисления других элементов этой матрицы в процедуре МАтнх Снин Окрик. Покажите, что полное количество обращений ко всем элементам равно: (Ужвание: при решении может оказаться полезным уравнение (А.З).) 15.2-5. Покажите, что в полной расстановке скобок в п-элементном выражении используется ровно и — 1 пар скобок.

15.3 Элементы динамического программирования Несмотря на рассмотренные в предыдущем разделе два примера, в которых применялся метод динамического программирования, возможно, вам все еще не совсем понятно, когда применим этот метод. В каких случаях задачу следует решать с помощью динамического программирования? В данном разделе рассматриваются два ключевых ингредиента, которые должны быть присущи задаче Глава 15. Динамическое программирование 405 оптимизации, чтобы к ней можно было применить метод динамического программирования: наличие оптимальной подструктуры и перекрывающиеся вспомогательные программы. Мы также рассмотрим разновидность метода, который называется заламикакием (шешо1хапол) и позволяет воспользоваться свойством перекрывающихся вспомогательных программ.

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

главу 16.) В динамическом программировании оптимальное решение задачи конструируется из оптимальных решений вспомогательных задач. Следовательно, необходимо убедиться в том, что в число рассматриваемых подзадач входят те, которые используются в оптимальном решении. Оптимальная подструктура была обнаружена в обеих задачах, которые исследовались в настоящей главе.

В разделе 15.1 было установлено, что самый быстрый путь до рабочего места с номером у', расположенного на одном из двух конвейеров, включает в себя самый быстрый путь до рабочего места с номером з' — 1. В разделе 15.2 было продемонстрировано, что в оптимальной расстановке скобок, в результате которой последовательность матриц А,А;+1... А разбивается на подпоследовательности между матрицами Аь и Аьч.м содержатся оптимальные решения задач о расстановке скобок в подпоследовательностях А,А,+1... Аь и Ая+1Аь+г Ау.

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

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

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