18
اﻫﺪاف درس اﯾﻦ ﺟﻠﺴﻪ(1 اﺳﺘﻔﺎده از ﺷﯿﻮه ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﯽ ﭘﻮﯾﺎ ﺑﺮاي ﻣﺴﺎﻟﻪ ﺑﻬﯿﻨﻪﺳﺎزي ﺿﺮب زﻧﺠﯿﺮهاي ﻣﺎﺗﺮﯾﺲﻫﺎ(1 ﺑﺮرﺳﯽ اﺻﻞ ﺑﻬﯿﻨﮕﯽ(2 اﯾﺠﺎد وﯾﮋﮔﯽ ﺑﺎزﮔﺸﺘﯽ(3 ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﯽ از ﭘﺎﯾﯿﻦ ﺑﻪ ﺑﺎﻻ ﺑﺮاي رﺳﯿﺪن ﺑﻪ ﭘﺎﺳﺦ

ﻪﺴﻠﺟ ﻦﯾا سرد فاﺪﻫا - pws.yazd.ac.ir 11.pdf · ﺎﻫ ﺲﯾﺮﺗﺎﻣ يا هﺮﯿﺠﻧز بﺮﺿ (ج.ﺖﺳا هﺪﺷ هدروآ بﺮﺿ يا ﻪﯾﺎﭘ

  • Upload
    hakhue

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

درس این جلسهاهداف

استفاده از شیوه برنامه نویسی پویا براي مساله بهینه سازي ضرب 1)زنجیره اي ماتریس ها

بررسی اصل بهینگی1)

ایجاد ویژگی بازگشتی 2)

برنامه نویسی از پایین به باال براي رسیدن به پاسخ3)

ضرب زنجیره اي ماتریس ها) ج

:ظرب چهار ماتریس زیر را درنظر بگیرید

.ابعاد هر ماتریس در زیر آن نشان داده شده است

.دارد (associative)اپراتور ضرب ماتریس ها ویژگی انجمنی

.ویژگی انجمنی به این معنا است که ترتیب ضري در نتیجه حاصل تاثیري ندارد

Aبراي مثال (B (CD)) و(AB (CD) هر دو نتیجه یکسانی دارند.

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

.هر ترتیب ضرب تعداد عملیات هاي ضرب پایه اي متفاوتی خواهد داشت

2

ضرب زنجیره اي ماتریس ها) ج

.براي این پنج ماتریس تعداد عملیات هاي پایه اي ضرب آورده شده است

سومین ترتیب از این نظر که تعداد عملیات هاي ضرب پایه اي کمتري در آن صورت 3.می پذیرد بهینه است

ضرب زنجیره اي ماتریس ها) ج

ماتریس را بدست nضرب بهینهدر این مساله به دنبال آن هستیم ترتیب

آوریم

...که

.تعداد عملیات پایه اي ضرب کمتري در آن صورت پذیرد

4

ضرب زنجیره اي ماتریس ها) ج

....بیان می شوند که (I, f, m, g) این مساله به صورت چهارتایی

I در اینجا . مجموعه نمونه ها است...

هاي مختلف nمجموعه حاصلضرب ماتریس هاي مختلف با ابعاد و

x اي که عضوI مثال . است را درنظر بگیریم...

یک نمونه از حاصلضرب ماتریس ها مانند مثال اسالید قبل

f(x) مجموعه راه حل هاي ممکن از ویژگی انجمنی ضرب این نمونه است.

، یکی از این راه حل ها باشد،yبا فرض اینکه

m(x,y) بیانگر تعداد ضرب هاي پایه است.

g تابع هدف است که در اینجا ،min می باشد.

5

ضرب زنجیره اي ماتریس ها) ج

: ...درنظر می گیرد xها را به ازاي هر y الگوریتمی که تمام

)brute force(....در این مساله بهینه سازي، بیاییم و تمامی ترتیب هاي ممکن را ایجاد کنیم،

...در هر ترتیب، تعداد ضرب هاي پایه را بشماریم و

.ترتیبی را انتخاب کنیم که کمترین تعداد ضرب هاي پایه را دارد

6

ضرب زنجیره اي ماتریس ها) ج

:brute forceالگوریتم

را در A1, A2, …, Anماتریس nتعداد ترتیب هاي مختلفی باشد که tnفرض کنید .هم می توان در هم ضرب کرد

:خانواده اي از ترتیب ها می تواند به این صورت باشد

...غیر از این خانواده، گروهی دیگر را هم می توان درنظر گرفت که

An آخرین ماتریسی باشد که ضرب می شود.

7

ضرب زنجیره اي ماتریس ها) ج

بنابراین،

t2و از آنجاییکه .، این رابطه بازگشتی به صورت زیر حل می شود1 =

8

ضرب زنجیره اي ماتریس ها) ج

آیا اصل بهینگی در این مساله برقرار است؟

ماتریس اگر داشته باشیم در این nبله، چراکه چنانچه ترتیب بهینه براي ضرب صورت، هر زیر راه حل آن مسلما خود راه حل بهینه براي ماتریس هاي موجود در

.زیر راه حل می باشد

A6تا A1به عنون مثال چنانچه راه حل زیر ترتیب بهینه براي ضرب ماتریس هاي باشد،

...آنگاه

. باشد A4تا A2باید ترتیب بهینه براي ضرب ماتریس هاي 9

ضرب زنجیره اي ماتریس ها) ج

براي آغاز حل مساله ابتدا ساختاري را تعریف می کنیم که بر اساس آن :بتوانیم ویژگی بازگشتی را تعریف کنیم

M ،M فرض کنید در ماتریس [i] [j] برابر با حداقل تعداد ضرب ها براي).باشد i<jچنانچه (باشد Ajتا Aiضرب ماتریس هاي

...بنابراین

M [i] [i] =0

10

ضرب زنجیره اي ماتریس ها) ج

در یکی از حالت هاي زیر قرار A6تا A1ترتیب بهینه براي ضرب شش ماتریس .می گیرد

1. A1 (A2A3A4A5A6)

2. (A1A2) (A3A4A5A6)

3. (A1A2A3) (A4A5A6)

4. (A1A2A3A4) (A5A6)

5. (A1A2A3A4A5) (A6)

11

ضرب زنجیره اي ماتریس ها) ج

آیا ویژگی بازگشتی بدست آمد؟

شبیه هر حل با برنامه نویسی پویا بعد از بدست آوردن ویژگی بازگشتی بایستی .ترتیب اجرایی در برنامه نویسی پیدا کنیم تا مساله از پایین به باال حل شود

به چه نحوي مقدار دهی شود Mیعنی باید مشخص کنیم که المان هاي ماتریس ؟....تا در نهایت

M[1][n] بدست آید.

12

ضرب زنجیره اي ماتریس ها) ج

13

ضرب زنجیره اي ماتریس ها) ج

function [m,P]=minimult(d)

n=length(d)-1; M=zeros(n,n); P=zeros(n,n);

for diagonal=2:n

for i=1:n-diagonal+1

j=i+diagonal-1;

clear values;

for k=i:j-1

values(k)=M(i,k)+M(k+1,j)+d(i)*d(k+1)*d(j+1);

end

[M(i,j),k]=min(values);

P(i,j)=k;

end

end

m=M(1,n);

end14

ضرب زنجیره اي ماتریس ها) ج

for diagonal=2:n

for i=1:n-diagonal+1

j=i+diagonal-1;

for k=i:j-1

end

end

end15

.نشان دهید که حاصل این سیگما برابر با رابطه زیر است: تمرین

ضرب زنجیره اي ماتریس ها) ج

The array P

16

ضرب زنجیره اي ماتریس ها) ج

function order(i,j)

global P;

if (i==j)

disp(['A' num2str(i)]);

else

k=P(i,j);

disp('(');

order(i,k);

order(k+1,j);

disp(')');

end

end

17

حداقل پیچیدگی محاسباتی مساله بهینه سازي ضرب زنجیره اي ماتریس ها با 1) brute forceرویکرد

بیان ویژگی بازگشتی براي این مساله بهینه سازي2)

استفاده از ویژگی بازگشتی و ایجاد برنامه اي که از آن به پاسخ مساله برسد3)

چاپ روش ضرب بهینه با روش تقسیم و حل4)

درس این جلسهپرسش هاي