210 likes | 460 Views
فصل 2. طراحي الگوريتم ها. Computer algorithms. Computer algorithms. الگوریتم های بازگشتی الگوریتم های غیر بازگشتی(ترتیبی). محاسبه زمان الگوریتم بازگشتی. زمان حل زیر مساله زمان شکستن مساله به زیر مسائل زمان لازم برای ادغام جوابهای زیر مسائل. مراحل الگوریتم بازگشتی. 1- عمل فراخوانی
E N D
فصل 2 طراحي الگوريتم ها Computer algorithms
Computer algorithms • الگوریتم های بازگشتی • الگوریتم های غیر بازگشتی(ترتیبی)
محاسبه زمان الگوریتم بازگشتی • زمان حل زیر مساله • زمان شکستن مساله به زیر مسائل • زمان لازم برای ادغام جوابهای زیر مسائل
مراحل الگوریتم بازگشتی • 1- عمل فراخوانی • قرارگیری متغیرهای محلی و مقادیر آنها و آدرس بازگشت در پشته • انتقال پارامترها • انتقال کنترل برنامه به ابتدای پردازه جدید • 2- بازگشت از یک فراخوانی • قرارگیری متغیرهای محلی از پشته به خود متغیر • آدرس بازگشت و ادامه اجرا
کارایی بازگشتی • تکرار محاسبه یک مقدار بالاخص در حالت درختی • Another Reason for Slowdowns [Tree Recursion] • Traditional Recursion doesn’t save answers as it executes • Fib(5) = Fib(4) + Fib(3) = Fib(3) + Fib(2) + Fib(3) = Fib(2) + Fib(1) + Fib(2) + Fib(3) = Fib(1) + Fib(0) + Fib(1) + Fib(2) + Fib(3) = Fib(1) + Fib(0) + Fib(1) + Fib(1) + Fib(0) + Fib(3) = Fib(1) + Fib(0) + Fib(1) + Fib(1) + Fib(0) + Fib(2) + Fib(1) = Fib(1) + Fib(0) + Fib(1) + Fib(1) + Fib(0) + Fib(1) + Fib(0) + Fib(1) • Solution: Dynamic programming – saving answers as you go and reusing them
مسئله فاکتوریل طراحی الگوریتم
پیمایش خطی: چگونگی پیمایش تابع fact طراحی الگوریتم
مسئله محاسبه جمله nام سری فیبوناچی طراحی الگوریتم
پیمایش درختی : چگونگی فراخوانی بازگشتی تابعfib طراحی الگوریتم
غیر بازگشتیFibonacci int fibonacci(int input) { int first = 1; int second = 1; int temp; for (int k = 0; k < input; k++) { temp = first; first = second; second = temp + second; } return first; } طراحی الگوریتم
مقایسه الگوریتم بازگشتی و غیر بازگشتی فیبوناچی طراحی الگوریتم
الگوريتم بازگشتي پيدا كردن يك عنصر از ليست (جستجوي ترتيبي) طراحی الگوریتم
مثال: عدد 82 را در لیست زیر جستجو کنید: طراحی الگوریتم
مسئله برج هانوی طراحی الگوریتم
چگونگی فراخوانی تابع هانوی طراحی الگوریتم