شنبه 27 آبان 1396 | Saturday 18 th of November 2017 صفحه اصلی گروه الکترونیکی کامپیوتر
ساختار اموزش الگوریتم زنجیره ضرب ماتریس ها در نرم افزار swish max

 الگوریتم زنجیره ضرب ماتریس ها را مانند بعضی از الگوریتم های پروژه از روی کد الگوریتم و با

اجرای خط به خط ان ، اموزش داده می شود. در اینجا نیز الگوریتم را همراه با حل یک مثال که در کتاب  " تحلیل و طراحی الگوریتم ها " اورده شده ، توضیح و اموزش می دهیم.

برای قرار دادن کد الگوریتم در صفحه نیز کادر و جعبه متنی را بر روی صفحه کاری در مکان مناسب می اوریم. و در داخل جعبه متن ، کد الگوریتم را تایپ میکنیم. البته به جاب متغیرهای داخل کد ، فاصله خالی را به اندازه جای متغیر درج می کنیم.بر طبق توضیحات الگوریتم های قبلی ، این فضاهای خالی برای قرار دادن جعبه متن مربوط به متغیرهاست .

برای اینکه مشخص شود در هرمرحله کدام خط کد در حال اجراست ، مستطیلی با اندازه یک خط کد بر روی کادر کد الگوریتم با رنگی متفاوت با زمینه کادر، درج میکنیم .این کادر مستطیل را طوری طراحی می کنیم، که ان خط کد را به صورت هایلایت شده نشان دهد. این کار را از طریق جعبه ابزار و ابزار درج اشکال هندسی انجام می دهیم. و این مستطیل در واقع نشانگری می شود که خط کد جاری را نشان میدهد. سپس از این کادر کپی گرفته و بر روی تمام خطوط می گذاریم .

روال اجرا از روی کد الگوریتم بدین صورت است که وقتی نشانگر کد روی خطوط کد قرار می گیرد متغیر های موجود در ان خط  کد مقدار مربوط به همان مرحله را می گیرند.

اجرای الگوریتم از روی کد الگوریتم پیگیری شده و نتیجه هر خط کد الگوریتم در اشیاء موجود در صفحه نیز نشان داده می شود.  به طوری که وقتی دوباره نشانگر خطوط روی خطی قرار گرفت مقادیر ان در صورت لزوم تغییر و به روزاوری شود و مجددا این تغییر بر روی اشیاء الگوریتم نیز اعمال می شود.

برای پیاده سازی این روال ، برای هرکدام از متغیرها  text box  جدا در نظر می گیریم. همانطور که در مشخصات نرم افزار swish  قبلا هم ذکر شد، سه نوع text boxیا همان جعبه متن در این نرم افزار وجود دارد .  Static text box  ,  Dynamic text box , input text box. که نوع Dynamic text boxان در واقع یک نوع جعبه متن پویا است و مقدار ان در خلال اجرای برنامه قابل تغییر است. در اینجا ، چون روال اجرا بدین صورت است که مقدار متغیرهای کد الگوریتم در خلال اجرا تغییر می کند ، جعبه متن متغیر ها را از نوع پویا قرار می دهیم. و جعبه متن هر کدام از متغیر ها را بر روی جعبه متن کد الگوریتم در مکان مناسب ان که فضای خالی به جای ان درج شده بود ، قرار می دهیم .

قابل ذکر است که جعبه متن حاوی مشخصات الگوریتم و جعبه متن کد الگوریتم نیازی به تغییر در خلال اجرا نداشته پس نوع انها را به صورتStatic text box  انتخاب و در پانل outline     گزینه ی block  را برای این دو جعبه متن انتخاب کرده تا در صفحه جا به جا نشوند و کار با اشیاء دیگر ساده تر شود .

در اولین مرحله نشانگر خطوط روی خط اول قرار گرفته و دو جعبه متن پارامترهای ان مقدار گذاری می شوند. مرحله بندی این الگوریتم نیز مانند بسیاری از الگوریتم های این پروژه به صورت فریم های 5 تایی دسته بندی شده است. هر 5 فریم را در خط زمان پانل timelineسکانس اصلی یک مرحله در نظر گرفته و بعد از ان افکت توقف یا همان stop  را قرار می دهیم.  سپس در رویداد  on press()کلید های "مرحله بعد" و "مرحله قبل" با استفاده از دستور gotoandplay(fram)بین این مراحل پیمایش می کنیم .

خط دوم الگوریتم ، مرحله صفر الگوریتم را اجرا می کند. در این مرحله هیچ عمل ضرب ماتریسی انجام نمی شود. این مرحله معادل درج mii=0، i=0 , 1 ,2 , 3در جدول است.  جعبه متن حاوی کمیت های مرحله اول را در کنار کادر کد الگوریتم قرار داده و همه را با هم به یک movie clipتبدیل می کنیم. سپس این movie clipرا در فریم های مرحله اول  ، قرار می دهیم.

برای مشخص کردن این که در هر مرحله کدام ماتریس ها با هم ضرب می شوند، جعبه متنی را به طور نمادین حاوی نام ماتریس ها به همراه اندازه سطر و ستون انها و عملگر ضرب بین انها قرار می دهیم. سپس در مراحل بعدی الگوریتم که عملیات مربوط ضرب ماتریس های مختلف این مجموعه را نشان می دهد ، ماتریس های مورد ضرب را درون پرانتز قرار می دهیم. به این ترتیب جعبه متن هایی را حاوی عملگر پرانتز در دو طرف ماتریس های مورد ضرب با رنگی متفاوت با زمینه قرار می دهیم. همچنین عملگر ضرب بین دو ماتریس را , همر نگ با پرانتز کرده تا ماتریس های مورد عملیات در ان مرحله به خوبی مشخص شود.

در اجرای خطوط بعدی الگوریتم نیز ، عملیات ضرب ماتریسی را نوشته و کمیت های مربوط به ان را حساب می کنیم . پس از پایان هر مرحله نیز،  خلاصه عملیات را در جدولی درج می کنیم. اجزای هر مرحله را با هم انتخاب و به صورت movie clipدر اورده و در فاصله فریم های همان مرحله قرار می دهیم.

اخرین مرحله ، مرحله ایست n-1عمل ضریب ماتریسی انجام می شود.در اینجا  طبق مثال ، nچهار می باشد. و به این ترتیب حداقل ضربهای مورد نیاز برای ضرب 4 ماتریس به دست می اید. در این مرحله تمام ماتریس ها در کادری که به عنوان نمادین برای مشخص کردن ضرب ماتریس قرار دادیم ، داخل پرانتز قرار می گیرد . و اخرین سطر جدول که m14است نیز پر می شود. m14مرحله n-1عملیات ضرب ماتریسی و همان خروجی الگوریتم فوق می باشد

Compatability by:
آخرین به روز رسانی سایت: سه شنبه, 22 اسفند 1391 - 00:26