Алгоритм Винограда. Перевод из псевдокода на язык высокого уровня (Java)
Это полный алгоритм Винограда для умножения матрицы G размером ахb на матрицу Н размером bхс. Результат записывается в матрицу R размером ахс.
d = b/2
// вычисление rowFactors для G
for i = 1 to a do
rowFactor[i] = G[i, 1] * G[i, 2]
for j = 2 to d do
rowFactor[i] = rowFactor[i] + G[i, 2j - 1] * G[i, 2j]
end for j
end for i
// вычисление columnFactors для H
for i = 1 to c do
columnFactor[i] = H[1, i] * H[2, i]
for j = 2 to d do
columnFactor[i] = columnFactor[i] + H[2j - 1, i] * H[2j, i]
end for j
end for i
// вычисление матрицы R
for i = 1 to a do
for j = 1 to c do
R[i, j] = -rowFactor[i] - columnFactor[j]
for k = 1 to d do
R[i, j]=R[i, j]+(G[i, 2k-1]+H[2k, j])*(G[i, 2k] + H[2k-1, j])
end for k
end for j
end for i
// прибавление членов в случае нечетной общей размерности
if (2 * (b/2) /= b) then
for i = 1 to a do
for j = 1 to c do
R[i, j] = R[i, j] + G[i, b] * H[b, j]
end for j
end for i
end if
Мне нужно перевести этот псевдокод в код на Java, а я, честно признаться, даже не знаю, с чего начать. Про алгоритм информации очень мало, ещё меньше примеров программ. С псевдокодом раньше не сталкивалась. Может, кто-нибудь может помочь?