Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ДГИО.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.33 Mб
Скачать

Лекция 3 Динамическое программирование и оптимизационная задача перемножения матриц.

Пусть дано n-матриц (A1, А2,…, An),согласованных по размерам, т.е.

Ai pi-1*pi, i= ,

p=(p0, p1,…, pn).

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

=

Cij= = , =

r*q*s общее число операций перемножения.

Порядок перемножения матриц:

А123

  1. либо ((А12)*А3);

  2. либо (А1*(А23));

Например, матрица А1 имеет размерность 10*5, А2 – размерность 5*6 и матрица А3 – размерность 6*2. Тогда проведя расчеты обоими способами, получим:

  1. 10*5*6=300, 10*6*2=120, то есть 420 операций умножения.

  2. 5*6*2=60, 10*5*2=100, то есть 160 операций умножения.

Определение: Произведением с правильно расставленными скобками n –матриц называется либо одна матрица (если n =1), либо заключенное в круглые скобки произведение с правильно расставленными скобками.

Сколько существует способов правильной расстановки скобок Q(n)?

Оценим это число снизу. Не нарушая общности, будем считать, что n кратно трем, т.е. n=3k.

Разобьем всю последовательность наших матриц на тройки.

Таких троек k-штук.

Оценим снизу: Q(n) = 2n/3 (1)

Можно оценить по-другому.

Рассмотрим два способа расстановки скобок:

A1*(A2*…*An) или (A1*…*An-1)*An.

Число способов расстановки скобок будет не меньше, чем в скобках первого и второго представлений, т.е:

Q(n) Q(n-1)+Q(n-1) = 2Q(n-1) 22Q(n-2) 23Q(n-3) … 2n-2Q(2) 2n-2.

Видим, что число вариантов в задаче экспоненциально зависит от размерности задачи (n):

Q(n)= (n). Это значит, что полный перебор вариантов даст экспоненциальный алгоритм.

Применим к задаче метод динамического программирования.

1. Структура оптимального решения задачи.

Введем некоторое обозначение.

Ai..j – результат перемножения матриц Ai *Ai+1*…*Aj.

В частном случае, когда i=j, Ai..j=Aii.

Если i<j, то Ai..j=(Aik*Ak+1..j)

k- индекс матрицы, который определяется на последнем шаге.

A1..3=((A1*A2)*A3)=(A1..2*A3), где A1..2 =(A1*A2).

Si..j – некоторый способ расстановки парных скобок, то есть это и есть решение задачи.

Обозначим через F(Si..j) –число операций умножения.

Теорема. («Структура оптимального решения»).

Пусть S*i..j – оптимальный способ расстановки скобок в задаче, которому соответствует минимальное число операций умножения.

F = F(S*i..n). Пусть на некотором шаге перемножаются матрицы A1.. k*Ak.. n =>

=> Части этого (исходного) способа S*1..k* и S*k*+1..n – являются оптимальными расстановками скобок при вычислении таких произведений: A1..k* и Ak*+1..n.

Доказательство.

F = F(S*1..n) = F(S*i..k*)+ F(S*k*+1..n)+p0*pk*pn (1) (Это вытекает из условий теоремы.).

Если предположить, что один из подспособов не является оптимальным, т.е., например,

S*1..k* - не оптимально. Тогда , заменив его на оптимальный S**1..k*, получим, что в формуле (1) уменьшится первое слагаемое, что приведет к уменьшения всего выражения, что даст противоречие с тем, что S*1..n – оптимальное решение. То есть пришли к противоречию, теорема доказана.●

Введем подзадачу, связанную с вычислением Ai..j. m[i, j] – элемент массива, который определяет оптимальное значение целевой функции подзадачи, т.е. m[i, j]=F(S*i..j).

Чтобы решить исходную задачу, надо решить две подзадачи, у каждой из которых также возникает две подзадачи, и т.д., то есть эту структуру можно представить в след виде:

A1..n

A1..k* Ak*+1..n

A1..k** Ak**+1..k* … …

Выводим рекуррентное соотношение.

(2) m[i, j] =

(3) s[i,j]:= k* -это то k, при котором указанный минимум достигается.

S – функция, определяющая допустимое оптимальное решение.