ضرب زنجیره‌ای ماتریس در Visual Basic


در حال بارگذاری
23 اکتبر 2022
فایل فشرده
2170
2 بازدید
۶۹,۷۰۰ تومان
خرید

مساله ضرب زنجیره‌ای ماتریس‌ها و پرانتزبندی بهینه آن یکی از مثال‌های مشهور کاربرد برنامه‌نویسی پویا در حل مسائل بهینه‌سازی است.

    فرض کنید قصد داریم حاصلضرب عبارت ماتریسی A۳x۷ x B۷x۸ x C۸x۴ را محاسبه کنیم. می‌دانیم که ضرب ماتریس‌ها خاصیت شرکت‌پذیری داشته، اما خاصیت جابجایی ندارد. بنابراین رعایت ترتیب ضرب آنها مهم است. پرانتزبندی‌های مختلف ضرب ماتریس‌ها حالت‌های مختلف محاسبه آن را به ما می‌دهند:

     

(۱: A x ( B x C

۲: ( A x B ) x C

     

    در حالت اول ابتدا B در C ضرب شده و سپس حاصل آنها در A ضرب می‌شود؛ و در حالت دوم ابتدا A و B در هم ضرب شده و سپس نتیجه در C ضرب می‌شود. حال سوال این است که آیا این پرانتزبندی‌ها تفاوتی با هم دارند؟

    ضرب ماتریس دلخواه MR x L در ماتریس دلخواه دیگری مانند NL x C به R x L x C عمل ضرب عددی نیاز دارد (چرا؟).

برای مشاهده محصول مشابه پیشنهاد می‌کنیم ضرب زنجیره‌ای ماتریس در c++ را ببینید.

با توجه به این موضوع، تعداد کل عمل‌های ضرب برای محاسبه حاصلضرب سه ماتریس فوق را در هر دو پرانتزبندی محاسبه می‌کنیم:

     

۱: A x ( B x C ) : 7 x 8 x 4 + 3 x 7 x 4 = 308

 

    در حالت اول ابتدا ماتریس B در C ضرب می‌شود. سپس ماتریس A و ماتریس حاصل از ضرب اول، با ابعاد ( ۴ ,۷ )، در هم ضرب می‌شوند. به همین ترتیب در مورد حالت دوم:

     

۲: ( A x B ) x C : 3 x 7 x 8 + 3 x 8 x 4 = 264

  پس در پرانتزبندی به فرم دوم تعداد ضرب کمتری نیاز است.

   هدف ما این است که در بین تمامی این حالت‌ها، حالتی را بیابیم که حاصلضرب ماتریس‌ها با حداقل ضرب عددی محاسبه شود.

 

  راهنمای خرید:
  • لینک دانلود فایل بلافاصله بعد از پرداخت وجه به نمایش در خواهد آمد.
  • همچنین لینک دانلود به ایمیل شما ارسال خواهد شد به همین دلیل ایمیل خود را به دقت وارد نمایید.
  • ممکن است ایمیل ارسالی به پوشه اسپم یا Bulk ایمیل شما ارسال شده باشد.
  • در صورتی که به هر دلیلی موفق به دانلود فایل مورد نظر نشدید با ما تماس بگیرید.