Algorythm Design
Algorythm Design
بازگشتی
Recursive Algorithms
طراحی الگوریتم ها -دانشگاه فردوسی مشهد -صمد
پایدار
مطالب مورد بحث
مقدمه
اقلیدسی
دنباله اعداد فیبوناتچی
2
مقدمه
نمی شود.
قسمت بازگشتی :این حالت منجر به فراخوانی
4
مقدمه
بازگشتی هستند.
خوانایی زیاد
سادگی
6
بررسی چند مساله نمونه
اقلیدسی
دنباله اعداد فیبوناتچی
7
محاسبه فاکتوریل عدد n
8
محاسبه فاکتوریل عدد ::nمحاسبه
مرتبه زمانی
ورودی :عدد nکه می خواهیم فاکتوریل آن را
حساب کنیم.
اندازه ورودی :مقدار عدد n
عمل کلیدی :عمل ضرب
محاسبه تابع پیچیدگی ) (T(nموجود می باشد(
)T(n) = 1 + T(n-1
یک رابطه بازگشتی است.
T(n) = T(n-1)+1 = T(n-2)+1+1 = T(n-
… = 3)+1+1+1
T(n) = T(0) + n
)T(n) = n T(n) = O(n
T(0) = 0 مرتبه زمانی خطی
9
محاسبه فاکتوریل عدد nبه روش
غیر بازگشتی
1 تعریف غیر بازگشتی n = 0
n!=
1* 2 * ...(n− 1)* n n > 0
الگوریتم غیر بازگشتی
11
بررسی چند مساله نمونه
اقلیدسی
دنباله اعداد فیبوناتچی
12
معمای برج هانوی )Tower of
(Hanoi
A B C سیستمی داریم شامل 3میله
به ترتیب بزرگ به کوچک )از پایین به بال( روی هم قرار بگیرند ،ضمنا در
انجام این کار باید دو قانون را رعایت کرد:
هر بار تنها یک دیسک را می توان از میله ای به میله دیگر منتقل کرد.
هرگز نمی توان دیسکی را بر روی دیسک کوچکتر از خودش قرار داد.
13
معمای برج هانوی
کن.
A B C A B C
14
معمای برج هانوی
کن.
15
معمای برج هانوی
کن.
پایان) .میله Bبعنوان میله کمکی و محل
16
معمای برج هانوی
n=2
17
معمای برج هانوی
18
معمای برج هانوی
19
معمای برج هانوی
20
معمای برج هانوی
21
معمای برج هانوی
22
معمای برج هانوی
پایان.
23
معمای برج هانوی
n-1 disks
24
معمای برج هانوی
25
معمای برج هانوی
کن.
26
معمای برج هانوی
27
معمای برج هانوی
28
معمای برج هانوی
الگوریتم
29
معمای برج هانوی ::محاسبه مرتبه
زمانی
ورودی :تعداد دیسکها ،یعنی n
30
معمای برج هانوی ::محاسبه مرتبه
زمانی
T(n) = 2T(n-1)+1 = 2 (2T(n-2)+1) + 1
= 22T(n-2) + 3
= 23T(n-3) + 7 = 24T(n-4)+15= … =2k
T(n-k) + 2K -1
T(1) = 1 )T(n = 2n
-1
n-k=1 k=n-1 T(n)=O(2 n
)
T(n) = 2n-1T(1) + 2n-1 - 1
32
بررسی چند مساله نمونه
اقلیدسی
دنباله اعداد فیبوناتچی
33
محاسبه ب.م.م .به روش اقلیدسی
34
به روش اقلیدسی.م.م.محاسبه ب
الگوریتم بازگشتی
35
محاسبه ب.م.م .به روش اقلیدسی
a , a , a , …, a
0 1 2 m
36
محاسبه ب.م.م .به روش اقلیدسی::
محاسبه مرتبه زمانی
37
محاسبه ب.م.م .به روش اقلیدسی::
محاسبه مرتبه زمانی
محاسبه تابع پیچیدگی
تعداد اجرای عمل کلیدی ،علوه بر مقدار aبه مقدار b
می توان گفت حجم کار انجام شده توسط الگوریتم به a
38
محاسبه ب.م.م .به روش اقلیدسی::
محاسبه مرتبه زمانی
)W(n) = 1 + W(n / 2
= W(n) = W(n/2)+1 = W(n/4)+1+1
W(n/8)+1+1+1=...
W(n) = W(n/2k)+k
W(1) = 1 )W(n = 1+log n
2
39
بررسی چند مساله نمونه
اقلیدسی
دنباله اعداد فیبوناتچی
40
به روش اقلیدسی.م.م.محاسبه ب
0 if n = 0
تعریف بازگشتی
f ib(n) = 1 if n = 1
fib(n − 1) + fib(n − 2) else
Fibonacci sequence :
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
الگوریتم بازگشتی
حساب کنیم.
اندازه ورودی :مقدار عدد n
42
دنباله اعداد فیبوناتچی
43
دنباله اعداد فیبوناتچی
خطی
45
دنباله اعداد فیبوناتچی
بازگشتی زیر
n - 1
)Fib(n Fib(n - 1) 1 1
)Fib(n - 1 =
Fib(n - 2) 1 0
=)Fib(4
3 مثال:
47
بررسی چند مساله نمونه
اقلیدسی
دنباله اعداد فیبوناتچی
48
فرکتال ها
باشند.
49
فرکتال ها
50
فرکتال ها
51
فرکتال ها
52
فرکتال ها
53
فرکتال ها
54
فرکتال ها
55
فرکتال ها
56
فرکتال ها
57
فرکتال ها
58