Уровень алгоритма

Участник:Lexaloris/Умножение разреженной матрицы на вектор: различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
Строка 93: Строка 93:
 
= Литература =
 
= Литература =
  
<references \>
+
[1] С. Писсанецки. Технология разреженных матриц. Изд. Мир, 1988.

Версия 08:21, 15 октября 2016


Умножение разреженной матрицы на вектор
Последовательный алгоритм
Последовательная сложность O(k)
Объём входных данных k + m
Объём выходных данных n
Параллельный алгоритм
Высота ярусно-параллельной формы O(m)
Ширина ярусно-параллельной формы O(n)


Авторы страницы: Кочетков П.А и Новоселов А.Д.

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

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

Пусть N — число строк матрицы. Для каждой ее строки I матрийы мы находим с помощью IA значения первой IAA и последней IAB позиций, занимаемых элементами строки I в массивах JA и AN. Затем, чтобы вычислить скалярное произведение строки I и вектора B, мы просто просматриваем JA и AN на отрезке от IAA до IAB: каждое значение, хранимое в JA, есть столбцовый индекс и используется для извлечения из массива B элемента, который должен быть умножен на соответствующее число из AN. Результат каж­дого умножения прибавляется к C(I).

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

Исходные данные:

IA, JA, AN - заданная матрица в форме RR (С) U;

B - заданный заполненный вектор;

N - число строк матрицы.

Выход: C вектор-произведение размерности N.

Формулы метода:

\begin{align} & IAA_{i} = IA(i), \quad i \in [1, N], \\ & IAB_{i} = IA(i + 1) - 1, \quad i \in [1, N], \\ & c_{i} = \sum\limits_{j = IAA_{i}}^{IAB_{i}} AN(j)B(JA(j)), \quad i \in [1, N] \\ \end{align}

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

Вычислительным ядром, т.е. той частью алгоритма, на которую приходится основное время работы алгоритма, является вычисление значения i-го элемента c_{i} вектора-произведения, т.е произведения строки I матрицы A и вектора B по формуле:

\begin{align} & c_{i} = \sum\limits_{j = IAA_{i}}^{IAB_{i}} AN(j)B(JA(j)), \quad i \in [1, N] \\ \end{align}

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

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

Последовательность исполнения метода следующая:

Далее для всех i от 1 до N по нарастанию выполняются:

1. c_{i} = 0; IAA = IA(i); IAB = IA(i + 1 ) - 1

После этого, если (IAB \lt = IAA):

2. Для всех j от IAA до IAB выполняется:

c_{i} = \sum\limits_{j = IAA_{i}}^{IAB_{i}} AN(j)B(JA(j))

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

Для всего алгоритма потребуется выполнить O(M) операций, где M - число ненулевых эле­ментов матрицы.

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

InfoGrafMatrixRRCUandVextor.jpg

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

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

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

Алгоритм в рамках выбранной версии полностью детерминирован.

Вычислительная мощность алгоритма, как отношение числа операций к суммарному объему входных и выходных данных – константа.

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

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

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

3 Литература

[1] С. Писсанецки. Технология разреженных матриц. Изд. Мир, 1988.