حجم فایل : 128.6 KB
نوع فایل : پاور پوینت
تعداد اسلاید ها : 37
Divide and Conqure 1 روش تقسيم و حل Divide and Conqure
Divide and Conqure 2 روش تقسيم و حل Divide and Conqure
يک نمونه از مسأله را به دو يا چند قسمت کوچکتر تقسيم ميکند که معمولا نمونه هايی از مسأله اصلی هستند. اگر جواب مسأله های کوچکتر به راحتی محاسبه شود, می توان جواب نمونه اصلی را با ترکيب اين جوابها به دست آورد, در غير اين صورت ميتوان آنها را به نمونه های کوچکتر تقسيم کرد .
يک روش بالا به پايين است.
Algorithm DAndC(P)
{ if Small(P) return Solve(P);
else
{ divide P into smaller instances P1,P2,…,Pk, k>=1;
Apply DAndC to each of these subproblems;
return Combine(DAndC(P1),DAndC(P2),…,DAndC(Pk);
}
} Divide and Conqure 3 زمان محاسبه تابع DAndC T(n)= g(n) کوچک باشد n
T(n1)+ T(n2)+…+ T(nk)+f(n) درغيراينصورت
g(n): زمان لازم برای محاسبه مستقيم پاسخ برای ورودی های کوچک
: f(n) زمان لازم برای تقسيم مسأله و ترکيب راه حلها
معمولا:
T(n)= T(1) n=1
aT(n/b)+f(n) n>1
Divide and Conqure 4 جستجوی دودويی مسأله: تعيين اين که آيا x در آرايه مرتب s با اندازه n وجود دارد يا خير.
مثال:n=14
-15,-6,0,7,9,23,54,82,101,112,125,131,142,151
x=9
low high mid s[mid]
1 14 7 54
1 6 3 0
4 6 5 9 found
x=-14
low high mid s[mid]
1 14 7 54
1 6 3 0
1 2 1 -15
2 2 2 -6
2 1 not found
Divide and Conqure 5 الگوريتم binary search int binsearch(int low,int high)
{ int mid;
if (low > high) return 0;
else
{ mid=[(low+high)/2]; عملگر مبنايی
if (x==s[mid])
return mid;
else if(x < mid)
return binsearch(low,mid-1);
else return binsearch(mid+1,high);
}
} Divide and Conqure 6 تحليل پيچيدگی زمانی الگوريتم binary search در بدترين حالت: i, x > s[i]
فرض: n=2k
W(n)=W(n/2)+1 n>1
W(1)=1
حل معادله بازگشتی:
W(n)=lg n+1 θ(lg n)
بهترين حالت برای جستجوی موفق: B(n)=c θ(1) ...
مبلغ واقعی 18,824 تومان 20% تخفیف مبلغ قابل پرداخت 15,059 تومان