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

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

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

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

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

آفلاین adel1368

  • Sr. Member
  • *
  • ارسال: 387
  • جنسیت : پسر
کمک برای یادگیری طراحی الگوریتم
« : 17 آذر 1391، 08:58 ب‌ظ »
با سلام:

 من این طراحی الگوریتم رو نمی تونم خوب یاد بگیرم دوستان میتونن مرجعی

رومعرفی کنن برای یادگیریش 


 بجز این کتاب
طراحی الگوریتم ها

تالیف :
ریچارد نپولیتان
کیمرث  نعیمی پور


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

آفلاین کیان

  • High Hero Member
  • *
  • ارسال: 2338
  • جنسیت : پسر
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #1 : 18 آذر 1391، 12:25 ق‌ظ »
زبان غیرمادری مسلطی؟

آفلاین adel1368

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

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

آفلاین 不眠症

  • Full Member
  • *
  • ارسال: 191
  • جنسیت : پسر
    • lazygeek
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #3 : 18 آذر 1391، 01:50 ب‌ظ »
به زبان مادری این سایت خوبه
http://www.algorithmha.ir/

به غیر از خواندن نوشتن مساله و توضیح برای خود(راه حل به صورت قدم به قدم) با صدای بلند راه‌گشاست (جدی)
بیشتر از تئوری میخوای یادبگیری پیاده سازی مساله و دیدن نتیجه(خروجی) و متغییرها به اصطلاح بازی بازی شود تا منطق کار درک شود. خوبی این کار اینه که با پیچاندن مسئله پیچش نمیخوری چون قبلش پیچش دادی یعنی بازی بازی کردی

به زبان غیر مادری
 یه کتاب خوب هست ولی چون وقت نداری توصیه نمی‌کنم
http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202/ref=sr_1_1?ie=UTF8&qid=1354961883&sr=8-1&keywords=algorithm+design+manual

اگر بیشتر نیاز داشتی بعضی سایتها هستند که به صورت پراکنده الگوریتم های مختلفی رو شرح می‌دهند بگو تا به اونها هم لینک بدم

آفلاین adel1368

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

#-o
نقل‌قول
زبان مادری من یه زبان دیگه ست

ممنون به خاطر معرفی سایت
(((خالیق یازان خطی هش کیم پوزابیلمز)))

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #5 : 18 آذر 1391، 05:04 ب‌ظ »
بهترین راه آموختن یک خوارزمی ، پیاده سازی آن به زبانیست که بر ان چیره و مسلط استید.
این ترم بنده هم  این درس را دارم ، هر جا مشکل داشتید بفرمایید

آفلاین adel1368

  • Sr. Member
  • *
  • ارسال: 387
  • جنسیت : پسر
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #6 : 18 آذر 1391، 05:52 ب‌ظ »
مشکل اصلی من محاسبه پیچیدگی بازگشتی هاست
مثلا این:
t(n)=2t(n/2)+n-1
t(1)=0

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

آفلاین امین - am1n

  • Sr. Member
  • *
  • ارسال: 467
  • جنسیت : پسر
  • ... روش دین توضیح شناخته‌ها بوسیله ناشناخته‌هاست!!
    • دات امین / حرف های آزاد من
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #7 : 18 آذر 1391، 07:50 ب‌ظ »
مشکل اصلی من محاسبه پیچیدگی بازگشتی هاست
مثلا این:
t(n)=2t(n/2)+n-1
t(1)=0

میشه روش حل کردنش رو بگین

درختش رو باید رسم کنی دیگه. آسونه ... حالا من کاغذ و مداد ندارم الان  ;D




       t (n)          ->>>  n
   t(n/2)      t(n/2)      ->>> n/2 + n/2 = n

t(n/4)   t(n/4)      ......      ->>> n/4 + n/4 + n/4 + n/4 =n


بعدش کل n هارو با هم جمع میکنی. که میشه D تا n . که D همون عمق درخته . ینی به اندازه ی D   این n ها با هم جمع میشن ... واضح بود ؟

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

  • Hero Member
  • *
  • ارسال: 951
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #8 : 18 آذر 1391، 08:08 ب‌ظ »
مشکل اصلی من محاسبه پیچیدگی بازگشتی هاست
مثلا این:
t(n)=2t(n/2)+n-1
t(1)=0

میشه روش حل کردنش رو بگین

به نظرم باید ابتدا روش رو فهمید ! مثلاً عدد گذاری تا چند رقم بعد ...

کتاب زیر کتاب خیلی خوبیه (فقط 1313 صفحه است ) :
نقل‌قول

t._cormen_-_introduction_to_algorithms_3rd_edition


دریافت :


خیلی مضحک هس که این انجمن قابلیت " اتصال فایل ضمیمه " نداره !
به عمل کار برآید     به سخندانی نیست . . .

آفلاین adel1368

  • Sr. Member
  • *
  • ارسال: 387
  • جنسیت : پسر
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #9 : 18 آذر 1391، 09:27 ب‌ظ »
ممنون بخاطر کتاب




با تشکر از همه دوستان



(((خالیق یازان خطی هش کیم پوزابیلمز)))

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #10 : 18 آذر 1391، 10:23 ب‌ظ »
مشکل اصلی من محاسبه پیچیدگی بازگشتی هاست
مثلا این:
t(n)=2t(n/2)+n-1
t(1)=0

میشه روش حل کردنش رو بگین

این الگوریتم به اصطلاح از گونه ی تقسیم و غلبه (  divide and conquer )  است . برای این الگوریتم ها میانگین مرتبه را از روی فرمول زیر بدست می آوریم :
نخست فرمول را به شکل استاندارد زیر میگیریم :
t(n)  = at(n/b)+C(n^k) سپس میانگین برابر است با : if a>b^k =>n^log(a,b)
if a=b^k =>(n^k)*log(n)
if a<b^k =>n^k
چون در نمونه ای که دادید :a=2 b=2 k=1
a=b^k
میانگین مرتبه از رده :(n^k) * log(n)است . که چون k=1 برابر است با nlogn  .

آفلاین adel1368

  • Sr. Member
  • *
  • ارسال: 387
  • جنسیت : پسر
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #11 : 18 آذر 1391، 10:35 ب‌ظ »
مشکل اصلی من محاسبه پیچیدگی بازگشتی هاست
مثلا این:
t(n)=2t(n/2)+n-1
t(1)=0

میشه روش حل کردنش رو بگین

این الگوریتم به اصطلاح از گونه ی تقسیم و غلبه (  divide and conquer )  است . برای این الگوریتم ها میانگین مرتبه را از روی فرمول زیر بدست می آوریم :
نخست فرمول را به شکل استاندارد زیر میگیریم :
t(n)  = at(n/b)+C(n^k) سپس میانگین برابر است با : if a>b^k =>n^log(a,b)
if a=b^k =>(n^k)*log(n)
if a<b^k =>n^k
چون در نمونه ای که دادید :a=2 b=2 k=1
a=b^k
میانگین مرتبه از رده :(n^k) * log(n)است . که چون k=1 برابر است با nlogn  .
استادمون این مسئله و حل کرده بود وجوابی شما آوردید اورده بود ولی روش حلش رو نگفته منم که زیادی باهوشم نمیتونستم حلش کنم ولی الان روش حلرو دونستم

اگه زحمتی نباشه میشه یک مثال دیگه حل کنید( :oops:)
(((خالیق یازان خطی هش کیم پوزابیلمز)))

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #12 : 18 آذر 1391، 11:10 ب‌ظ »
ببینید کلا این روش زمانی کاربرد داره که الگوریتم به همون شکل استانداردی که نوشتم باشه و نه شکل دیگه ای .
یعنی . این الگوریتم ها زمانی بدست میاد که توی الگوریتم ، پرسش رو بجای اینکه بیایم یکراست حل کنیم میایم یک دوم ، یک سوم ، یک دهم از اون پرسش رو حل میکنم ( بخش at(n/b) ) ، سپس میایم یک کارایی روی بخش هایی که حل کردیم و نکردیم انجام میدیم ( مثلا سرهم کردن merge ) که بخش ( C( n^K  رو میسازه . سپس میایم از روی سه شرطی که گفتم میانگین مرتبه رو بدست میاریم
الگوریتم های مرتب کردن ادغامی و سریع و اینها از این دسته است
اگر کتاب دم دستت داری بخش (( ضرب اعداد صحیح بزرگ از روش تقسیم و غلبه )) رو بخون
اونم یک نمونه از این دسته است

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #13 : 18 آذر 1391، 11:21 ب‌ظ »
حالا من یک الگوریتم مینویسم ( یافتن بزرگترین عدد در یک آرایه ) شما نخست t(n) رو براش بساز سپس بگو میانگین مرتبه اش چیه :
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)
       }
}

آفلاین adel1368

  • Sr. Member
  • *
  • ارسال: 387
  • جنسیت : پسر
پاسخ : کمک برای یادگیری طراحی الگوریتم
« پاسخ #14 : 19 آذر 1391، 01:45 ب‌ظ »
حالا من یک الگوریتم مینویسم ( یافتن بزرگترین عدد در یک آرایه ) شما نخست t(n) رو براش بساز سپس بگو میانگین مرتبه اش چیه :
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)
       }
}
میشه روش حلش رو همبگید
(((خالیق یازان خطی هش کیم پوزابیلمز)))