61
1 م ها ت ي ور گ ل ا ي ح را طComputer algorithms ا وی پ ی ز ی امه ر زی! ی

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

  • Upload
    yul

  • View
    106

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: طراحي الگوريتم ها

1

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

Computer algorithms

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

Page 2: طراحي الگوريتم ها

2

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

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

Page 3: طراحي الگوريتم ها

3

Week9

Computer algorithms

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

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

Page 4: طراحي الگوريتم ها

4

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

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

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

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

Page 5: طراحي الگوريتم ها

5

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

Page 6: طراحي الگوريتم ها

6

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

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

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

کرد استفاده

Page 7: طراحي الگوريتم ها

7

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

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

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

Page 8: طراحي الگوريتم ها

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

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

Page 9: طراحي الگوريتم ها

9

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

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

Page 10: طراحي الگوريتم ها

10

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

Page 11: طراحي الگوريتم ها

11

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

Page 12: طراحي الگوريتم ها

12

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

Page 13: طراحي الگوريتم ها

13

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

Page 14: طراحي الگوريتم ها

14

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

آرایهB

+

Page 15: طراحي الگوريتم ها

15

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

Page 16: طراحي الگوريتم ها

16

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

Page 17: طراحي الگوريتم ها

17

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

Page 18: طراحي الگوريتم ها

18

Page 19: طراحي الگوريتم ها

19

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

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

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

Page 20: طراحي الگوريتم ها

20

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

Page 21: طراحي الگوريتم ها

21

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

Page 22: طراحي الگوريتم ها

22

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

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

Page 23: طراحي الگوريتم ها

23

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

Page 24: طراحي الگوريتم ها

24

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

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

Page 25: طراحي الگوريتم ها

25

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

Page 26: طراحي الگوريتم ها

26

Page 27: طراحي الگوريتم ها

27

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

Page 28: طراحي الگوريتم ها

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 داریم

Page 29: طراحي الگوريتم ها

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 << “(”; } }

Page 30: طراحي الگوريتم ها

30

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

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

Page 31: طراحي الگوريتم ها

31

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

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

Page 32: طراحي الگوريتم ها

32

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

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

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

Page 33: طراحي الگوريتم ها

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

Page 34: طراحي الگوريتم ها

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دیگر

Page 35: طراحي الگوريتم ها

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

Page 36: طراحي الگوريتم ها

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

Page 37: طراحي الگوريتم ها

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

Page 38: طراحي الگوريتم ها

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

Page 39: طراحي الگوريتم ها

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= ∞

Page 40: طراحي الگوريتم ها

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= ∞

Page 41: طراحي الگوريتم ها

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= ∞

Page 42: طراحي الگوريتم ها

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= ∞

Page 43: طراحي الگوريتم ها

43

الگوریتم

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

Page 44: طراحي الگوريتم ها

44

الگوریتم

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

Page 45: طراحي الگوريتم ها

45

الگوریتم

Page 46: طراحي الگوريتم ها

46

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

Page 47: طراحي الگوريتم ها

47

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

Page 48: طراحي الگوريتم ها

48

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

Page 49: طراحي الگوريتم ها

49

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

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

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

Page 50: طراحي الگوريتم ها

50

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

متعادل درخت

Page 51: طراحي الگوريتم ها

51

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

Page 52: طراحي الگوريتم ها

52

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

Page 53: طراحي الگوريتم ها

53

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

هریک

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

Page 54: طراحي الگوريتم ها

54

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

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

بود

Page 55: طراحي الگوريتم ها

55

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

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

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

Page 56: طراحي الگوريتم ها

56

مثال

Page 57: طراحي الگوريتم ها

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

Page 58: طراحي الگوريتم ها

58

ساختار آرایه

Aکمکی

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

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

Page 59: طراحي الگوريتم ها

59

مثال

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

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

Page 60: طراحي الگوريتم ها

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 جستجو هزینه آرایه

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

ها ماتریس ضرب

Page 61: طراحي الگوريتم ها

61

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