2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Разреженные матрицы
Сообщение24.04.2009, 19:30 
Аватара пользователя


27/10/08
222
Каким образом можно наиболее эффективно хранить разреженные матрицы? И как производить с ними вычисления?

 Профиль  
                  
 
 
Сообщение24.04.2009, 22:09 
Заслуженный участник


19/07/08
1266
AndreyXYZ в сообщении #207849 писал(а):
Каким образом можно наиболее эффективно хранить разреженные матрицы?

Compressed Sparse Row Format
AndreyXYZ в сообщении #207849 писал(а):
И как производить с ними вычисления?

Зависит от того, какие вычисления. Есть масса библиотек.

 Профиль  
                  
 
 Re: разреженные матрицы
Сообщение17.04.2011, 23:19 


17/04/11
1
Здравствуйте! Сейчас пишу семестровую работу по разряженным матрицам, кто мог бы помочь с алгоритмом умножения этих квадратных матриц через формат хранения CSR(Compressed Row Storage), что были показаны на ссылках ввыше. Был бы очень очень благодарен!

 Профиль  
                  
 
 Re: разреженные матрицы
Сообщение18.04.2011, 11:26 


26/11/06
76
Вот как-то писал давно:

код: [ скачать ] [ спрятать ]
Используется синтаксис C++
public class SparseMatrix {

        /**
         * AN - одномерный массив, который содержит все ненулевые элементы матрицы
         * A,перечисленные в строчном порядке.
         */

        private double[] AN;

        /**
         * JA - одномерный массив, который содержит столько же элементов, сколько и
         * массив AN и для каждого из них указывает, в каком столбце находиться
         * данный элемент.
         */

        private int[] JA;

        /**
         * IA - одномерный массив, элементы которого указывают на позиции, с которых
         * начинается описание очередной строки.
         */

        private int[] IA;
               
        /**
         * Формирование разреженной матрицы по количеству ненулевых элементов и
         * порядку матрицы
         *
         * @param n -
         *            порядок матрицы (количество строк или столбцов)
         * @param nz -
         *            количество ненулевых элементов
         *
         */

        public SparseMatrix(int n, int nz) {                   
                AN = new double[nz];
                JA = new int[nz];
                IA = new int[n + 1];           
        }    

 
        public SparseMatrix mult (SparseMatrix B) {
                SparseMatrix C = new SparseMatrix(IA.length - 1, (IA.length - 1)
                                * (IA.length - 1));
                int n = 0;
                C.IA[0] = 0;
                for (int i = 0; i < IA.length - 1; i++) {

                        for (int j = 0; j < B.IA.length - 1; j++) {

                                for (int s = IA[i]; s < IA[i + 1]; s++) {
                                        if (j == JA[s]) {
                                                for (int k =  B.IA[j]; k < B.IA[j + 1]; k++) {
                                                        C.AN[B.JA[k] + n] += B.AN[k]* AN[s];
                                                }
                                                break;
                                        }

                                }

                                C.JA[j + n] = j;
                        }
                        n = n + IA.length-1;
                        C.IA[i + 1] = n;
                }
                return C;
        }
 

 Профиль  
                  
 
 Re: разреженные матрицы
Сообщение03.10.2014, 09:09 


03/10/14
1
Есть разряженная матрица размерностью примерно 500 000 x 500 000.
Реализацию матрицы писал на C#. Скорость записи и чтения желают лучшего. Может кто знает быстрые алгоритмы? Как грамотно организовать эту матрицу, чтобы ее заполнение (и чтение из нее) не было долгим?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group