عملیات بر روی ماتریسهای اسپارس
میدونیم ماتریسهای اسپارس ماتریسهایی هستند که بیشتر درایه های آن صفر است
دو تا سوال دارم:
1-یعنی چه نسبتی از درایه های ماتریس صفر باشد؟آیا درصد خاصی وجود داره؟
2-بهترین الگوریتم برای ضرب و جمع ماتریسهای کدومه؟هر کی بلده لطفا آدرسی یا کدی به من بده.
با تشکر.((google))
****************************************
هیچ چیز شیرین تر از حقیقت نیست اگر چه همه می گویند حقیقت تلخ است.
((ناشناس))
نقل قول: عملیات بر روی ماتریسهای اسپارس
نقل قول:
نوشته شده توسط
pcseven
ما در ذخیره سازی ماتریس اسپارس یه ماتریس با 3 ستون و Z+1 سطر در نظر میگیریم.در ستون های اول و دوم مختصات درایه غیر صفر (در ستون اول موقعیت x درایه غیر صفر و در ستون دوم موقعیت y) را ذخیری می کنیم و در ستون سوم مقدار اون رو. بنابر این به تعداد درایه های غیر صفر(Z) سطر داریم. در سطر اول هم ابعاد ماتریس و تعداد درایه های غیر صفر رو مشخص می کنیم.
در این حالت عنصر تکراری رو کجا ذخیره می کنیم؟
نقل قول: عملیات بر روی ماتریسهای اسپارس
براي كار با ماتريس هاي اسپارس، وقتي ميخوايد داده ي تكراري رو ذخيره كنيد ميتونيد از يه حافظه ي ديگه استفاده كنيد. يه متغير ساده از هر نوعي كه خواستيد ميتونيد براي اين كار تعريف كنيد. توي اكثر كتابها و سايتها، ميشه گفت همشون، داده ي تكراري رو صفر در نظر گرفتن كه خوب كار خودشونو از خيلي جهات راحت كردن و همينطور نيازي به ذخيره ي اون نيست چون همه جا ديگه ميدونيم كه داده ي تكراري صفر بوده. اما اگه بخوايم اصولي تر و كلي تر نگاه كنيم. ماتريس اسپارس براي ذخيره ي بهينه ي ماتريس هايي هست كه (به تناسبي كه دوستان گفتن) داراي تعداد داده هاي تكراري و يا قابل محاسبه هست كه نيازي به ذخيره ي اون داده ي تكراري و يا قابل محاسبه به تعداد زياد نيست و شما ميتونيد فقط داده هاي غير تكراري رو در قالبي كه به اون ماتريس اسپارس ميگن ذخيره كنيد، و داده ي تكراري رو هم در يك خافظه ي جدا ذخيره كنيد و در آخر سر هرجا كه نياز داشتيد از اون استفاده كنيد. :لبخندساده: