آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش دوم

Preview:

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

Recommended