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

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

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

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

Однаю сначала нужно расставить скобки, чтобы устранить все неоднозначности в порядке перемножения. Операция умножения матриц ассоциативна, так что любая расстановка скобок даст один я тот же результат. Порядок произведения матриц полнослеью определен скобками (йл!1у рагепй4ез!лед), если произведение является либо отдельной матрицей, либо взятым в скобки произведением двух подпоследовательностей матриц, в ютором порядок перемножения полностью определен скобками. Например, если задана последовательность матриц (Аы Аг, Аз, А4), то способ вычисления их произведения А1АгАзА4 можно полностью определить с помощью сюбок пятью разными способами: (А4(Аг(АзА4))), (А1((АгАз)А4)), ((А1Аг)(АзА4)) ((Аг(АгАз))А4), (((А1Аг)Аз)А4) .

От того, как расставлены скобки при перемножении последовательности матриц, может сильно зависеть время, затраченное на вычисление произведения. Сначала рассмотрим, как определить стоимость произведения двух матриц. Ниже приводится псевдокод стандартного алгоритма, который обобщает процедуру ЗОгикл-Млтк4х-Мгл.т4г!.у из раздела 4.2. Атрибуты говое и со1иплпе означают ксличеспю строк и столбцов матрицы. 404 Часть!и 'зсоеершенстеоеонные методы разработки и ана1иза Млтк1х-М~л.тички (А, В) 1 ЫА.со1итппв ~ В.тоша 2 еггог "несовместимые размеры матриц" 3 е1яе С вЂ” новая матрица размером А. тоша х В.

со1итппв 4 1ог з' = 1 Го А. тоизе 5 Гог 7' = 1 Го В.со(испив б су =0 7 Тог )с = 1 Го А. со1итпн 8 с;з = ~э+ась 5ь 9 Матрицы А и В можно перемножать, только если они совместимы: количество столбцов матрицы А должно совпадать с количеством строк матрицы В. Если А — это матрица размером р х д, а  — матрица размером д х т, то в результате их перемножения получится матрица С размером р х т. Время вычисления матрицы С преимущественно определяется количеством произведений скаляров (далее в главе для краткости будем называть эту операцию скалярным умножением.— Примеч. пер.), которое выполняется в строке 8. Это количество равно рот.

Итак, стоимость умножения матриц будет выражаться в терминах количества умножений скалярных величин. Чтобы проиллюстрировать, как расстановка скобок при перемножении нескольких матриц влияет на количество выполняемых операций, рассмотрим пример, в котором перемножаются три матрицы — (Аы Аз, Аз). Предположим, что размеры этих матриц равны 10 х 100, 100 х 5 и 5 х 50 соответственно. Перемножая матрицы в порядке, заданном выражением ((А1Аз)Аз), необходимо выполнить 10 100 5 = 5000 скалярных умножений, чтобы найти результат произведения А1Аз (при этом получится матрица размером 10 х 5), а затем — еще 10 5 50 = 2500 скалярных умножений, чтобы умножить эту матрицу на матрицу Аз.

Всего получается 7500 скалярных умножений. Если вычислять результат в порядке, заданном выражением (А1(АзАз)), то сначала понадобится выполнить 100 5.50 = 25000 скалярных умножений(при этом будет найдена матрица АзАз размером 100 х 50), а затем еще 10 100. 50 = 50000 скалярных умножений, чтобы умножить А1 на эту матрицу. Всего получается 75000 скалярных умножений. Таким образом, для вычисления результата первым способом понадобится в 10 раз меньше времени. Задачу о перемножении последовательности матриц (шаизх-сйа1п ший(р11и сайоп ргоЫеш) можно сформулировать следующим образом: для заданной последовательности и матриц (А1.

Аз,..., А„), в которой матрица А„1 = 1, 2,.... и имеет размер р, 1 х р„с помощью скобок следует полностью определить порядок умножений в матричном произведении А|Аз. А„, при котором количество скалярных умножений сведется к минимуму. Обратите внимание, что само перемножение матриц в задачу не входит. Наша цель — определить оптимальный порядок перемножения. Обычно время, затраченное на нахождение оптимального способа перемножения матриц, с лихвой окупается, когда выполняется само перемножение (как зто было в рассмотрен- Ггаеа !5. Яииаиичеокае ирограмиироеаиие 405 иом примере, когда удалось обойтись всего 7500 скалярными умножениями вме- сто 75 000).

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

Разбиение на подпоследовательности может производиться на границе х- и (к+ 1)-й матриц для любого к = 1,2,...,и — 1. В результате получаем рекуррентное соотношение 1, если п = 1, Р(п) = Р(14)Р(п — /с)1, если и > 2 . /с=1 (15.6) В задаче 12.4 предлагается показать, что решением аналогичного рекуррентного соотношения является последовательность чисел Капеллана (Са1а!ап пшпЬегз), возрастающая как й(4" /пзГз). Более простое упражнение (упр. 15.2.3) заключается в том, чтобы показать, что решение рекуррентиого соотношения (15.6) ведет себя, как й(2"). Таким образом, количество вариантов расстановки скобок экспоиенциально увеличивается с ростом и, и метод прямого перебора всех вариантов ие подходит для определения оптимальной стратегии расстановки скобок в матричном произведении.

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

Для этого мы должны следовать последовательности из четырех этапов, описанной в начале данной главы. 40б Часть IУ. 'зсовершенствованные методы разработки и анализа 4. Составление оптимального решения на основе информации, полученной на предыдущих этапах. Мы последовательно пройдем все эти этапы, ясно демонстрируя их применение к данной задаче. Этап 1. Структура оптимальной расстановки скобок Первый этап применения парадигмы динамического программирования — найти оптимальную вспомогательную подструктуру, а затем с ее помощью сконструировать оптимальное решение задачи по оптимальным решениям подзадач. В рассматриваемой задаче этот этап можно осуществить следующим образом. Обозначим для удобства результат перемножения матриц А,Ась1 .. А через А,, где ь < 1.

Заметим, что если задача нетривиальна, т.е. 1 < 1, то любой способ расстановки скобок в произведении А,А,У1 А разбивает это произведение между матрицами Аь и Аьты где к — целое, удовлетворяющее условию 1 < й < з, Таким образом, при некотором к сначала выполняется вычисление матриц А; ь и Аь.ьь з, а затем они умножаются друг на друга, в результате чего получается произведение А, .

Стоимость, соответствующая этому способу расстановки скобок, равна сумме стоимости вычисления матрицы А, ы стоимости вычисления матрицы Аь.иь з и стоимости вычисления их произведения. Ниже описывается оптимальная вспомогательная подструктура для данной задачи. Предположим, что в результате оптимальной расстановки скобок последовательность А,А,у1 .. А разбивается на подпоследовательности между матрицами Аь и Аь ьь Тогда расстановка скобок в "префиксной" подпоследовательности А,А;~1 . Аь также должна быть оптимальной. Почему? Если бы существовал более экономный способ расстановки скобок в последовательности А,А,дд Аы то его применение позволило бы перемножить матрицы АсА,~1 . А еще эффективнее, что противоречит предположению об оптимальности первоначальной расстановки скобок. Аналогично можно прийти к выводу, что расстановка скобок в подпоследовательности матриц Аь.ь1Аь.ьз А, возникающей в результате оптимальной расстановки скобок в последовательности А;А,~~ А, также должна быть оптимальной.

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

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

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

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

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