طراحي الگوريتم ها

Post on 21-Jan-2016

106 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

طراحي الگوريتم ها. Computer algorithms. برنامه ریزی پویا. فصل ششم روش برنامه ریزی پویا در طراحی الگوریتم. Computer algorithms. مساله ضریب چند جمله ای مساله فلوید مساله فروشنده دورگرد مساله درختهای جستجوی دودویی بهینه مساله کوله پشتی صفر و یک. Week 9. برنامه نویسی پویا ، - PowerPoint PPT Presentation

TRANSCRIPT

1

طراحي ها الگوريتم

Computer algorithms

پویا ریزی برنامه

2

ششم فصلدر پویا ریزی برنامه روش

الگوریتم طراحی

3

Week9

Computer algorithms

مساله ضریب چند جمله ایمساله ضریب چند جمله ایمساله فلوید مساله فلوید مساله فروشنده دورگردمساله فروشنده دورگرد مساله درختهای جستجوی دودویی مساله درختهای جستجوی دودویی

بهینهبهینهمساله کوله پشتی صفر و یک مساله کوله پشتی صفر و یک

4

پویا نویسی ، برنامه شود می تقسیم کوچکتر های نمونه به نمونه

است حل و تقسیم روش مشابه : نمونه نخست که وحل تقسیم به نسبت تفاوت این با

کنیم می ذخیره را نتایج ، کنیم می حل را تر کوچک هایجای به شد، پیدا نیاز ها آن از یکی به گاه هر بعدا و

. کنیم بازیابی را آن است کافی دوباره محاسبه

5

نمایی روش باال به پایین•

6

روش به را مسئله اگر سازی بهینه مسائل درحاالت تمام بررسی روش با یا و وحل تقسیم

از بعضی در حتی و نمایی پیچیدگی دهیم انجام( نمایی از بدتر با( !nمسائل ولی بود خواهد

به زمان پویا ریزی برنامه حل راه n3یا n2یافتنکمکی آرایه یک از باید عوض در اما میکند تقلیل

کرد استفاده

7

روش اصلی مولفه DPسه

( این کمک به مساله در موجود بازگشتی رابطه) میکنیم تعریف بهینه حل راه برای مقداری رابطه

مسئله از ای نمونه حل برای بازگشتی ویژگی یک ارائه جدولی محاسبات) ( بهینه حل راه چاپ برای جواب ردیابی

8

فیبوناتچی مساله

F10

F9

F8

F8

F7F7F6

F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10

0 1 1 2 3 5 8 13 21 34 55

کاهش برای جدول از استفادهمجدد محاسبات میزان

9

برنامه روش به فیبوناتچی مسالهپویا نویسی

نتایج ذخیره آرایه

10

ای دوجمله ضریب مساله

11

ضریب مساله حل و تقسیم روشای دوجمله

12

)C)5,2محاسبه

13

ضریب روش مساله پویا نویسی برنامهای دوجمله

14

ای دوجمله ضریب مساله

آرایهB

+

15

ای دوجمله ضریب مساله

16

ضریب مساله زمان پیچیدگیای دوجمله

17

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

18

19

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

حاالت تمام بررسی که معمولی روش پیچیدگیباشد می نمایی است

tn :ضرب مختلف های ترتیب ماتریس nتعداد

20

مساله سازی بهینه ایده

21

ماتریس Mتعریف

22

برای مثالM[i][j]مقدار

: کلی سازی بهینه رابطه

23

ماتریس اساس بر کلی Mرابطه

24

قطری صورت به محاسبات انجام

:شش برای مثالقبل اسالید ماتریس

25

: محاسبه نحوه قبل اسالید 64ادامه

26

27

: محاسبه نحوه قبل اسالید ادامه132

28

N :ها ماتریس تعداد d :ها ماتریس ابعاد معرف

آرایه شود Pاز می استفاده مطلوب خروجی نمایش برای

int minimult ) int n, const int d [], index P [][] ( { index i , j , k , diagonal; int M [1..n] [1..n]; for ) i = 1 ; i ≤ n ; i ++( M [i] [i] = 0;

for )diagonal = 1; diagonal ≤ n -1 ; diagonal ++( for ) i = 1 ; i ≤ n – diagonal ; i ++(

{ j = i + diagonal ; M[i][j] = minimum )M[i][k] + M[k +1 ][j] + d [ i – 1] * d [k] * d [j](; P [i][j] = a value of k that gave the minimum; } return M[1][n]; }

محاسبه برایMin یک به نیاز

به forحلقه تعداد اندازه

diagonal داریم

29

ضرب Pآرایه مثال ماتریس 6برایبهینه ترتیب چاپ الگوریتم

void order ) index i, index j( { if ) i == j( cout << “A” << i ; else { k = P [i] [j]; cout << “)“; order ) i , k(; order ) k +1 , j (; cout << “(”; } }

30

: کوتاهترین یافتن فلوید الگوریتممسیرها

است دار وزن و دار جهت مسیرها گراف

31

: کوتاهترین یافتن فلوید الگوریتممسیرها

حالت از بدترنمایی

32

ماتریس دو تعریف

W وزنها ماتریسD نمایش ماتریس

مسیر کوتاهترین دهنده

33

5

1

4

2

3

9

1

5

3

4

3

2

2

31

1 2 3 4 5

1 0 1 ∞ 1 5

2 9 0 3 2 ∞

3 ∞ ∞ 0 4 ∞

4 ∞ ∞ 2 0 3

5 3 ∞ ∞ ∞ 0

34

5

1

4

2

3

9

1

5

3

4

3

2

2

31

1 2 3 4 5

1 0 1 ∞ 1 5

2 9 0 3 2 ∞

3 ∞ ∞ 0 4 ∞

4 ∞ ∞ 2 0 3

5 3 ∞ ∞ ∞ 0

گره وضعیت های 2بررسی گره تاگره طریق از 1دیگر

35

5

1

4

2

3

9

1

5

3

4

3

2

2

31

1 2 3 4 5

1 0 1 ∞ 1 5

2 9 0 3 2 ∞

3 ∞ ∞ 0 4 ∞

4 ∞ ∞ 2 0 3

5 3 ∞ ∞ ∞ 0

گره وضعیت گره 2بررسی 4 3,تاگره طریق 1از

D0[2,3]= 3D0[2,1]+D0 [1,3]=9+∞=∞

D0[2,4]= 2

D0[2,1]+D0[1,4]=9+1

36

5

1

4

2

3

9

1

5

3

4

3

2

2

31

1 2 3 4 5

1 0 1 ∞ 1 5

2 9 0 3 2 14

3 ∞ ∞ 0 4 ∞

4 ∞ ∞ 2 0 3

5 3 ∞ ∞ ∞ 0

گره وضعیت گره 2بررسی از 5تاگره 1طریق

D0[2,5]= ∞ D0[2,1]+D0[1,5]=9+5=14

D1

37

5

1

4

2

3

9

1

5

3

4

3

2

2

31

1 2 3 4 5

1 0 1 ∞ 1 5

2 9 0 3 2 14

3 ∞ ∞ 0 4 ∞

4 ∞ ∞ 2 0 3

5 3 4 ∞ 4 0

گره ) ( تا یک جز به دیگر های گره وضعیت بررسیگره طریق از دیگر 1های

D114 4

4

38

5

1

4

2

3

9

1

5

3

4

3

2

2

31

1 2 3 4 5

1 0 1 ∞ 1 5

2 9 0 3 2 14

3 ∞ ∞ 0 4 ∞

4 ∞ ∞ 2 0 3

5 3 4 ∞ 4 0

) تا ) دو و یک جز به دیگر های گره وضعیت بررسیگره طریق از دیگر های 2گره

D214 4

39

5

1

4

2

3

9

1

5

3

4

3

2

2

31

1 2 3 4 5

1 0 1 ∞ 1 5

2 9 0 3 2 14

3 ∞ ∞ 0 4 ∞

4 ∞ ∞ 2 0 3

5 3 4 ∞ 4 0

D214 4

گره وضعیت طریق 3بررسی از دیگر های گره تا2گره

D1[3,4]= 4 D1[3,2]+D1[2,4]=3+4=7

D1[3,5]= ∞ D1[3,2]+D1[2,5]= ∞ +14= ∞

40

5

1

4

2

3

9

1

5

3

4

3

2

2

31

1 2 3 4 5

1 0 1 ∞ 1 5

2 9 0 3 2 14

3 ∞ ∞ 0 4 ∞

4 ∞ ∞ 2 0 3

5 3 4 ∞ 4 0

D214 4

گره وضعیت طریق 3بررسی از دیگر های گره تا2گره

D1[3,4]= 4 D1[3,2]+D1[2,4]=3+4=7

D1[3,5]= 4 D1[3,2]+D1[2,5]= ∞ +14= ∞

41

5

1

4

2

3

9

1

5

3

4

3

2

2

31

1 2 3 4 5

1 0 1 ∞ 1 5

2 9 0 3 2 14

3 ∞ ∞ 0 4 ∞

4 ∞ ∞ 2 0 3

5 3 4 ∞ 4 0

D214 4

گره وضعیت طریق 4بررسی از دیگر های گره تا2گره

D1[4,1]= ∞ D1[4,2]+D1[2,1]= ∞ +9= ∞

D1[4,3]= 2 D1[4,2]+D1[2,3]= 2 +5= 7

D1[4,5]= 3 D1[4,2]+D1[2,5]= ∞ +14= ∞

42

5

1

4

2

3

9

1

5

3

4

3

2

2

31

1 2 3 4 5

1 0 1 ∞ 1 5

2 9 0 3 2 14

3 ∞ ∞ 0 4 ∞

4 ∞ ∞ 2 0 3

5 3 4 7 4 0

D214 4

گره وضعیت طریق 5بررسی از دیگر های گره تا 2D1[5,1]= 3گره

D1[5,2]+D1[2,1]=4 +9= 13

D1[5,3]= ∞ D1[5,2]+D1[2,3]= 4 +3= 7

D1[4,5]= 3 D1[4,2]+D1[2,5]= ∞ +14= ∞

43

الگوریتم

است Dهمان مساله نهایی جواب که

44

الگوریتم

از عبور vkاز vjتا viمسیرنمیکند

45

الگوریتم

46

الگوریتم از مثال

47

فلوید الگوریتم ساده شمای

48

فلوید الگوریتم

49

بهینه جستجوی درخت مساله

برای بهینه جستجوی درخت بهترین شناسایی الگوریتم عنصر nهدفاحتمال عنصر هر برای باشیم piاگر داشته شدن جستجو برای

اگرpi درخت که است وقتی حالت بهترین باشد برابر هم با هاباشد متعادل

50

جستجو درخت مثال

متعادل درخت

51

دودویی جستجوی الگوریتم

52

جستجو زمان متوسط

53

دودویی: جستجوی درخت حاالت مثالجستجوی احتماالت با کلید سه برای

هریک

و 5درخت حاالت تمام درنظرگرفتن با که است مثال این برای بهینه دودویی درخت ( روش رسیدیم آن به حاالت (Brute Forceمقایسه

54

الگوریتم Brute Forceزمان

است نمایی دودویی درخت حاالت تعداد چونخواهد نمایی درخت بهترین یافتن زمان حداقل

بود

55

پویا ریزی برنامه الگوریتم ایده

: کمکی آرایه ساختار خانه آن A[i][j]هر در که درختی جستجوی زمان میانگین حداقل

دارد Kjتا Kiکلیدهای وجودA[i][i]= pi

56

مثال

57

درخت در کلید یک kجستجوی

A[1][k-1]+p1+p2+p3+. . . +pk-1+pk+A[k+1][n]+pk+1+pk+2+. . . pn=

A[1][k-1]+A[k+1][n]+∑pi

58

ساختار آرایه

Aکمکی

راس شدن افزوده عنوان kبا بههای گره برای درخت به jتا iریشه

هزینه به رخداد احتمال اندازهشود می افزوده جستجو

59

مثال

A[1][2] = min{k=1: a[1][0]+a[2][2] } +)p1+p2(

Min{3/8}+3/8+3/8 = 9/8

60

void optsearchtree ) int n , const float p[]; float & minavg, index R[][](

{ index i , j , k , diagonal ; float A [1..n + 1] [0..n];

for ) i = 1 ; i ≤ n ; i ++( { A [i] [i -1] = 0 A [i] [i] = p [i]; R [i] [i] = i ; R [i] [ i – 1 ] = 0;}A[ n + 1 ] [n] = 0 ;R[ n + 1 ] [n] = 0 ;for )diagonal = 1;diagonal ≤ n – 1; diagonal++( for ) i = 1; i ≤ n – diagonal ; i ++( { j = i + diagonal ; A[i][j] = minimum)A[i][k-1]+A[k+1][j](+∑pm R[i][j] = a value of k that gave the minimum; }minavg = A [1][n];

}

P :احتماالت

Minavg : میانگین حداقلشده یافته جستجو

R بهینه درخت

A جستجو هزینه آرایه

یافتن شبیه الگوریتمبرای هزینه کمترین

ها ماتریس ضرب

61

براساس بهینه دودویی درخت ساختالگوریتم Rآرایه خروجی

top related