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, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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