در این مجموعه یک مرور اجمالی به روش تقسیم و حل در طراحی الگوریتم شده و سپس تست های کنکور دولتی حل شده است. علاوه بر حل تشریحی، نکات کنکوری نیز برای حل سریع تر بیان شده است، نکاتی که در اکثر منابع کنکور نمی توان آنها را پیدا کرد و حاصل بیش از ۱۵ سال تدریس کنکوری است.
سرفصل هایی که در این آموزش به آن پرداخته شده است:
مرور اجمالی به مبحث روش تقسیم و حل در طراحی الگوریتم
قضیه اصلی
جستجوی دو دویی
مرتب سازی ادغامی
مرتب سازی سریع (Quick sort)
...
برای توضیحات بیشتر و تهیه این آموزش لطفا به لینک زیر مراجعه بفرمائید:
http://faradars.org/courses/fvsfte103
4. روشدر حل و تقسیم
طراحیالگوریتم
faradars.org/fvsfte103
قضیهاصلی
اگرداشتهباشیم:n
T(n) aT( ) f(n)
b
a 1,b 1
a a
b b
a
b
a
b
log log
log
log
(n ) f(n) n
T(n) (f(n).lgn) f(n) n
(f(n)) f(n) n
4
سرداﺮﻓ
FaraDars.org
5. روشدر حل و تقسیم
طراحیالگوریتم
faradars.org/fvsfte103
5
n
T(n) 4T( ) lgn
2
4
2log
lg nn
)( 2
n
a 4
b 2
f(n) lgn
n
T(n) 8T( ) nlgn
9
8
9log
lg nnn
)lg( nn
2n
T(n) T( ) 1
3
1
2/3log
1 n
)(lg n
a 8
b 9
f(n) nlgn
a 1
3
b
2
f(n) 1
سرداﺮﻓ
FaraDars.org
11. روشدر حل و تقسیم
طراحیالگوریتم
faradars.org/fvsfte103
mergesort ( S[ ] , n ) {
h = [n/2];
m = n – h;
if (n > 1)
{
copy S[1..h] to U[1..h];
copy S[h +1..n] to V[1..m];
mergesort ( U , h );
mergesort ( V , m );
merge (U , h , V , m , S);
}
} 11
)lg(
)1(lg)(
1)
2
(2)(
nn
nnnnT
n
n
TnT
الگوریتم
سرداﺮﻓ
FaraDars.org
12. روشدر حل و تقسیم
طراحیالگوریتم
faradars.org/fvsfte103
سریع سازی مرتب(Quick sort)
QuickSort (A , p , r)
{
if ( p < r )
{
q = Partition (A , p , r) ;
QuickSort (A , p , q-1) ;
QuickSort (A , q+1, r ) ;
}
} 12
سرداﺮﻓ
FaraDars.org
31. روشدر حل و تقسیم
طراحیالگوریتم
faradars.org/fvsfte103
انتخاب الگوریتم
select (A[ ] , p , r , i ){
if (p == r) return A[p];
q = R-partition(A,p,r);
k = q-p+1; // k =rank(A[q])
if ( i == k ) return A[q];
else if ( i < k )
return select ( A , p , q-1 , i )
else
return select ( A , q+1 , r , i-k )
}
توان مرتبه از حالت بدترین در الگوریتم این2است.
31
سرداﺮﻓ
FaraDars.org
39. روشدر حل و تقسیم
طراحیالگوریتم
faradars.org/fvsfte103
SELECT(A, i )
1. Divide n elements into ⎣n/5⎦ groups of 5, plus extra O(n)
2. Find medians of each group by insertion sort. O(n)
3. Find median x of the ⎣n/5⎦ medians by calling SELECT( ) T( n/5 )
4. Partition the n elements around pivot x . Let k = rank(x) O(n)
5. if (i = k) then T(7n/10 + 6)
return x
if (i < k) then
SELECT( left partition , i )
else
SELECT ( right partition , i-k )
39
n 7n
T(n) T T 6 O(n)
5 10
O(n)
انتخاب الگوریتم
سرداﺮﻓ
FaraDars.org
40. روشدر حل و تقسیم
طراحیالگوریتم
faradars.org/fvsfte103
گروههای3عنصری
n 2n
T(n) T T 4 O(n) O(n.lgn)
3 3
40
n 5n
T(n) T T( 8) O(n) O(n)
7 7
n (3m 1)n
T(n) T T c O(n)
m 4m
گروههای7عنصری
گروههایmعنصری
سرداﺮﻓ
FaraDars.org