طراحي الگوريتم ها
DESCRIPTION
طراحي الگوريتم ها. Computer algorithms. برنامه ریزی پویا. فصل ششم روش برنامه ریزی پویا در طراحی الگوریتم. Computer algorithms. مساله ضریب چند جمله ای مساله فلوید مساله فروشنده دورگرد مساله درختهای جستجوی دودویی بهینه مساله کوله پشتی صفر و یک. Week 9. برنامه نویسی پویا ، - PowerPoint PPT PresentationTRANSCRIPT
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آرایه خروجی