انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: کمک برای یادگیری طراحی الگوریتم  (دفعات بازدید: 7774 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #15 : 19 آذر 1391، 04:21 ب‌ظ »
خودم تو یک کد ساده موندم مثل خر
اونو ردیف کردم میگم

آفلاین adel1368

  • Sr. Member
  • *
  • ارسال: 387
  • جنسیت : پسر
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #16 : 19 آذر 1391، 05:59 ب‌ظ »
خودم تو یک کد ساده موندم مثل خر
اونو ردیف کردم میگم
نقل‌قول
:-X :-X

--------------------------------------------------------------------------------------
آخه ما یه استاد داریم میرسه کلاس نه سلام نه علیک ماژیک وپاکن میگره دستش اینجوری میکنه

با یه دست مینویسه               بایه دست دیگه پاک میکنه
حالا شانس آوردیم تو کلاس تند نویس داریم والا .............
(((خالیق یازان خطی هش کیم پوزابیلمز)))

آفلاین سید مسعود امامیان

  • Hero Member
  • *
  • ارسال: 951
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #17 : 19 آذر 1391، 06:05 ب‌ظ »
جزوه های زیادی توی اینترنت هست ! می تونید از اون ها استفاده کنید .
به عمل کار برآید     به سخندانی نیست . . .

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #18 : 19 آذر 1391، 07:21 ب‌ظ »
function find_max ( T , low , high)
{
  if (low==high)
   return T[low]

  else
   if (high == low+1)
       if (T[high] > T [low])
           return T[high]
       else
           return T[low]

   else
       {
       mid=floor((high+low)/2)
       LMAX=find_max(T,low,mid)
       RMAX=find_max(T,mid+1,high)
       return MAXIMUM(LMAX,RMAX)
       }
}

اینجوری برهان میاریم :
نخست می بینیم الگوریتم چکار میکنه . الگوریتم میاد برای یافتن بزرگترین عدد در یک آرایه نخست نگاه میکنه ببینه آیا آرایه تک عنصر داره یا بیش از یک عنصر . اگر تک عنصر داره میاد همون تک عنصر رو به نشانه ی بزرگترین عنصر برمیگردونه
پس از اینجا در می یابیم که بهترین حالت برای این الگوریتم با یک if ساده انجام میشه . پس مرتبه این الگوریتم در بهترین حالت میشه 1 .
در حالت میانگین الگوریتم میاد آرایه رو به دو بخش میکنه
floor((high+low)/2سپس توی هر بخش بیشینه رو میابه :LMAX=find_max(T,low,mid)
RMAX=find_max(T,mid+1,high
یعنی داریم :t(n) = 2t(n/2)n/2 یعنی الگوریتم روی نیمی از درآیند ( وردوی ) کار میکنه . چون دو بار روی نیمی از ورودی کار کردیم میشه
2t(n/2)در پایان میایم بیشینه رو میان بیشینه ی  چپ و بیشینه ی راست میابیم :
return MAXIMUM(LMAX,RMAX)اینم میشه یک کار .
پس زمان مصرفی برابره با

t(n) = 2 t(n/2)+1حالا شما از روی فرمولها مرتبه میانگین این خوارزمی رو بگو

آفلاین adel1368

  • Sr. Member
  • *
  • ارسال: 387
  • جنسیت : پسر
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #19 : 20 آذر 1391، 10:14 ب‌ظ »
ممنون از پاسخی که دادین

2تا سوال تو کد بالا از 3تاif استفاده شده یعنی مرتبه این الگوریتم (1)Oهتسش
اگه بجای if از حلقه for استفاده میکردیم اون موقع جواب چه جوری میشد

.
.
.
.
.
.
میترسم این واحدو چند ترم  پشت سرم هم بردارم (اصلا تو مخم نمیره)
(((خالیق یازان خطی هش کیم پوزابیلمز)))

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #20 : 22 آذر 1391، 06:05 ب‌ظ »
این برهان که سه تا شرط داره پس مرتبه 1 هستش نادرسته
باید الگوریتم رو تا پایان بخونی
نخست باید بفهمی الگوریتم چکار میکنه سپس T(n) رو براش بسازی و سپس میتونی درباره ی مرتبه اش اظهار نظر کنی