لطفا به نکات زیر در هنگام خرید دانلود فایل پاورپوینت روش تقسيم و حل Divide and Conqure توجه فرمایید.

1-در این مطلب، متن اسلاید های اولیه دانلود فایل پاورپوینت روش تقسيم و حل Divide and Conqure قرار داده شده است 2-به علت اینکه امکان درج تصاویر استفاده شده در پاورپوینت وجود ندارد،در صورتی که مایل به دریافت  تصاویری از ان قبل از خرید هستید، می توانید با پشتیبانی تماس حاصل فرمایید 3-پس از پرداخت هزینه ، حداکثر طی 4 ساعت پاورپوینت خرید شده ، به ادرس ایمیل شما ارسال خواهد شد 4-در صورت  مشاهده  بهم ریختگی احتمالی در متون زیر ،دلیل ان کپی کردن این مطالب از داخل اسلاید ها میباشد ودر فایل اصلی این پاورپوینت،به هیچ وجه بهم ریختگی وجود ندارد 5-در صورتی که اسلاید ها داری جدول و یا عکس باشند در متون زیر قرار نخواهند گرفت

— پاورپوینت شامل تصاویر میباشد —-

اسلاید ۱ :

روش تقسيم و حل    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);

 

 

اسلاید ۲ :

زمان محاسبه تابع 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

اسلاید ۳ :

جستجوی دودويی

مسأله: تعيين اين که آيا x در آرايه مرتب s با اندازه n وجود دارد يا خير.

مثال:n=14                                                                                               

-۱۵,-۶,۰,۷,۹,۲۳,۵۴,۸۲,۱۰۱,۱۱۲,۱۲۵,۱۳۱,۱۴۲,۱۵۱

x=9

low   high   mid    s[mid]

۱        ۱۴       ۷         ۵۴

۱         ۶        ۳         ۰

۴     ۶        ۵         ۹       found

x=-14

low   high   mid    s[mid]

۱        ۱۴       ۷         ۵۴

۱         ۶        ۳         ۰

۱     ۲        ۱       -۱۵

۲         ۲        ۲       -۶

۲         ۱                           not found  

اسلاید ۴ :

الگوريتم 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);

 

 

اسلاید ۵ :

تحليل پيچيدگی زمانی الگوريتم binary search

nدر بدترين حالت: ” i, x > s[i]                                             

    فرض: n=2k

W(n)=W(n/2)+1      n>1

W(1)=1

حل معادله بازگشتی:              

W(n)=lg n+1 Î θ(lg n)

nبهترين حالت برای جستجوی موفق:                       B(n)=c Î θ(۱)      

اسلاید ۶ :

Merge sort

nمراحل مرتب سازی ادغامی برای آرايه ای با n عنصر:

  1. تقسيم آرايه به دو زير آرايه هريک با n/2 عضو
  2. حل هر زير آرايه با مرتب کردن آن. اگر آرايه به اندازه کافی کوچک نباشد, از بازگشت برای انجام اين کار استفاده می کنيم.
  3. ادغام زير آرايه های مرتب شده

اسلاید ۷ :

مرتب سازی ادغامی

مرحله تقسيم:

۳۱۰,۲۸۵,۱۷۹,۶۵۲,۳۵۱,۴۲۳,۸۶۱,۲۵۴,۴۵۰,۵۲۰

۳۱۰,۲۸۵,۱۷۹,۶۵۲,۳۵۱                               ۴۲۳,۸۶۱,۲۵۴,۴۵۰,۵۲۰

  ۳۱۰,۲۸۵             ۱۷۹,۶۵۲,۳۵۱                    ۴۲۳,۸۶۱           ۲۵۴,۴۵۰,۵۲۰ 

۳۱۰    ۲۸۵         ۱۷۹      ۶۵۲,۳۵۱              ۴۲۳        ۸۶۱      ۲۵۴      ۴۵۰,۵۲۰

۳۱۰    ۲۸۵         ۱۷۹    ۶۵۲     ۳۵۱            ۴۲۳        ۸۶۱      ۲۵۴    ۴۵۰    ۵۲۰

مرحله ادغام:

 ۲۸۵,۳۱۰          ۱۷۹      ۳۵۱,۶۵۲                  ۴۲۳,۸۶۱          ۲۵۴     ۴۵۰,۵۲۰

 ۲۸۵,۳۱۰             ۱۷۹,۳۵۱,۶۵۲                    ۴۲۳,۸۶۱            ۲۵۴,۴۵۰,۵۲۰

      ۱۷۹,۲۸۵,۳۱۰,۳۵۱,۶۵۲                                ۲۵۴,۴۲۳, ۴۵۰, ۵۲۰,۸۶۱

                     ۱۷۹, ۲۵۴,۲۸۵,۳۱۰,۳۵۱,۴۲۳, ۴۵۰, ۵۲۰,۶۵۲,۸۶۱

اسلاید ۸ :

الگوريتم مرتب سازی ادغامی

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)

 

 

اسلاید ۹ :

مرتب سازی سریع   Quicksort

اغلب بهترين انتخاب عملی برای مرتب سازی است.(ضرايب ثابت درθ(n lg n) کوچکند)

مرتب سازی درجا است.

مراحل:

  1. تقسيم آرايه A[p..r] به دو زيرآرايه A[p..q-1] وA[q+1..r] به طوری که هر عنصر A[p..q-1] کوچکتر يا مساوی A[q] است و A[q] کوچکتر يا مساوی هريک از عناصر A[q+1..r] می باشد.
  2. دو زير آرايه A[p..q-1] وA[q+1..r] را با فراخوانی های بازگشتی مرتب سازی سريع مرتب می کنيم.

اسلاید ۱۰ :

روال تقسیم برای زیرآرایه A[p..r]

void partition(key a[], int p, int r)

{

   int i,j;

   key x;

   x=a[r];                   عنصر محوری

   i=p-1;

   for (j=p ; j <= r-1 ; j++)

      if (a[j] <= x)عملگر مبنايی                

      { i++;

         exchange(a[i],a[j]);

 

    exchange(a[i+1],a[r]);

    return(i+1);