Последовательный алгоритм умножения матриц представляется тремя вложенными
циклами:
double A[Size*Size];
double B[Size*Size];
double
C[Size*Size];
int i,j,k;
RandInit (A, Size); RandInit (B, Size);
...
for (i=0;
i<Size; i++){
for (j=0; jj<Size;j++)
{
C[i*Size+j]=0;
for (k=0; k<Size; k++){
C[i*Size+j] +=
A[i*Size+k]*B[j*Size+k];
}
}
}
Этот алгоритм является итеративным и
ориентирован на последовательное вычисление строк матрицы С. Предполагается
выполнение n·n·n операций умножения и столько же операций сложения элементов
исходных матриц. Количество выполненных операций имеет порядок O(n^3).
Поскольку каждый элемент результирующей матрицы есть скалярное произведение
строки и столбца исходных матриц, то для вычисления всех элементов матрицы С
размером n*n необходимо выполнить (n^2)*(2n-1) скалярных операций и затратить
время T1 = (n^2)*(2n-1)*t, где t есть время выполнения одной элементарной
скалярной операции.