Количество умножений чисел, при умножении матриц |
Количество умножений чисел, при умножении матриц |
samec |
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: 1 |
Даны три матрицы A(m1,n1); B(m2,n2); C(m3,n3). Как мне вычислить количество умножений чисел, которое потребуется для умножения матриц, например, следующим образом (A*B)*C ??
|
samec |
Сообщение
#2
|
Бывалый Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: 1 |
Почти такой же пример (только не рекурсивный вариант, в книге сказано, что рекурсивный вариант алгоритма экспоненциально зависит от количества матриц, что не лучше полного перебора...) я нашёл в книге Кормена: Алгоритмы. Построение и анализ.
Вот так я его реализовал на паскале:
В матрице m в элементе [1..n], где n - количество матриц, хранится минимальное количество умножений. В матрице s, в элементе s[i,j] - записано место последнего умножения при оптимальной расстановке скобок. Также в этой книге есть процедура, реализующая произведение матриц с оптимальной расстановкой скобок, вот её псевдокод: Код Matrix-Chain-Multiply(A,s,i,j); 1 if j>i 2 then X<-Matrix-Chain-Multiply(A,s,i,s[i,j]) 3 Y<-Matrix-Chain-Multiply(A,s,s[i,j]+1,j) 4 return Matrix-Multiply(X,Y) 5 else return Ai Думаю, что для расстановки скобок переделать нужно именно эту процедуру...но вот как? что то у меня не получается ... помогите, пожалуйста.... Сообщение отредактировано: samec - |
Текстовая версия | 27.04.2024 10:29 |