سلام
الگوریتم استراسن در مورد ضرب ماتریس های n*n رو بصورت بازگشتی چطور پیاده سازی می کنن؟
سلام
الگوریتم استراسن در مورد ضرب ماتریس های n*n رو بصورت بازگشتی چطور پیاده سازی می کنن؟
کار ساده ای نیست. یا باید از آرایه های پویا استفاده کنی (خودت از بصورت پویا حافظه برداری) یا باید از فایل استفاده کنی. من فکر می کنم کار با فایل ها ساده تر باشه!
مثلا یک فایل از نوع رکورد بگیر که دارای 3 تا فیلد باشه : سطر ماتریس، ستون ماتریس و مقدار عنصر. حالا بیا این ماتریس رو ذخیره کن و بعد در بازگشت بعدی از تابع این فایل را مجددا بخون و از مقادیرش استفاده کن.
موفق باشید
کیمیا کنجکاو
kimia_konjkav@yahoo.com
ضرب استراسن برای ماتریس ها بکار می رود و موجب کاهش پیچیدگی زمانی می شود :
t=8t(n/2)+18n^2/4
اگر A={a11,a12,a21,a22} و B={b11,b12,b21,b22}
آنگاه C={c11,c12,c21,c22}
که c11=M1+M4-M5+M7
C12=M3+M5
C21=M2+M4
C22=M1+M3-M2+M6
------------------------------------
M1=(A11+A22)*(B11+B22) و
M2=(A21-A22)*B11
M3=A12(B11-B22)
M4=A22(B21-B11)
M5=(A11+A12)*B22
M6=(A21-A11)*(B11+B12)
M7=(A12-A22)*(B21+B22)
قوی ترین و در عین حال ساده ترین ابزار برای کار با ماتریسها زبان و محیط MATLAB هست که برای همه توابع و روشهای مورد استفاده در علوم و ریاضیات ابزار داره. اگر باهاش آشنایی ندارید پیشنهاد میکنم سری بزنید و از مستندات کمکی هم میتونید درمورد الگوریتمهاش استفاده کنید.
از coderعزیز یه سوال دارم. نرم افزار matlabچه ربطی به الگوریتم داره؟