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

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

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

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

Глава 15. Динамическое программирование 393 Третий этап: вычисление минимальных промежутков времени На данном этапе на основе уравнения (!5.1) и рекуррентных соотношений (!ч.б) н ('15.7) легко было бы записать рекурсивный алгоритм определения самого быстрого пути сборки автомобиля на заводе. Однако с таким алгоритмом связана одна проблема: время его работы экспоненциально зависит от п. Чтобы понять, почему это так, введем значения г; О), обозначающие количество ссылок в рекурсивном алгоритме на величины», [Я. Из уравнения (15.1) получаем: 7'1 (71) = 7'з (П) = 1.

(15.8) Из рекуррентных уравнений (! 5.6) и (15.7) следует соотношение г, (») = т, (»') = г, (» + 1) + гя (» + 1), (! 5.9) рлзтнзт %лу(а, 1, е, ж, и) 1 »1[Ц вЂ” е1 + а1 1 2»з[Ц вЂ” ез + а7д 3 Гог» -2!оп 4 7!о !1»1(» — Ц + а1 7 <»з(» 5 треп»"1 (»] — »1 [»' — Ц 6 !1(»] 1 7 е!яе»1(7] "- »з(,7 — Ц 8 !1(7] 7 — 2 9 П Уз(» Ц + пгг < Ь(» !О Феп Я»]»з(» — Ц !! 1,(,7] -- 2 !2 е!зе Я,7'] — Л[» — Ц !3 1г [»] — 1 — Ц + !З 7. 1 + а1 7. + П1 + 1г, 1 + а1 .

— Ц +1!7 !+ азу + П'7 7 + !1,7 — 1 + О2,7 справедливое при» = 1,2,..., и — 1. В упражнении !5.1-2 предлагается показать, что г; (») = 2" 7. Таким образом, к величине (1 (Ц алгоритм обращается 2" ' раз! В упражнении 15.1-3 предлагается показать, что полное количество обращений ко всем величинам», (7] равно б7 (2"). Намного лучших результатов можно достичь, если вычислять величины», (»] в порядке, отличном от рекурсивного. Обратите внимание, что при» > 2 каждое значение», (7] зависит только от величин»1(» — Ц и»я [» — Ц. Вычисляя значения», [»] в порядке увеличения номеров рабочих мест» — слева направо (см. рис.

! 5.26), — можно найти самый быстрый путь (и время его прохождения) по заводу в течение времени 6 (и). Приведенная ниже процедура Рлзтввт Юлу принимает в качестве входных данных величины а1 7, 11 7, е; и х„а также количество рабочих мест на каждом конвейере и: Часть |Ч. Усовершенствованные методы разработки и анализа 394 14 И ~1 [и] + х1 (,Тз [и] + хз 15 ФЬеп 7"* = 11[п]+ х1 16 1' = 1 17 еие 1 =,12[о] + х2 18 1* = 2 Процедура ГАЯтезт %Ау работает следующим образом.

В строках 1-2 с помощью уравнений (15.2) и (15.3) вычисляются величины ~з [1] и Тз [1]. Затем в цикле 1ог в строках 3-13, вычисляются величины г"; [Я и 1; Ы при г = 1,2 и 7' = 2, 3,..., и. В строках 4-8 с помощью уравнения (15.4) вычисляются величины 11 [7] и 11 [5], а в строках 9-13, с помощью уравнения (15.5), величины ,1з [7] н 1з [7]. Наконец, в строках 14-18 с помощью уравнения (15.1) вычисляются величины 7".* и 1*.

Поскольку строки ! — 2 и 14-18 выполняются в течение фиксированного времени, и выполнение каждой из и — 1 итераций цикла зог, заданного в строках 3-13, тоже длится в течение фиксированного времени, на выполнение всей процедуры требуется время, равное О (и). Один из способов вычисления значений 7".; [Я и 1; [)] — заполнение ячеек соответствующей таблицы.

Как видно из рис. 15.2б, таблицы для величин Д ~Я и 1; [5] заполняются слева направо (и сверху вниз в каждом столбце). Для вычисления величины Т"; [7] понадобятся значения 11 [7' — 1] и Тз [7 — 1]. Зная, что зги величины уже вычислены и занесены в таблицу, их можно просто извлечь из соответствующих ячеек таблицы, когда они понадобятся. Четвертый этап: построение самого быстрого пути После вычисления величин Д [5], 1'", 1; [7] и Г нужно построить последовательность решений, используемых в самом быстром пути сборки.

Ранее было рассказано, как зто можно сделать для примера, проиллюстрированного на рис. 15.2. Приведенная ниже процедура выводит в порядке убывания номера использующихся рабочих мест. В упражнении 15.1-1 предлагается модифицировать зту процедуру так, чтобы номера рабочих мест выводились в ней в порядке возрастания. Рщхт БтАт10из(1, п) 1 г — 1' 2 рпп1 "Конвейер " г ", рабочее место '* п 3 1ог 5' — и пои иго 2 4 до1 -1,[Я 5 рпп1 "Конвейер " г ", рабочее место " 7' — 1 В примере, приведенном на рис.

15.2, процедура Рщнт БтАтвэнз выведет такую последовательность рабочих мест: Глава 15. Динамическое программирование 395 Конвейер 1, рабочее место 6 Конвейер 2, рабочее место 5 Конвейер 2, рабочее место 4 Конвейер 1, рабочее место 3 Конвейер 2, рабочее место 2 Конвейер 1, рабочее место 1 Упражнения 15.1-1. Покажите, как модифицировать процедуру Ршнт Бтлтюнз, чтобы она выводила данные в порядке возрастания номеров рабочих мест.

(Указание: используйте рекурсию.) 15.1-2. С помощью уравнений (15.8) и (15.9) и метода подстановки покажите, что количество обращений г; Ц) к величинам Д Ц в рекурсивном алгоритме равно 2" 1. 15.1-3. Воспользовавшись результатом, полученном при выполнении упражнения 15.1-2, покажите, что полное число обращений ко всем величинам Г"; ] 1], выражающееся двойной суммой х ~~, т~ " г; (1), равно 2"+' — 2. 15.1-4.

В таблицах„содержащих величины Г"; ]Я и (з [2], общее количество ячеек равно 4и — 2. Покажите, как свести количество ячеек к 2и + 2 и при этом иметь возможность вычисления величины Г"* и вывода информации о всех рабочих местах, составляющих самый быстрый путь прохождения завода. 15.1-5. Профессор предположил, что могут существовать значения ео ану и 1;3, для которых процедура РАзтнзт %Ау дает такие значения 1; ]3], что для некоторого рабочего места 2 11 и = 2 и 1з ]3] = 1. Принимая во внимание, что все переходы выполняются в течение положительных промежутков времени Ц 1, покажите, что предположение профессора ложно. 15.2 Перемножение цепочки матриц Следующий пример динамического программирования — алгоритм, позволяющий решить задачу о перемножении цепочки матриц.

Пусть имеется последовательность (цепочка), состоящая из п матриц, и нужно вычислить их произведение А1Аг .. А„. (15.10) Выражение (15.10) можно вычислить, используя в качестве подпрограммы стандартный алгоритм перемножения пар матриц. Однако сначала нужно расставить скобки, чтобы устранить все неоднозначности в порядке перемножения. Порядок Часть !У. Усовершенствованные методы разработки н анализа 396 произведения матриц нолноспвь о определен скобками (Гп)!у рагеп!йез!ге4!), если произведение является либо отдельной матрицей, либо взятым в скобки произведением двух подпоследовательностей матриц, в котором порядок перемножения полностью определен скобками.

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

Сначала рассмотрим, как определить стоимость произведения двух матриц. Ниже приводится псевдокод стандартного алгоритма. Атрибуты тоша и со!итпз означают количество строк и столбцов матрицы. МАтих М!лтпчу(А, В) ! !Г со!итппз[А] ф. тошз[В] 2 гпеп еггог "Несовместимые размеры'* 3 е!зе Гог ! — 1 го тоша[А] 4 бо !ог г — 1 ге со!итппз[В] 5 до С[1, г'] - О б !ог к — 1 го со!итпз[А] 7 до С[1, г] — С[4,2]+ А[1, К] В[к,Я 8 гегпгп С Матрицы А и В можно перемножать, только если они соамесгпимы: количество столбцов матрицы А должно совпадать с количеством строк матрицы В. Если А — это матрица размера р х 9, а  — матрица размера д х т, то в результате их перемножения получится матрица С размера р х т.

Время вычисления матрицы С преимущественно определяется количеством произведений скаляров (далее в главе для краткости будем называть эту операцию скалярным умножением— Прим. перев.), которое выполняется в строке 7. Это количество равно рот. Итак, стоимость умножения матриц будет выражаться в количестве умножений скалярных величин. Чтобы проиллюстрировать, как расстановка скобок при перемножении нескольких матриц влияет на количество выполняемых операций, рассмотрим при- Глава 15. Динамическое программирование 397 мер, в котором перемножаются три матрицы (Аы Аго Аз).

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

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

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

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