ماتریسی است که اکثریت عناصر ان مقدار ثابت و غیر قابل محاسبه ( معمولا صفر) می باشد و تنها تعداد کمی از خانه های ان داده ها به درد بخور می باشند بنابراین فضای بسیار زیادی از حافظه اصلی را برای ذخیره کردن این تعداد کم داده ها تلف می کنیم .
در یک جمله ماتریس اسپارس رو معرفی می کنم ماتریس اسپارس ماتریسی است که تعداد عناصر صفر آن بیشتر از عناصر غیر صفر هستند
خوب به بیان ساده فرض کنید یک ماتریس با ۱۰۰ سطر و ۹۰ ستون دارید که نوع عناصر آن صحیح یا integer هستش همچنین تعداد عناصر غیر صفر این ماتریس برابر ۸ عنصر است با یه حساب ساده خواهید فهمید برای ذخیره همچین ماتریسی به ۱۰۰*۹۰*۴ بایت احتیاج دارید حال اگر فقط عناصر غیر صفر را در یک آرایه دو بعدی ذخیره کنیم در حافظه مصرفی کاهش چشمگیری کرده ایم اما با این که این امتیاز رو به دست می آوریم یه ویژگی مهم را از دست خواهیم داد.
توضیحات بیشتر در مورده ماتریس اسپارس
مثال :
۰ ۰ ۰ ۲ ۰
۰ ۰ ۳ ۰ ۱
۰ ۰ ۰ ۰ ۰
۰ ۱۸ ۰ ۰ ۰
به عنوان مثال در ماتریس فوق برای ذخیره کردن چهار عنصر غیر صفر یک ماتریس ( ۵ * ۴ ) و ۲۰ خانه از حافظه را تلف کرده ایم روشی که برای ذخیرهء بهینهء این نوع ماتریسها استفاده می شود بدین صورت است که یک ماتریس در نظر می گیریم که همیشه ۳ ستون خواهد داشت و به تعداد عناصر غیر صفر سطر خواهد داشت که در هر سطر در ستون اول شمارهء سطر مربوط به عنصر غیر صفر ودر ستون دوم شمارء مربوط به ستون عنصر غیر صفر ودر ستون سوم مقدار عنصر غیر صفر را ذخیره خواهیم کرد
که کاهش قابل توجهی در میزان حافظه مصرفی خواهیم داشت.
نقل قول: کد:
i j value
2 2 1
1 1 2
3 3 2
18 44