IPB
ЛогинПароль:

> Количество умножений чисел, при умножении матриц
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской
Реальное имя: Юра

Репутация: -  1  +


Даны три матрицы A(m1,n1); B(m2,n2); C(m3,n3). Как мне вычислить количество умножений чисел, которое потребуется для умножения матриц, например, следующим образом (A*B)*C ??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Могу дать тебе половину решения..
Вот программа, которая выдает само минимальное количество умножений, но не говорит, как расставить скобки. Попробуй разобраться с ней и добавить расстановку скобок smile.gif.

Начальные данные задаются в константе Dim. При этом, поскольку соседние размерности одинаковые, я не повторяю их. Например, если у тебя есть 5 матриц таких размеров:
(3,4), (4,5), (5,6), (6,7), (7,2)
- то в массив Dim (его размер будет 5+1=6) надо занести:
3, 4, 5, 6, 7, 2
(Этот пример как раз использован в программе)
const
n=5;

type
tDim=array[1..n+1]of integer;

const
Dim:tDim=(3,4,5,6,7,2);

var
i,L:integer;

function MinMult(L:integer):integer;
var
i,j,k,q,D,Mult:integer;
begin
if L=2 then MinMult:=Dim[1]*Dim[2]*Dim[3]
else begin
k:=MaxInt;
for j:=1 to L-1 do begin
Mult:=Dim[j]*Dim[j+1]*Dim[j+2];
D:=Dim[j+1];
for i:=j+1 to L do Dim[i]:=Dim[i+1];
q:=MinMult(L-1);
if q+Mult<k then k:=q+Mult;
for i:=L downto j+1 do Dim[i+1]:=Dim[i];
Dim[j+1]:=D
end;
MinMult:=k
end
end;

begin
WriteLn(MinMult(n));
end.

Можешь задавать вопросы.. smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.04.2024 12:08
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name