Loading...

پاورپوینت روش تقسيم و حل Divide and Conqure

پاورپوینت روش تقسيم و حل Divide and Conqure (pptx) 37 اسلاید


دسته بندی : پاورپوینت

نوع فایل : PowerPoint (.pptx) ( قابل ویرایش و آماده پرینت )

تعداد اسلاید: 37 اسلاید

قسمتی از متن PowerPoint (.pptx) :

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) Divide and Conqure 7 Merge sort مراحل مرتب سازی ادغامی برای آرايه ای با n عنصر: 1. تقسيم آرايه به دو زير آرايه هريک با n/2 عضو 2. حل هر زير آرايه با مرتب کردن آن. اگر آرايه به اندازه کافی کوچک نباشد, از بازگشت برای انجام اين کار استفاده می کنيم. 3. ادغام زير آرايه های مرتب شده Divide and Conqure 8 مرتب سازی ادغامی مرحله تقسيم: 310,285,179,652,351,423,861,254,450,520 310,285,179,652,351 423,861,254,450,520 310,285 179,652,351 423,861 254,450,520 310 285 179 652,351 423 861 254 450,520 310 285 179 652 351 423 861 254 450 520 مرحله ادغام: 285,310 179 351,652 423,861 254 450,520 285,310 179,351,652 423,861 254,450,520 179,285,310,351,652 254,423, 450, 520,861 179, 254,285,310,351,423, 450, 520,652,861 Divide and Conqure 9 الگوريتم مرتب سازی ادغامی void mergesort(int n, key s[]) { int h=[n/2],m=n-h; key u[1..h],v[1..m]; if (n>1) { copy s[1..h] to u[1..h]; copy s[h+1..n] to v[1..m]; mergesort(h,u); mergesort(m,v); merge(h,m,u,v,s) } }

نظرات کاربران

نظرتان را ارسال کنید

captcha

فایل های دیگر این دسته