Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/106: Рейтинг темы: голосов - 106, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 61
1

Разреженные матрицы

14.03.2013, 17:49. Показов 20530. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Даны две разреженные матрицы общего вида. Сложить их и результат занести в разреженную матрицу CSS.
с меня +1)) очень нужно! спасибо заранее!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2013, 17:49
Ответы с готовыми решениями:

Разреженные матрицы
Почитал теории по разреженным матрицам, как понял это такие матрицы, где большинство элементов...

Разреженные матрицы
Здравствуйте, прошу помощи, какие -нибудь примеры, которые могут натолкнуть хотя бы на правильное...

Разреженные матрицы
Как в ражреженной матрице найти количество различных элементов.

Разреженные матрицы
Добрый день, уважаемые пользователи. Задание по "Разреженным матрицам" через динамический...

18
142 / 143 / 64
Регистрация: 11.11.2010
Сообщений: 876
Записей в блоге: 10
14.03.2013, 18:29 2
Каким образом связаны разреженные матрицы и CSS?
0
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 61
14.03.2013, 18:41  [ТС] 3
GoldenId, Это матрица такая, есть матрицы CSR и CSS.
CSR - Это матрицы с разреженным пространством строк. Грубо говоря, некоторые строки нулевые.
а про CSS мало что знаю(
0
6 / 6 / 1
Регистрация: 12.10.2012
Сообщений: 71
15.03.2013, 22:21 4
Задача №4 из второй лабы?)
У меня похожая:
Даны две разреженные структурно симметричные матрицы. Из одной матрицы вычесть другую и результат занести в разреженную матрицу CSS.

Вообще не знаю что такое CSS матрица, гугл ничего интересного не поведал. Про структурно симметричные тоже не совсем ясно...
0
142 / 143 / 64
Регистрация: 11.11.2010
Сообщений: 876
Записей в блоге: 10
16.03.2013, 17:37 5
Какого размера матрицы?
0
6 / 6 / 1
Регистрация: 12.10.2012
Сообщений: 71
16.03.2013, 17:55 6
Размер N, т.е. устанавливается пользователем
0
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
16.03.2013, 18:11 7
честно говоря про CSR и CSS матрицы ничего не знаю, но как с разреженными работать идейка есть - создать класс разреженная матрица, полями которой будет размерность и вектор ненулевых элементов, ненулевой элемент описывается структурой pair в которой первое поле это также структура pair- cоответственно координаты (строка, столбец), а второе поле это собственно значение данной ячейки матрицы. Ну и остатся перегрузить оператор сложения матриц и вуаля))
1
142 / 143 / 64
Регистрация: 11.11.2010
Сообщений: 876
Записей в блоге: 10
16.03.2013, 20:01 8
Цитата Сообщение от Кудаив Посмотреть сообщение
честно говоря про CSR и CSS матрицы ничего не знаю, но как с разреженными работать идейка есть - создать класс разреженная матрица, полями которой будет размерность и вектор ненулевых элементов, ненулевой элемент описывается структурой pair в которой первое поле это также структура pair- cоответственно координаты (строка, столбец), а второе поле это собственно значение данной ячейки матрицы. Ну и остатся перегрузить оператор сложения матриц и вуаля))
Действительно, я к тому и спросил про размер матриц. Если матрицы N ~ 10 000 000 000, а элементов там от силы 100, то делать стоит именно как сказал Кудаив, а если N воплне реальное, N ~ 10 000, то можно и стандартным способом.
Привет от капитана.
0
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 61
16.03.2013, 20:06  [ТС] 9
Хотелось бы увидеть, что получиться где N - реальное число. Вашим методом)
0
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
16.03.2013, 20:17 10
есть такая книга "С++ Мастер-класс. 85 нетривиальных проектов, решений и задач", одна из первых задач про разреженные матрицы и решение есть
1
6 / 6 / 1
Регистрация: 12.10.2012
Сообщений: 71
16.03.2013, 22:02 11
Почитаем, но думаю в данной задаче можно ограничиться матрицами 100х100, мне просто не совсем ясно, что такое CSS матрица, и что такое структурно симметричная матрица.
0
142 / 143 / 64
Регистрация: 11.11.2010
Сообщений: 876
Записей в блоге: 10
18.03.2013, 00:42 12
Цитата Сообщение от artlinenn Посмотреть сообщение
Хотелось бы увидеть, что получиться где N - реальное число. Вашим методом)
Честно? Активничаю с полнедели, а от "Мне нужно написать класс, с двумя методами, которые..." уже устал
0
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 61
18.03.2013, 07:57  [ТС] 13
Цитата Сообщение от GoldenId Посмотреть сообщение
Честно? Активничаю с полнедели, а от "Мне нужно написать класс, с двумя методами, которые..." уже устал
за готовый код с объяснениями готов заплатить) пиши в ЛС!
0
142 / 143 / 64
Регистрация: 11.11.2010
Сообщений: 876
Записей в блоге: 10
18.03.2013, 09:41 14
artlinenn, я Вас умоляю
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
 
using namespace std;
 
void main()
{
    const int n = 100;
    float a[ n ][ n ];
    float b[ n ][ n ];
 
    float c[ n ][ n ];
 
    int i, j;
 
    // каким-то образом ввести матрицы a и b
    // если хочется проверить чувство юмора преподавателя,
    // можно из стандартного ввода:
    cout << "Введите a: " << endl;
    for( i = 0; i < n; i++ )
        for( j = 0; j < n; j++ )
            cin >> a[ i ][ j ];
    // аналогично для b
 
    // прогнать двойной цикл для сложения
    for( i = 0; i < n; i++ )
        for( j = 0; j < n; j++ )
            c[ i ][ j ] = a[ i ][ j ] + b[ i ][ j ];
 
    // передать результат c, куда следует
    // а вы уж сами решите, куда... следует
}
Не больше не меньше. Я не злой, мне просто dx по dy
2
14 / 14 / 5
Регистрация: 17.02.2013
Сообщений: 54
18.03.2013, 17:14 15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include<iostream>
#include<iomanip.h>
using namespace std;
int main () {
srand(time(0));
int n, k, l;
cout<<"Vvedite poryadok matric A, B, CSS:"<<endl;
cin>>n;
int a[n][n], b[n][n], css[n][n];
for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
                a[i][j]=0;}}
for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
                b[i][j]=0;}}
for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){k=rand()%2; l=rand()%2;
        if(i+k < n){ if(j+l < n) {
                a[i+k][j+l]=50-(rand()%100);}}}}
for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){k=rand()%2; l=rand()%2;
        if(i+k < n){ if(j+l < n) {
                b[i+k][j+l]=50-(rand()%100);}}}}
for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
                css[i][j]=a[i][j]+b[i][j];}}
cout<<"Matrix A:"<<endl;
for(int i=0; i<n; i++){
        cout<<endl;
        for(int j=0; j<n; j++){
                cout<<setw(3)<<a[i][j];}}
cout<<endl<<endl<<endl;
cout<<"Matrix B:"<<endl;
for(int i=0; i<n; i++){
        cout<<endl;
        for(int j=0; j<n; j++){
                cout<<setw(3)<<b[i][j];}}
cout<<endl<<endl<<endl;
cout<<"Matrix CSS(result A+B):"<<endl;
for(int i=0; i<n; i++){
        cout<<endl;
        for(int j=0; j<n; j++){
                cout<<setw(3)<<css[i][j];}}
cout<<endl;
system("pause");    
return 0;   
}
Дополненная версия*
1
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 61
18.03.2013, 17:17  [ТС] 16
DIEZEL-man, у меня прога не запускается, высвечивает n в строке 9, как ошибку! пишет, что в этом случае нужно указывать константные значения!
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
18.03.2013, 17:25 17
Цитата Сообщение от artlinenn Посмотреть сообщение
нужно указывать константные значения!
C++
1
2
3
int **a;
a = (int **)malloc(n*sizeof(int *));
for(i=0; i<n; i++) a[i] = (int *)malloc(n*sizeof(int));
0
0 / 0 / 0
Регистрация: 15.02.2013
Сообщений: 9
28.03.2013, 11:15 18
CSS метод хранения разреженных матриц, когда матрица хранится в упакованном экономном виде.
Заключается он вот в чем:
a1 - числовые значения.
a2 - координата ненулевой строки.
a3 - состояние столбца.
Привожу похожий пример, только упаковка в CSR матрицу ( a2 меняется с a3 ).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <cstdlib> 
#include <iostream> 
 
using namespace std; 
 
int main(int argc, char *argv[]) 
{ 
srand(time(0)); 
int A[4][4]; 
int B[4][4]; 
int css[4][4]; 
int css2[4][4]; 
int a1[4],a2[4],a3[5]={1,1,1,1,1}; 
for(int i=0; i<4;i++) 
{ 
for(int j =0;j<4;j++) 
{ 
A[i][j]=0; 
B[i][j]=0; 
} 
} 
 
for ( int i =0 ;i<4;i++) 
{ 
A[i][i]=rand()%10; 
B[i][i]=rand()%10; 
} 
cout «" MATRIX A IS:" « endl ; 
for(int i =0; i<4;i++) 
{ 
 
for(int j =0;j<4;j++) 
{ 
cout « A[i][j] « " " ; 
} 
cout « endl; 
} 
cout «" MATRIX B IS:" « endl ; 
for(int i =0; i<4;i++) 
{ 
cout « endl; 
for(int j =0;j<4;j++) 
{ 
cout « B[i][j] « " " ; 
} 
} 
for(int i =0; i<4;i++) 
{ 
cout « endl; 
for(int j =0;j<4;j++) 
{ 
css[i][j]=0; 
} 
} 
 
for ( int i=0;i<4;i++) 
{ 
 
for ( int j=0;j<4;j++) 
{ 
css[i][j]=0; 
for( int k=0;k<4;k++) 
{ 
css[i][j]=css[i][j]+A[i][k]*B[k][j]; 
} 
 
} 
} 
 
cout «" MATRIX CSS IS:" « endl ; 
for(int i =0; i<4;i++) 
{ cout « endl; 
for(int j =0;j<4;j++) 
{ 
cout « css[i][j] « " " ; 
} 
} 
for ( int i=0;i<4;i++) 
{ 
for (int j=0;j<4;j++) 
{ 
if (!(css[i][j]==0)) { a1[i]=css[i][j]; a2[i]=j; a3[i+1]=a3[i]+1;} 
} 
} 
cout « "\n" « "a1 is:" ; 
for ( int i=0;i<4;i++) 
{ 
cout « " " « a1[i]; 
} 
cout « "\n" « "a2 is:"; 
for ( int i=0;i<4;i++) 
{ 
cout « " " « a2[i]; 
} 
cout « "\n" « "a3 is:"; 
for ( int i=0;i<5;i++) 
{ 
cout « " " « a3[i]; 
} 
cout « endl; 
for (int i=0;i<4;i++) 
{ 
for (int j=0;j<4;j++) 
{ 
css2[i][j]=0; 
} 
} 
for ( int i=0;i<4;i++) 
{ 
for ( int i1=a3[i];i1<a3[i+1];i1++) 
{ 
css2[i][(a2[i])]=a1[i]; 
} 
} 
cout « "\n" «" MATRIX CSS2 IS:" « endl ; 
for(int i =0; i<4;i++) 
{ 
cout « endl; 
for(int j=0;j<4;j++) 
{ 
cout « css2[i][j] « " " ; 
} 
} 
system("PAUSE"); 
return EXIT_SUCCESS; 
}
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
28.03.2013, 13:07 19
Авторам разреженных матриц читать Герберта Шилдта в надежде почерпнуть идеи или прямо из текста, или оттолкнувшись от текста пойти дальше.
0
28.03.2013, 13:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2013, 13:07
Помогаю со студенческими работами здесь

Объясните, что такое разреженные матрицы, как их генерировать и математические операции над ними
Скажите, пожалуйста, правильно ли я думаю. На сколько я понял разряженная матрица - это матрица...

Разреженные матрицы
Ребят у меня вопрос! Если я хочу перемножить разреженные матрицы, то мне пользоваться классическим...

разреженные матрицы
Как можно сделать проверку в Delphi 7 на разреженность матрицу?

Разреженные матрицы, нужна литература
Ребят я занимаюсь матрицами. Если конкретно я занимаюсь параллельным программированием и перемножаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru