Upload
faradars
View
55
Download
5
Embed Size (px)
Citation preview
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
بازگشت پذیری
و
الگوریتم های بازگشتی
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
آنعمیمتباوگرفتکمکدیگریمقادیربامشابهروشیازتوانمیمسایلبعضیحلوتعریفدر
5بااستبرابرفاکتوریل5یمئبگوتوانیممیفاکتوریلتعریفدرمثالطوربه.کردحلرااصلیمسئله
.استشدهاستفادهخودشازفاکتوریلتعریفبرایدیگرعبارتبه.فاکتوریل4ضربدر
!4 ×5! =51 ×2 ×3 ×4 ×5! =5
ودشخازتابعیدراگرحالکرداستفادهدیگرتوابعازتوانمیتابعداخلدرنویسیبرنامهدیداز
داخلبتواندکهایبرنامهزیریاتابعهردیگرعبارتبه.شودمیگفتهبازگشتیتابعآنبهشود،استفاده
.گویندمیبازگشتیبرنامهزیریاتابعبزندصدایاکندفراخوانیدوبارهراخودشاشبدنه
الگوریتم های بازگشتیآموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
:هستندمهمنقطهدودارایشود،میگفتهنیزتلسکوپیتوابعآنهابهکهبازگشتیهایبرنامهزیر
.کندفراخوانیرابرنامهزیریاتابعدوبارهکهدستوری:بازگشتنقطه-1
.شودهابازگشتاتمامباعثمشخصشرطیکباکهدستوری:بستبننقطه-2
الگوریتم های بازگشتی
𝑛! = 𝑛 × 𝑛 − 1 !0! = 1! = 1
𝑎𝑏 = 𝑎 × 𝑎𝑏−1
𝑎0 = 1
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
تابعآنبهداشتیم،نیازقبلمرحلهدرتابعمقداربهفقطام،nمرحلهدرتابعمقدارمحاسبهبرایاگر
مرحلهدودرتابعمقداربهام،nمرحلهدرتابعمقدارمحاسبهبرایاگر.شودمیگفتهاولمرتبهبازگشتی
اولمرتبهشتیبازگرابطهیکزیررابطه.شودمیگفتهدوممرتبهبازگشتیتابعآنبهداشتیم،نیازقبل
𝑏𝑖واستمتجانس ,𝑖 = 1,2,… ,𝑛هستندثابتمقادیرها.
𝑇 𝑛 = 𝑏𝑛𝑇 𝑛 − 1 , 𝑛 > 0
𝑇 0 = 𝑏0
الگوریتم های بازگشتیآموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
𝑏𝑖وشودمینامیدهنامتجانساولمرتبهبازگشتیرابطهیکزیررابطه ,𝑐𝑖 ,𝑖 = 1,2,… ,𝑛ثابتمقادیر.هستند
𝑇 𝑛 = 𝑏𝑛𝑇 𝑛 − 1 + 𝑐𝑛 , 𝑛 > 0
𝑇 0 = 𝑏0
.هستندثابتمقادیرdوa،b،cوشودمینامیدهمتجانسدوممرتبهبازگشتیرابطهیکزیررابطه
𝑇 𝑛 = 𝑎𝑇 𝑛 − 1 + 𝑏𝑇 𝑛 − 2 , 𝑛 > 1
𝑇 0 = 𝑐 , 𝑇 1 = 𝑑
الگوریتم های بازگشتیآموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
الگوریتم های بازگشتی
𝑛! = 𝑛 × 𝑛 − 1 !0! = 1! = 1
محاسبه فاکتوریل به روش بازگشتی
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
الگوریتم های بازگشتی
محاسبه توان به روش بازگشتی
𝑎𝑏 = 𝑎 × 𝑎𝑏−1
𝑎0 = 1
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
الگوریتم های بازگشتی
𝑓𝑖 = 𝑓𝑖−1 + 𝑓𝑖−2𝑓1 = 𝑓2 = 1
محاسبه سری فیبوناچی به روش بازگشتی
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
الگوریتم های بازگشتیآموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
11
216326496640
6464576
الگوریتم های بازگشتی
م به روش بازگشتی.م.محاسبه ب
int BMM(int a,int b){
if(a%b==0)
return b;
else
return BMM(b,a%b);
}
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
الگوریتم های بازگشتی
م به روش بازگشتی.م.محاسبه ب
تجزیه به عامل های اول به روش بازگشتی
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
نمایش مثلثی اعداد
1
2 1
3 2 1
4 3 2 1
:
#include <iostream.h>
void main(void){
int i,j,n;
cout<<"Enter number: ";
cin>>n;
for(i=1 ; i<=n ; i++){
for(j=i ; j>=1 ; j--)
cout<<j<<“\t”;
cout<<endl;
}
}
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
14
#include <iostream.h>
void Num(int n){
cout<<n<<“\t”;
if(n>1)
Num(n-1);
}
void Line(int n){
if(n>1)
Line(n-1);
Num(n);
cout<<endl;
}
void main(void){
Line(5);
}
1
2 1
3 2 1
4 3 2 1
:
الگوریتم های بازگشتیآموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
الگوریتم های بازگشتی
برج هانوی
لهمییکرویبرکوچکبهبزرگازدیسکnکنیدفرض
آنهاکمکیمیلهیکازاستفادهباخواهیممیودارندقرار
اتعملی.کنیممنتقلترتیبهمانباسوممیلهبهرا
زرگتربدیسکوبودخواهدتکیبصورتدیسکهاانتقال
.گیردقرارکوچکتردیسکرویبرتواندنمی
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
کردنادهسبااما.استنشدنیکاراینکهکنیمتصورشایدباشد،زیاددیسکهاتعداداگربرخورداولیندربیشتروهسجابجاییآنهاازگرفتنکمکباتوانیممیدیسکدوودیسکیکبرایآنحلباومسئلهاین
.کردجابجارادیسکتعدادهرتوانمیکهدیدخواهیمآنتعمیموروشهمینبهوکنیمحلرادیسک
:استزیرترتیببهدیسکnبرایالگوریتماینکلیاجرایمراحل
.دهیممیانتقال(B)کمکیمیلهبه(A)مبدامیلهازرادیسکn-1ابتدا.1
.کنیممیمنتقل(C)مقصدمیلهبهرااستدیسکبزرگترینکهAمیلهدرباقیماندهدیسکتنها.2
3.n-1کمکیمیلهدرموجوددیسکBمیلهبهراCدهیممیانتقال.
.شودمیامn-1حالتمسالهبهتبدیلامnمساله3تا1مراحلانجامبا.4برای این . برسیمn=1شود تا هنگامیکه به حالت بدین ترتیب با تکرار این مراحل، مرتباً مساله کوچک می
.شودحالت نیز مساله به راحتی با انتقال آن دیسک از میله مبدا به مقصد حل می
برج هانویآموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
:نوشتزیرتابعشکلبهتوانمیرافوقمراحل
void Tower(int n,char A,char B,char C){
if(n==1)
cout<<"Move a disk from "<<A<<" to "<<C<<endl;
else{
Tower(n-1,A,C,B);
cout<<"Move a disk from "<<A<<" to "<<C<<endl;
Tower(n-1,B,A,C);
}
}
برج هانویآموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
دیسکnباهانویبرجمسالهحلبرایوشودمیبیشترمسالهپیچیدگیnافزایشباشودمیمشاهده
𝑂برنامهایناجراییمرتبهدیگرعبارتبه.استجابجاییبهنیاز 2𝑛واستنماییمرتبههمانیا
.بکشدطولهاساعتاستممکنکامپیوترکمکبهمسالهحلبزرگهایnبرای
حلبرایهاینکیعنی.دهدمینشانرابازگشتیروشقدرتزیباییبهکهاستاینهانویمسالهجالبی
درگیرراماآنکهبدونکامپیوترآنگاه.کنیمپیداآنبرایبازگشتیبیانیکاستکافیپیچیدهمسائل
.کندمیحلرامسالهخودبهخودسازدپیچیدهعملیات
برج هانویآموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
الگوریتم های بازگشتی
اتیمحاسبعبارتیکدرپرانتزداخلعبارتکامپایلرمبحثدر
آکرمانتابع
𝐴𝐶𝐾 𝑚, 𝑛 =
𝑛 + 1 𝑚 = 0 اگر𝐴𝐶𝐾 𝑚 − 1,1 𝑚 ≠ 0 و 𝑛 = 0 اگر
𝐴𝐶𝐾 𝑚 − 1, 𝐴𝐶𝐾 𝑚, 𝑛 − 1 اینصورت غیر در
a − b ) n − 1) + 2 ∗ x + 5/ a − n))
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
روش تقسیم و حل
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
روش حریصانه
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
روش برنامه سازی پویا
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
روش بازگشت به عقب
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
روش انشعاب و تحدید
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org
25
این اسالید ها بر مبنای نکات مطرح شده در فرادرس
« آموزش طراحی الگوریتم».تهیه شده است
.ماییدبرای کسب اطالعات بیشتر در مورد این آموزش به لینک زیر مراجعه ن
faradars.org/fvsft109
آموزش طراحی الگوریتم
faradars.org/fvsft109
فرادرس
FaraDars.org