PDA

View Full Version : چرا حاصل جمع و ضرب و تفریق ماتریس اسپارس همواره ماتریس اسپارس نیست؟



csharpprogramer88
پنج شنبه 28 مهر 1390, 11:01 صبح
سلام

کمی جستجو کردم این را فهمدیم که نتیجه ضرب ماتریس اسپارس همواره اسپارس نیست

چند سوال :

1-آیا این حرفم برای جمع و تفریق هم اینطوره ؟

2 – دلیل اینکه همواره اسپارس نیست را نفهمیدم لطفا با مثال برام توضیح بدید و بگید در هر سه حالت ضرب ئ جمع و تفریق حرفتون صادقه ؟



با تشکر

soorena
پنج شنبه 28 مهر 1390, 17:08 عصر
سلام
ماتريس اسپارس به ماتريسی گفته ميشه که تعداد خانه های صفر و بی ارزش ان بيشتر از خانه های غير صفر آن باشد.
تا اينجا که خودتم ميدونستی...
حاصل جمع و تفريق و ضرب ماتريس اسپارس ممکن است اسپارس نباشد.
مثال
a يک ماتريس 2 در 2 هستش که عنصر اول ان 1 و بقيه 0 است.
b يک ماتريس 2 در 2 هست که عنصر دوم آن 1 و بقيه 0 است.
خوب ديگه ميبينی که حاصل جمع و تفريق اين 2 ماتريس اسپارس نيست.
برای ضرب هم به همين ترتيب ميشه مثال زد.

csharpprogramer88
پنج شنبه 28 مهر 1390, 19:09 عصر
سلام
ماتريس اسپارس به ماتريسی گفته ميشه که تعداد خانه های صفر و بی ارزش ان بيشتر از خانه های غير صفر آن باشد.
تا اينجا که خودتم ميدونستی...
حاصل جمع و تفريق و ضرب ماتريس اسپارس ممکن است اسپارس نباشد.
مثال
a يک ماتريس 2 در 2 هستش که عنصر اول ان 1 و بقيه 0 است.
b يک ماتريس 2 در 2 هست که عنصر دوم آن 1 و بقيه 0 است.
خوب ديگه ميبينی که حاصل جمع و تفريق اين 2 ماتريس اسپارس نيست.
برای ضرب هم به همين ترتيب ميشه مثال زد.
میشه مثال واضح تری بزنی یا کد بزاری

FastCode
پنج شنبه 28 مهر 1390, 21:06 عصر
این واقعا تعریف شما از sparse ه؟

ماتریس sparse ماتریسیه که Cell هاش به شکل sparse نگهداری میشن.
مثل sparse array یا sparse index

csharpprogramer88
جمعه 29 مهر 1390, 12:57 عصر
این واقعا تعریف شما از sparse ه؟

ماتریس sparse ماتریسیه که Cell هاش به شکل sparse نگهداری میشن.
مثل sparse array یا sparse index

خوب واسم توضیح بدید دیگه میخوام یاد بگیرم
با تشکر

FastCode
چهارشنبه 04 آبان 1390, 11:50 صبح
ماتریس sparse با توجه به محتویاتش شناسایی نمیشه.
ماتریس sparse ماتریسیه که سلولهاش sparse باشن.
ماتریسی رو به شکل sparse نگهداری میکنن که ارزشش رو داشته باشه.(منظور سوال از اینکه چه موقع نتیجه جمع اسپارسه همینه)
یعنی ارزش پردازش اضافه ای که صرف استخراج سلولها میشه بیشتر از مقدار حافظه ای باشه که صرفه جویی میشه.
ساختار ساده ماتریس اسپارس هم که سادست
struct SparseMatrix{
int Dimentions;
int* Lengths;
MatrixCell* Cells;
};
struct SparseMatrixCell{
int* Location;
void* Data;
};
اسن ساده ترین حالت ماتریس چند بعدیه.
دو بعدیش راحتتره
struct SparseMatrix{
int Length_1;
int Length_2;
MatrixCell* Cells;
};
struct SparseMatrixCell{
int Location_1;
int Location_2;
void* Data;
};

و یک مقدار پیشرفته تر:
struct SparseMatrix{
int Length_1;
int Length_2;
CellArray* Columns;
CellArray* Rows;
};
struct CellArray{
CellArray* Next;
CellArray* Previous;
int Index;
int Count;
SparseMatrixCell* Cells
};
struct SparseMatrixCell{
CellArray* Column;
CellArray* Row;
void* Data;
};