Участник:NataliaPolienko/Блочное умножение матриц по методу Кеннона: различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 57: Строка 57:


=== Макроструктура алгоритма ===
=== Макроструктура алгоритма ===
Как записано в описании ядра алгоритма, основную часть метода составляют множественные вычисления умножений блоков матрицы <math>A</math> на блоки матрицы <math>B</math>:
:<math>
\begin{align}
\sum_{l = 1}^{k} A_{il} B_{lj}, \quad i \in [1, k], \quad j \in [1, k].
\end{align}
</math>


=== Схема реализации последовательного алгоритма ===
=== Схема реализации последовательного алгоритма ===

Версия от 07:17, 24 ноября 2017

Автор: Полиенко Н.А.

Свойства и структура алгоритма

Общее описание алгоритма

Одной из основных операций над матрицами является их перемножение. Данная операция широко применяется в большом количестве разных методов. Здесь мы рассмотрим умножение [math]\displaystyle{ C = AB }[/math]  квадратных матриц с помощью алгоритма Кеннона. Его суть заключается в том, что матрицы разбиваются на блоки, представляющие собой подматрицы исходных матриц. В следствии чего в качестве базовой подзадачи можно выбрать вычисления, связанные с определением одного из блоков результирующей матрицы [math]\displaystyle{ C }[/math] [1].

Математическое описание алгоритма

Исходные данные: матрица [math]\displaystyle{ A }[/math] размера [math]\displaystyle{ n \times n }[/math], матрица [math]\displaystyle{ B }[/math] размера [math]\displaystyle{ n \times n }[/math].

Вычисляемые данные: матрица [math]\displaystyle{ C }[/math] размера [math]\displaystyle{ n \times n }[/math].

Исходные и результирующая матрицы представляются в виде наборов блоков. Операцию матричного умножения матриц [math]\displaystyle{ A }[/math] и [math]\displaystyle{ B }[/math] в блочном виде можно представить следующим образом [2]: [math]\displaystyle{ \begin{bmatrix} A_{11} & A_{12} & \cdots & A_{1k} \\ A_{21} & A_{22} & \cdots & A_{2k} \\ \vdots & \vdots & \ddots & \vdots \\ A_{k1} & A_{k2} & \cdots & A_{kk} \end{bmatrix} \begin{bmatrix} B_{11} & B_{12} & \cdots & B_{1k} \\ B_{21} & B_{22} & \cdots & B_{2k} \\ \vdots & \vdots & \ddots & \vdots \\ B_{k1} & B_{k2} & \cdots & B_{kk} \end{bmatrix} = \begin{bmatrix} C_{11} & C_{12} & \cdots & C_{1k} \\ C_{21} & C_{22} & \cdots & C_{2k} \\ \vdots & \vdots & \ddots & \vdots \\ C_{k1} & C_{k2} & \cdots & C_{kk} \end{bmatrix}, }[/math]


где каждый блок [math]\displaystyle{ C_{ij} }[/math] матрицы [math]\displaystyle{ C }[/math] определяется в соответствии с выражением:

[math]\displaystyle{ \begin{align} C_{ij} = \sum_{l = 1}^{k} A_{il} B_{lj}, \quad i \in [1, k], \quad j \in [1, k]. \end{align} }[/math]

Полученные блоки [math]\displaystyle{ C_{ij} }[/math] являются независимыми.

Вычислительное ядро алгоритма

Вычислительное ядро перемножения матриц(квадратных) методом Кеннона можно составить из множественных вычислений умножения блоков матрицы [math]\displaystyle{ A }[/math] на блоки матрицы [math]\displaystyle{ B }[/math], таким образом получая блок результирующей матрицы [math]\displaystyle{ C }[/math]:

[math]\displaystyle{ \begin{align} C_{ij} = \sum_{l = 1}^{k} A_{il} B_{lj}, \quad i \in [1, k], \quad j \in [1, k]. \end{align} }[/math]

Макроструктура алгоритма

Как записано в описании ядра алгоритма, основную часть метода составляют множественные вычисления умножений блоков матрицы [math]\displaystyle{ A }[/math] на блоки матрицы [math]\displaystyle{ B }[/math]:

[math]\displaystyle{ \begin{align} \sum_{l = 1}^{k} A_{il} B_{lj}, \quad i \in [1, k], \quad j \in [1, k]. \end{align} }[/math]

Схема реализации последовательного алгоритма

Последовательная сложность алгоритма

Информационный граф

Ресурс параллелизма алгоритма

Входные и выходные данные алгоритма

Входные данные: размер квадратных матриц (n), матрица [math]\displaystyle{ A }[/math] размера [math]\displaystyle{ n \times n }[/math], матрица [math]\displaystyle{ B }[/math] размера [math]\displaystyle{ n \times n }[/math].

Выходные данные: матрица [math]\displaystyle{ C }[/math] размера [math]\displaystyle{ n \times n }[/math].

Свойства алгоритма

Программная реализация алгоритма

Масштабируемость алгоритма и его реализации

Существующие реализации алгоритма

Литература