SlideShare a Scribd company logo
1 of 50
Download to read offline
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫مدرس‬:
‫شیرافکن‬ ‫فرشید‬
‫دانشجوی‬‫تهران‬ ‫دانشگاه‬ ‫دکتری‬
(‫ارشد‬ ‫کارشناسی‬ ‫و‬ ‫کارشناسی‬:‫افزار‬ ‫نرم‬ ‫کامپیوتر‬( )‫دکتری‬:‫انفورماتیک‬ ‫بیو‬)
‫کنکور‬‫ارشد‬ ‫کارشناسی‬
‫الگوریتم‬ ‫طراحی‬
‫حل‬ ‫و‬ ‫تقسیم‬ ‫روش‬
1
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫هنگام‬‫طراحی‬‫الگوریتم‬‫های‬‫تقسیم‬‫و‬‫حل‬ً‫ال‬‫معمو‬‫آن‬‫را‬‫به‬‫صورت‬‫یک‬‫روال‬‫بازگشتی‬‫می‬‫نوی‬‫سند‬.
‫حل‬ ‫و‬ ‫تقسیم‬ ‫روش‬(Divide-and-Conquer)
‫مراحل‬:
1-‫تقسیم‬‫نمونه‬‫ای‬‫از‬‫یک‬‫مسئله‬‫به‬‫یک‬‫یا‬‫چند‬‫نمونه‬‫کوچکتر‬
2-‫حل‬‫نمونه‬‫های‬‫کوچکتر‬
3-‫ترکیب‬‫حل‬‫نمونه‬‫های‬‫کوچکتر‬‫برای‬‫بدست‬‫آوردن‬‫حل‬‫نمونه‬‫اولیه‬(‫در‬‫صورت‬‫نیاز‬)
‫دلیل‬‫اینکه‬‫می‬‫گوئیم‬"‫در‬‫صورت‬‫نیاز‬"‫این‬‫است‬‫که‬‫در‬‫بعضی‬‫الگوریتم‬‫ها‬‫مانند‬‫جستجوی‬‫دودویی‬‫نمونه‬‫فقط‬‫به‬‫یک‬‫نمونه‬
‫کوچکتر‬‫کاهش‬‫می‬‫یابد‬‫و‬‫نیازی‬‫به‬‫ترکیب‬‫حل‬‫ها‬‫نیست‬.
2
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫مثال‬
‫الگوریتمی‬‫هر‬‫ورودی‬‫مسئله‬‫به‬‫اندازه‬‫ی‬n‫را‬‫به‬2‫بخش‬‫کم‬‫و‬‫بیش‬‫مساوی‬‫تقسیم‬
‫می‬‫کند‬.‫زیر‬‫مسئله‬‫ها‬‫را‬‫به‬‫صورت‬‫بازگشتی‬‫حل‬‫و‬‫سپس‬‫با‬‫هزینه‬‫خطی‬‫حاصل‬‫این‬
‫دو‬‫را‬‫با‬‫هم‬‫ترکیب‬‫کرده‬‫و‬‫جواب‬‫مسئله‬‫را‬‫به‬‫دست‬‫می‬‫آورد‬.
‫رابطه‬‫بازگشتی‬:
n
T(n) 2T( ) O(n) T(n) O(nlgn)
2
   
3
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
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
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
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
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫اندازه‬ ‫با‬ ‫مسئله‬ ‫یک‬ ‫حل‬ ‫برای‬n‫است‬ ‫پذیر‬ ‫امکان‬ ‫زیر‬ ‫شرح‬ ‫به‬ ‫روش‬ ‫سه‬ ‫غلبه‬ ‫و‬ ‫تقسیم‬ ‫الگوریتم‬ ‫با‬:
‫اول‬ ‫روش‬:‫حل‬3‫هزینه‬ ‫با‬ ‫ها‬ ‫آن‬ ‫ترکیب‬ ‫و‬ ‫اندازه‬ ‫به‬ ‫مسئله‬ ‫زیر‬
‫دوم‬ ‫روش‬:‫حل‬4‫هزینه‬ ‫با‬ ‫ها‬ ‫آن‬ ‫ترکیب‬ ‫و‬ ‫اندازه‬ ‫به‬ ‫مسئله‬ ‫زیر‬
‫سوم‬ ‫روش‬:‫حل‬5‫هزینه‬ ‫با‬ ‫ها‬ ‫آن‬ ‫ترکیب‬ ‫و‬ ‫اندازه‬ ‫به‬ ‫مسئله‬ ‫زیر‬
‫است؟‬ ‫کمتری‬ ‫هزینه‬ ‫دارای‬ ‫روش‬ ‫کدام‬
1)‫اول‬ ‫روش‬2)‫دوم‬ ‫روش‬3)‫سوم‬ ‫روش‬4)‫هستند‬ ‫یکسان‬ ‫روش‬ ‫سه‬ ‫هر‬.
n
2
2(n n)
n
2
2(n )
n
2
(nlgn)
(‫مهندسی‬IT-‫دولتی‬86)
6
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫روش‬‫اول‬:2 2n
T(n) 3T( ) (n n) T(n) (n n)
2
     
‫دوم‬ ‫روش‬:
2 2n
T(n) 4T( ) (n ) T(n) (n lgn)
2
     
‫سوم‬ ‫روش‬:5
2lgn
T(n) 5T( ) (nlgn) T(n) (n )
2
     
7
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫پیدا‬‫کردن‬‫عدد‬10‫در‬‫آرایه‬‫مرتب‬:
8
1 2 3 4 5 6 7 8 9
5 9 10 20 35 50 60 70 75
5 9 10 20 35 50 60 70 75
5 9 10 20 35 50 60 70 75
5 9 10 20 35 50 60 70 75
‫دودویی‬ ‫جستجوی‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
bsearch (a[ ] , x , low , high ){
if (low <=high ) {
mid = ( low+high ) / 2;
if ( x < a[mid] )
bsearch( a , x , low , mid-1 );
else if ( x > a[mid] )
bsearch (a , x , mid+1 , high );
else
return mid;
}
return -1;
} 9
1)
2
()( 
n
TnT )(lg nO
highmid+1midmid-1low
……
‫الگوریتم‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫ادغامی‬ ‫سازی‬ ‫مرتب‬(Merge Sort)
10
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
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
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
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
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫بندی‬ ‫پارتیشن‬ ‫الگوریتم‬
13
46531782
46531782
46531782
46531782
46538712
46578312
46578312
46578312
86574312
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫سریع‬ ‫سازی‬ ‫مرتب‬ ‫عملکرد‬
‫حالت‬‫خوب‬‫و‬‫میانگین‬:
T(n) = T(n/2) + T(n/2)+O(n) O(nlogn)
14
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫سریع‬ ‫سازی‬ ‫مرتب‬ ‫حالت‬ ‫بدترین‬
‫در‬‫صورتی‬‫که‬‫اولین‬‫عنصر‬‫یا‬‫آخرین‬‫عنصر‬‫را‬‫به‬‫عنوان‬‫محور‬‫انتخاب‬،‫کنیم‬‫م‬‫رتب‬
‫سازی‬‫سریع‬‫برای‬‫یک‬‫آرایه‬‫مرتب‬،‫بدترین‬‫عملکرد‬‫را‬‫خواهد‬‫داشت‬.
T(n) = T(n-1) + O(n) O(n^2)
15
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫استراسن‬‫الگوریتمی‬‫را‬‫ارائه‬‫داد‬‫که‬‫پیچیدگی‬،‫آن‬‫از‬‫لحاظ‬‫ضرب‬)‫و‬‫همچنین‬‫از‬‫لحاظ‬‫جمع‬‫و‬‫تفریق‬)‫بهتر‬‫از‬
‫پیچیدگی‬‫درجه‬‫سوم‬‫است‬.
‫استراسن‬ ‫های‬ ‫ماتریس‬ ‫ضرب‬
16
Strassen’s matrix multiplication




















1111011010110010
1101010010010000
1110
0100
1110
0100
****
****
*
BABABABA
BABABABA
BB
BB
AA
AA
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103




















623142
537541
1110
0100
1110
0100
*
MMMMMM
MMMMMM
BB
BB
AA
AA
M1=(A00+A11)*(B00+B11)
M2=(A10+A11)*B00
M3=A00*(B01-B11)
M4=A11*(B10-B00)
M5=(A00+A01)*B11
M6=(A10-A00)*(B00+B01)
M7=(A01-A11)*(B10+B11) 17
‫استراسن‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
3 17 5 7 3 10 5 9 86 75
11 17 13 7 11 10 13 9 278 227
        
            
18
1 2 2 3 8 9 9 1 3 5 17 10
5 6 6 7 3 4 4 5 11 13 7 9
              
                  
              
‫مثال‬:‫محاسبه‬M1
M1=(A00+A11)*(B00+B11)




















623142
537541
1110
0100
1110
0100
*
MMMMMM
MMMMMM
BB
BB
AA
AA
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫تحلیل‬‫پیچیدگی‬‫زمانی‬‫الگوریتم‬‫استراسن‬
‫بازگشتی‬ ‫دستور‬(‫ضرب‬ ‫اصلی‬ ‫عمل‬‫است‬:)
n
T(n) 7T( )
2

T(1) 1
lg7 2.81T(n) (n ) (n )   
19
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫اگر‬‫در‬‫ضرب‬‫ها‬‫ماتریس‬‫به‬‫روش‬‫استراسن‬(Strassen)،‫مساله‬‫کوچک‬‫ضرب‬‫ماتریس‬‫های‬،‫باشد‬
‫برای‬‫ضرب‬‫دو‬‫ماتریس‬،‫چند‬‫ضرب‬‫عددی‬‫صورت‬‫پذیرد؟‬‫می‬
2 2
8 8
1)572)3433)3924)512
n
T(n) 7T( )
2
T(2) 8


T(4) 7T(2) 7 8 56
T(8) 7T(4) 7 56 392
   
   
(‫مهندسی‬IT-‫دولتی‬85)
20
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫اگر‬‫در‬‫ضرب‬‫ها‬‫ماتریس‬‫به‬‫روش‬،‫استراسن‬‫مساله‬،‫کوچک‬‫ضرب‬‫های‬‫ماتریس‬،‫باشد‬‫با‬‫چند‬‫فراخوانی‬
‫بازگشتی‬‫به‬‫الگوریتم‬،‫استراسن‬‫عمل‬‫ضرب‬‫دو‬‫ماتریس‬‫انجام‬‫پذیرد؟‬‫می‬
2 2
8 8
1)3432)573)494)7
‫مقدار‬ ‫باید‬T(8)‫کرد‬ ‫محاسبه‬ ‫زیر‬ ‫بازگشتی‬ ‫رابطه‬ ‫از‬ ‫را‬:
n
T(n) 7T( ) 1
2
T(2) 1
 

T(4) 7T(2) 1 8
T(8) 7T(4) 1 7 8 1 57
  
     
(‫مهندسی‬IT-‫دولتی‬86)
21
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫خواهیم‬‫می‬‫عنصر‬‫بیشینه‬‫را‬‫در‬‫یک‬‫ماتریس‬‫به‬‫اندازه‬‫بیابیم‬.‫برای‬‫این‬‫کار‬‫ماتریس‬‫را‬‫به‬4
‫قسمت‬‫مساوی‬‫و‬‫هرکدام‬‫به‬‫اندازه‬‫تقسیم‬‫کنیم‬‫می‬.‫بیشینه‬‫هرکدام‬‫را‬‫به‬‫صورت‬‫بازگ‬‫شتی‬‫به‬
‫دست‬‫آوریم‬‫می‬‫و‬‫بین‬‫آنها‬‫جواب‬‫نهایی‬‫را‬‫پیدا‬‫کنیم‬‫می‬.‫تعداد‬‫دقیق‬‫های‬‫مقایسه‬‫عناصر‬‫با‬‫هم‬‫د‬‫ر‬‫این‬
‫الگوریتم‬‫چندتاست؟‬()
n n
n n
2 2

kn 2
1)2)3)4) 2n 12n 13lgn3(lgn 1)
(‫کامپیوتر‬ ‫مهندسی‬-‫هوش‬-‫دولتی‬89)
22
n
T(n) 4T( ) 3
2
 
T(2) 3
4
2lg 2
T(n) (n ) (n )   
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫بزرگ‬ ‫صحیح‬ ‫عدد‬ ‫دو‬ ‫ضرب‬
‫برای‬‫انجام‬‫اعمال‬‫محاسباتی‬‫روی‬‫اعداد‬‫صحیحی‬‫بزرگتر‬‫از‬‫حد‬‫قابل‬‫نمایش‬‫توسط‬‫سخت‬‫افزار‬‫کامپیوت‬،‫ر‬‫باید‬‫از‬
‫روش‬‫تقسیم‬‫و‬‫حل‬‫استفاده‬‫کرد‬.
‫اگر‬n‫تعداد‬‫ارقام‬‫عدد‬‫صحیح‬u،‫باشد‬‫آن‬‫را‬‫به‬‫دو‬‫عدد‬‫صحیح‬‫یکی‬x‫با‬‫رقم‬‫و‬‫دیگری‬y‫با‬
‫تبدیل‬‫کنیم‬‫می‬‫به‬‫صورت‬:‫که‬.
n / 2  n / 2  
mu x 10 y  m n / 2   
212345 123 10 45  
23
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫ضرب‬u‫و‬v
m m 2m muv (x 10 y)(w 10 z) xw 10 (xz wy) 10 yz          
‫پس‬‫می‬‫توان‬v‫و‬u‫را‬‫با‬4‫عمل‬‫ضرب‬‫روی‬‫اعداد‬‫صحیح‬(‫با‬‫حدود‬‫نیمی‬‫از‬‫ارقام‬)‫و‬‫اجرای‬‫عملیات‬
‫زمان‬،‫خطی‬‫در‬‫هم‬‫ضرب‬‫کنیم‬.
24
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫ضرب‬‫دو‬‫عدد‬567832‫و‬9423723:
‫سپس‬‫این‬‫اعداد‬‫صحیح‬‫کوچکتر‬‫را‬‫با‬‫همین‬‫روال‬‫ضرب‬‫کنیم‬‫می‬:
2 2
2 2
567 9423 (5 10 67)(94 10 23)
5 94 10 (5 23 67 94) 10 67 23
     
         
‫در‬‫این‬‫صورت‬‫عمل‬‫ضرب‬‫اعداد‬‫حداکثر‬‫دو‬‫رقمی‬‫را‬‫به‬‫طریق‬‫معمولی‬‫انجام‬‫می‬‫دهیم‬.
3 3
6 3
567,832 9,423,723 (567 10 832)(9423 10 723)
567 9,423 10 (567 723 9423 832) 10 832 723
     
         
‫مثال‬
25
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫تحلیل‬‫الگوریتم‬‫در‬‫بدترین‬‫حالت‬
26
‫الگوریتم‬‫سریعتر‬:
‫در‬‫الگوریتم‬‫قبلی‬‫برای‬‫محاسبه‬‫ضرب‬‫دو‬‫عدد‬‫به‬4‫عمل‬‫ضرب‬‫نیاز‬‫بود‬‫که‬‫با‬‫یک‬‫ابتکار‬‫جالب‬‫تعداد‬‫آن‬‫را‬‫به‬3‫عمل‬
،‫ضرب‬‫کاهش‬‫می‬‫دهیم‬.
cn
n
TnT  )
2
(3)( )()( 58.1
3
2log
nn  
cn
n
TnT  )
2
(4)( )()( 2
4
2log
nn  
‫مرتبه‬‫عدد‬ ‫دو‬ ‫ضرب‬k‫رقمی‬:3
2lg
k
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫برای‬‫ضرب‬‫دو‬‫عدد‬‫و‬‫به‬‫ترتیب‬‫با‬‫و‬‫رقم‬‫برای‬: ABn4n5000 n 10000 
1)‫کرد‬ ‫استفاده‬ ‫ها‬ ‫آن‬ ‫ضرب‬ ‫برای‬ ‫کالسیک‬ ‫و‬ ‫معمولی‬ ‫روش‬ ‫از‬ ‫است‬ ‫بهتر‬.
2)‫بهتر‬‫است‬‫از‬‫الگوریتم‬‫تقسیم‬‫و‬‫حل‬‫استفاده‬‫کرد‬‫و‬‫فرقی‬‫نمی‬‫کند‬‫به‬‫چه‬‫ترتیبی‬.
4)‫کردن‬ ‫قسمت‬ ‫از‬ ‫پس‬ ‫است‬ ‫بهتر‬B‫به‬4‫بخش‬n‫در‬ ‫را‬ ‫ها‬ ‫بخش‬ ‫این‬ ‫از‬ ‫کدام‬ ‫هر‬ ،‫رقمی‬A‫کرد‬ ‫ضرب‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫روش‬ ‫با‬ ‫و‬.
3)‫بهتر‬‫است‬‫پس‬‫از‬‫اضافه‬‫کردن‬3n‫صفر‬‫به‬‫سمت‬‫چپ‬A‫،عدد‬‫حاصل‬‫را‬‫با‬‫کمک‬‫الگوریتم‬‫تقسیم‬‫و‬‫حل‬‫در‬B‫ضرب‬‫کرد‬.
(‫کامپیوتر‬ ‫مهندسی‬-‫دولتی‬83)
27
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
3
2lg
k
‫در‬‫این‬‫حالت‬‫دو‬‫عدد‬4n‫رقمی‬‫داریم‬‫که‬‫مرتبه‬‫ضرب‬،‫آنها‬‫برابر‬‫است‬‫با‬:
3 3 3 4 3 3
2 2 2 2 2 2lg lg lg lg lg lg
(4n) 4 n 3 n 9n    
28
‫دانیم‬ ‫می‬‫مرتبه‬ ‫که‬‫عدد‬ ‫دو‬ ‫ضرب‬k‫حل‬ ‫و‬ ‫تقسیم‬ ‫روش‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫رقمی‬‫برابر‬‫با‬ ‫است‬:
‫گزینه‬3:‫عدد‬A‫که‬n‫رقمی‬‫است‬‫را‬‫با‬‫اضافه‬‫کردن‬‫صفر‬‫به‬‫سمت‬‫چپ‬،‫آن‬4n‫رقمی‬‫کنیم‬.
‫گزینه‬4:‫عدد‬B‫که‬4n‫رقمی‬‫است‬‫را‬‫به‬‫چهار‬‫بخش‬n‫رقمی‬‫تبدیل‬‫کنیم‬‫و‬‫هر‬‫کدام‬‫از‬‫این‬‫بخش‬‫ها‬‫را‬‫در‬
A‫با‬‫کمک‬‫الگوریتم‬‫تقسیم‬‫و‬‫حل‬‫ضرب‬‫کرد‬.‫مرتبه‬‫چهار‬‫ضرب‬n،‫رقمی‬‫برابر‬‫است‬‫با‬:
3
2lg
4n
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫انتخاب‬i‫امین‬‫کوچکترین‬‫عنصر‬‫در‬‫آرایه‬n‫عنصری‬(‫عنصر‬‫با‬‫رتبه‬i)
i=1:‫مینیمم‬
i=n:‫ماکزیمم‬
i = ⎣(n+1) / 2⎦ or ⎡(n+1)/2⎤:‫میانه‬
29
‫انتخاب‬ ‫مسئله‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫اول‬ ‫عنصر‬‫در‬ ‫محور‬ ‫را‬‫کنیم‬ ‫می‬ ‫بندی‬ ‫پارتیشن‬ ‫و‬ ‫گیریم‬ ‫می‬ ‫نظر‬:
30
‫عنصر‬ ‫کوچکترین‬ ‫هفتمین‬ ‫کردن‬ ‫پیدا‬
‫دنبال‬ ‫به‬ ‫رنگ‬ ‫صورتی‬ ‫قسمت‬ ‫در‬ ‫بازگشتی‬ ‫طور‬ ‫به‬‫سومین‬‫گردیم‬ ‫می‬ ‫عنصر‬ ‫کوچکترین‬.
(2,3,5,6,8,10,11,13)
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
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
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫ابتدا‬‫همه‬‫عناصر‬‫را‬‫به‬‫دسته‬‫های‬5‫تایی‬(‫به‬‫جز‬ً‫ال‬‫احتما‬‫یک‬‫دسته‬)‫تقسیم‬‫کنی‬‫می‬‫م‬.
‫میانه‬‫هر‬‫دسته‬‫را‬‫به‬‫دست‬‫آوریم‬‫می‬‫و‬‫سپس‬‫میانه‬‫میانه‬‫ها‬‫را‬‫به‬‫صورت‬‫بازگ‬‫شتی‬
‫پیدا‬‫کنیم‬‫می‬.
‫این‬‫عنصر‬‫را‬‫به‬‫عنوان‬‫محور‬‫انتخاب‬‫کنیم‬‫می‬‫و‬‫عمل‬partition‫را‬‫بر‬‫روی‬‫آرایه‬
‫عناصر‬‫انجام‬‫دهیم‬‫می‬.
‫همین‬‫الگوریتم‬‫را‬‫بصورت‬‫بازگشتی‬(‫و‬‫برای‬‫یک‬k‫دیگر‬)‫بر‬‫روی‬‫یکی‬‫از‬‫ها‬‫بخش‬
‫اجرا‬‫کنیم‬‫می‬‫تا‬‫عنصر‬‫مورد‬‫نظر‬‫پیدا‬‫شود‬.
32
‫انتخاب‬ ‫الگوریتم‬k‫عنصر‬ ‫امین‬(‫ها‬ ‫میانه‬ ‫میانه‬)
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫تقسیم‬54‫با‬ ‫گروهایی‬ ‫به‬ ‫عنصر‬n/5‫عنصر‬(‫نتیجه‬ ‫در‬11‫داشت‬ ‫خواهیم‬ ‫گروه‬)
33
‫مثال‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫گروه‬ ‫هر‬ ‫کردن‬ ‫مرتب‬
34
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫گروه‬ ‫هر‬ ‫میانه‬ ‫کردن‬ ‫مشخص‬
35
‫ها‬ ‫میانه‬ ‫میانه‬ ‫انتخاب‬(‫عدد‬28)
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
36
‫حداقل‬‫ها‬ ‫میانه‬ ‫میانه‬ ‫از‬ ‫بزرگتر‬ ‫های‬ ‫میانه‬ ‫تعداد‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫حداقل‬‫ها‬ ‫میانه‬ ‫میانه‬ ‫از‬ ‫بزرگتر‬ ‫عناصر‬
37
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫حداقل‬‫ها‬ ‫میانه‬ ‫میانه‬ ‫از‬ ‫کوچکتر‬ ‫عناصر‬
‫تعداد‬‫ش‬ ‫می‬ ‫زده‬ ‫صدا‬ ‫بازگشتی‬ ‫طور‬ ‫به‬ ‫ها‬ ‫آن‬ ‫برای‬ ‫انتخاب‬ ‫تابع‬ ‫که‬ ‫عناصری‬‫ود‬:
3n 7n
n 6 6
10 10
 
    
  38
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
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
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
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
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫مقدار‬m=5،‫کوچکترین‬‫مقدار‬‫فرد‬‫است‬‫که‬‫منجر‬‫به‬‫کارایی‬‫خطی‬
‫می‬‫شود‬.‫به‬‫همین‬‫علت‬‫در‬‫توضیح‬‫الگوریتم‬،‫انتخاب‬‫عناصر‬‫را‬‫به‬‫دست‬‫ه‬‫های‬
‫پنج‬‫تایی‬‫تقسیم‬‫کردیم‬.
41
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫در‬‫الگوریتم‬‫پیدا‬‫کردن‬k‫امین‬،‫عنصر‬‫ابتدا‬‫همه‬‫عناصر‬‫را‬‫به‬‫دسته‬‫های‬5‫تایی‬(‫به‬‫جز‬ً‫ال‬‫احتما‬‫یک‬‫دسته‬)‫تقسیم‬
،‫کنیم‬‫می‬‫میانه‬‫هر‬‫دسته‬‫را‬‫به‬‫دست‬‫آوریم‬‫می‬‫و‬‫سپس‬‫میانه‬‫میانه‬‫ها‬‫را‬‫به‬‫صورت‬‫بازگشتی‬‫پیدا‬‫کنی‬‫می‬‫م‬.‫این‬
‫عنصر‬‫را‬‫به‬‫عنوان‬‫محور‬‫انتخاب‬‫کنیم‬‫می‬‫و‬‫عمل‬partition‫را‬‫بر‬‫روی‬‫آرایه‬‫عناصر‬‫انجام‬‫دهیم‬‫می‬.‫پس‬‫از‬‫آن‬
‫همین‬‫الگوریتم‬‫را‬‫بصورت‬‫بازگشتی‬(‫و‬‫برای‬‫یک‬k‫دیگر‬)‫بر‬‫روی‬‫یکی‬‫از‬‫ها‬‫بخش‬‫اجرا‬‫کنیم‬‫می‬‫تا‬‫عنصر‬‫مورد‬‫نظر‬
‫پیدا‬‫شود‬.‫زمان‬‫اجرای‬‫این‬‫الگوریتم‬‫توسط‬‫کدام‬‫یک‬‫از‬‫های‬‫رابطه‬‫بازگشتی‬‫زیر‬‫بیان‬‫شود؟‬‫می‬
1)2)
3)4)
n 3n
T(n) T( ) T( 6) O(n)
5 10
 
    
 
n 3n
T(n) T( ) T( 6) O(n)
5 10
 
    
 
n 7n
T(n) T( ) T( 6) O(n)
5 10
 
    
 
n 7n
T(n) T( ) T( 6) O(n)
5 10
 
    
 
(‫کامپیوتر‬ ‫مهندسی‬-‫دولتی‬82)
42
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫در‬‫راه‬‫حل‬‫کالسیک‬‫برای‬‫یافتن‬‫عنصر‬‫میانه‬‫ی‬n،‫عنصر‬‫عناصر‬‫را‬‫به‬‫دسته‬‫های‬5‫تایی‬‫تقسیم‬‫کردیم‬
‫و‬‫میانه‬‫ی‬‫هر‬‫کدام‬‫و‬‫سپس‬‫میانه‬‫ی‬‫میانه‬‫ها‬‫را‬‫به‬‫صورت‬‫بازگشتی‬‫به‬‫دست‬‫آوردیم‬.‫این‬‫عنصر‬‫به‬
‫عنوان‬‫محور‬‫برای‬‫بخش‬‫بندی‬‫عناصر‬‫محسوب‬‫می‬‫شود‬.‫اگر‬‫به‬‫جای‬‫دسته‬‫های‬5،‫تایی‬‫از‬‫دسته‬‫های‬
3‫تایی‬‫استفاده‬،‫کنیم‬‫زمان‬‫اجرا‬‫توسط‬‫کدام‬‫رابطه‬‫ی‬‫بازگشتی‬‫بیان‬‫می‬‫شود؟‬
1)2)
3)4)
2n
T(n) T( ) cn
3
 
n
T(n) T( ) cn
3
 
n
T(n) 2T( ) cn
3
 
n 2n
T(n) T( ) T( ) cn
3 3
  
(‫کامپیوتر‬ ‫مهندسی‬-‫دولتی‬91)
43
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫دوم‬ ‫کلید‬ ‫ترین‬ ‫بزرگ‬ ‫یافتن‬(‫تورنمن‬‫ت‬)
‫اگر‬8‫کلید‬‫داشته‬،‫باشیم‬‫در‬‫دور‬،‫اول‬4‫مقایسه‬،‫دور‬،‫دوم‬2‫مقایسه‬‫و‬‫دور‬‫آخر‬1‫مقایسه‬‫خواهیم‬‫داشت‬.(n-1)
‫برنده‬‫دور‬،‫آخر‬‫بزرگترین‬‫کلید‬‫است‬.‫بازنده‬‫دور‬‫آخر‬‫الزاما‬‫بزرگ‬‫ترین‬‫کلید‬‫دوم‬‫نیست‬.
‫کلیدی‬‫که‬‫یک‬‫مقایسه‬‫را‬‫به‬18‫ببازد‬،‫به‬‫لیست‬‫اضافه‬‫می‬‫شود‬. 12,16,15
44
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫تعداد‬‫لیست‬ ‫اعداد‬:logn(‫درخت‬ ‫ارتفاع‬‫مقایسه‬)
‫لی‬ ‫این‬ ‫در‬ ‫عدد‬ ‫بزرگترین‬ ‫پیداکردن‬ ‫برای‬ ‫مقایسه‬ ‫تعداد‬‫ست‬:logn 1
‫یافتن‬ ‫برای‬ ‫الزم‬ ‫های‬‫مقایسه‬ ‫کل‬ ‫تعداد‬‫دوم‬ ‫کلید‬ ‫ترین‬‫بزرگ‬:
(n 1) (lgn 1) n lgn 2     
45
16 log16 2 16 4 2 18     
‫مثال‬:‫تعداد‬‫مقایسه‬‫مورد‬‫نیاز‬‫برای‬‫پیدا‬‫کردن‬‫دومین‬‫کوچکترین‬‫عنصر‬‫در‬‫آرایه‬16‫عنصری‬:
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫بین‬ ‫عنصر‬ ‫کوچکترین‬ ‫دومین‬n‫آورد؟‬ ‫دست‬‫به‬ ‫توان‬ ‫می‬ ‫مقایسه‬ ‫چند‬ ‫با‬ ‫را‬ ‫عنصر‬
1)2)
3)4)
n logn 1   n logn 2   
n logn 1   n logn 2   
(‫کامپیوتر‬ ‫مهندسی‬-‫هوش‬-‫دولتی‬86)
46
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
n
n (k 1) lg( ) k
k 1
 
    
(n)
47
‫برای‬ ‫پایین‬ ‫حد‬‫یافتن‬k‫در‬ ‫کلید‬ ‫ترین‬‫کوچک‬ ‫امین‬‫مجموعه‬n‫کلیدی‬:
k 1
‫یافتن‬k‫ترین‬‫کوچک‬ ‫امین‬‫کلید‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫کردن‬ ‫پیدا‬ ‫الگوریتم‬ ‫زمانی‬ ‫مرتبه‬ ‫کمترین‬k‫امین‬‫میران‬ ‫از‬ ‫عنصرر‬ ‫کوچکترین‬n‫عنصرر‬
‫است؟‬ ‫کدام‬
1)2)3)4) 3O(n )O(n)O(nlgn)‫هیچکدام‬
(‫مهندسی‬IT-‫دولتی‬85)
48
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
49
‫پایان‬
‫شیرافکن‬ ‫مدرس‬ ‫با‬ ‫مشاوره‬:
(‫جزوه‬-‫زنی‬ ‫تست‬ ‫کالس‬)
09121972028
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫فرادرس‬ ‫در‬ ‫شده‬ ‫مطرح‬ ‫نکات‬ ‫مبنای‬ ‫بر‬ ‫ها‬ ‫اسالید‬ ‫این‬
«‫الگوریتم‬ ‫طراحی‬ ‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫روش‬ ‫آموزش‬
(‫مرور‬-‫ارشد‬ ‫کنکور‬ ‫تست‬)»
‫است‬ ‫شده‬ ‫تهیه‬.
‫نمایید‬ ‫مراجعه‬ ‫زیر‬ ‫لینک‬ ‫به‬ ‫آموزش‬ ‫این‬ ‫مورد‬ ‫در‬ ‫بیشتر‬ ‫اطالعات‬ ‫کسب‬ ‫برای‬
faradars.org/fvsfte103
‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬
‫طراحی‬‫الگوریتم‬
faradars.org/fvsfte103
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org

More Related Content

What's hot

Morel, a Functional Query Language
Morel, a Functional Query LanguageMorel, a Functional Query Language
Morel, a Functional Query LanguageJulian Hyde
 
Project Tungsten: Bringing Spark Closer to Bare Metal
Project Tungsten: Bringing Spark Closer to Bare MetalProject Tungsten: Bringing Spark Closer to Bare Metal
Project Tungsten: Bringing Spark Closer to Bare MetalDatabricks
 
Programación Funcional 101 con Scala y ZIO 2.0
Programación Funcional 101 con Scala y ZIO 2.0Programación Funcional 101 con Scala y ZIO 2.0
Programación Funcional 101 con Scala y ZIO 2.0Jorge Vásquez
 
Copies CAPEPS Major 2010 Écrit 1 & Écrit 2
Copies CAPEPS Major 2010 Écrit 1 & Écrit 2Copies CAPEPS Major 2010 Écrit 1 & Écrit 2
Copies CAPEPS Major 2010 Écrit 1 & Écrit 2Cyril Schmit
 
Common derivatives integrals
Common derivatives integralsCommon derivatives integrals
Common derivatives integralsKavin Ruk
 
Improving PySpark performance: Spark Performance Beyond the JVM
Improving PySpark performance: Spark Performance Beyond the JVMImproving PySpark performance: Spark Performance Beyond the JVM
Improving PySpark performance: Spark Performance Beyond the JVMHolden Karau
 
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...Extreme Apache Spark: how in 3 months we created a pipeline that can process ...
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...Josef A. Habdank
 
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナドYoshihiro Mizoguchi
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em PythonLuciano Ramalho
 
Discrete Logarithm Problem over Prime Fields, Non-canonical Lifts and Logarit...
Discrete Logarithm Problem over Prime Fields, Non-canonical Lifts and Logarit...Discrete Logarithm Problem over Prime Fields, Non-canonical Lifts and Logarit...
Discrete Logarithm Problem over Prime Fields, Non-canonical Lifts and Logarit...PadmaGadiyar
 
Building a modern Application with DataFrames
Building a modern Application with DataFramesBuilding a modern Application with DataFrames
Building a modern Application with DataFramesDatabricks
 
Aiwolf seminar20180630
Aiwolf seminar20180630Aiwolf seminar20180630
Aiwolf seminar20180630Atom Sonoda
 
Writer Monad for logging execution of functions
Writer Monad for logging execution of functionsWriter Monad for logging execution of functions
Writer Monad for logging execution of functionsPhilip Schwarz
 
多段階計算の型システムの基礎
多段階計算の型システムの基礎多段階計算の型システムの基礎
多段階計算の型システムの基礎T. Suwa
 
RISC-Vの基礎、オバービュー(RISC-V basis-overview)
RISC-Vの基礎、オバービュー(RISC-V basis-overview)RISC-Vの基礎、オバービュー(RISC-V basis-overview)
RISC-Vの基礎、オバービュー(RISC-V basis-overview)Takayasu Shibata
 
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたScala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたKazuyuki TAKASE
 
第3回 データフレームの基本操作 その1(解答付き)
第3回 データフレームの基本操作 その1(解答付き)第3回 データフレームの基本操作 その1(解答付き)
第3回 データフレームの基本操作 その1(解答付き)Wataru Shito
 
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...Chris Richardson
 
unique_ptrにポインタ以外のものを持たせるとき
unique_ptrにポインタ以外のものを持たせるときunique_ptrにポインタ以外のものを持たせるとき
unique_ptrにポインタ以外のものを持たせるときShintarou Okada
 

What's hot (20)

Morel, a Functional Query Language
Morel, a Functional Query LanguageMorel, a Functional Query Language
Morel, a Functional Query Language
 
Project Tungsten: Bringing Spark Closer to Bare Metal
Project Tungsten: Bringing Spark Closer to Bare MetalProject Tungsten: Bringing Spark Closer to Bare Metal
Project Tungsten: Bringing Spark Closer to Bare Metal
 
Programación Funcional 101 con Scala y ZIO 2.0
Programación Funcional 101 con Scala y ZIO 2.0Programación Funcional 101 con Scala y ZIO 2.0
Programación Funcional 101 con Scala y ZIO 2.0
 
Copies CAPEPS Major 2010 Écrit 1 & Écrit 2
Copies CAPEPS Major 2010 Écrit 1 & Écrit 2Copies CAPEPS Major 2010 Écrit 1 & Écrit 2
Copies CAPEPS Major 2010 Écrit 1 & Écrit 2
 
Common derivatives integrals
Common derivatives integralsCommon derivatives integrals
Common derivatives integrals
 
Improving PySpark performance: Spark Performance Beyond the JVM
Improving PySpark performance: Spark Performance Beyond the JVMImproving PySpark performance: Spark Performance Beyond the JVM
Improving PySpark performance: Spark Performance Beyond the JVM
 
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...Extreme Apache Spark: how in 3 months we created a pipeline that can process ...
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...
 
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em Python
 
Discrete Logarithm Problem over Prime Fields, Non-canonical Lifts and Logarit...
Discrete Logarithm Problem over Prime Fields, Non-canonical Lifts and Logarit...Discrete Logarithm Problem over Prime Fields, Non-canonical Lifts and Logarit...
Discrete Logarithm Problem over Prime Fields, Non-canonical Lifts and Logarit...
 
Understanding jvm gc advanced
Understanding jvm gc advancedUnderstanding jvm gc advanced
Understanding jvm gc advanced
 
Building a modern Application with DataFrames
Building a modern Application with DataFramesBuilding a modern Application with DataFrames
Building a modern Application with DataFrames
 
Aiwolf seminar20180630
Aiwolf seminar20180630Aiwolf seminar20180630
Aiwolf seminar20180630
 
Writer Monad for logging execution of functions
Writer Monad for logging execution of functionsWriter Monad for logging execution of functions
Writer Monad for logging execution of functions
 
多段階計算の型システムの基礎
多段階計算の型システムの基礎多段階計算の型システムの基礎
多段階計算の型システムの基礎
 
RISC-Vの基礎、オバービュー(RISC-V basis-overview)
RISC-Vの基礎、オバービュー(RISC-V basis-overview)RISC-Vの基礎、オバービュー(RISC-V basis-overview)
RISC-Vの基礎、オバービュー(RISC-V basis-overview)
 
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたScala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
 
第3回 データフレームの基本操作 その1(解答付き)
第3回 データフレームの基本操作 その1(解答付き)第3回 データフレームの基本操作 その1(解答付き)
第3回 データフレームの基本操作 その1(解答付き)
 
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
 
unique_ptrにポインタ以外のものを持たせるとき
unique_ptrにポインタ以外のものを持たせるときunique_ptrにポインタ以外のものを持たせるとき
unique_ptrにポインタ以外のものを持たせるとき
 

Viewers also liked

آموزش ساختمان داده ها - بخش سوم
آموزش ساختمان داده ها - بخش سومآموزش ساختمان داده ها - بخش سوم
آموزش ساختمان داده ها - بخش سومfaradars
 
آموزش ساختمان داده ها - بخش ششم
آموزش ساختمان داده ها - بخش ششمآموزش ساختمان داده ها - بخش ششم
آموزش ساختمان داده ها - بخش ششمfaradars
 
آموزش ساختمان داده ها - بخش چهارم
آموزش ساختمان داده ها - بخش چهارمآموزش ساختمان داده ها - بخش چهارم
آموزش ساختمان داده ها - بخش چهارمfaradars
 
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش ششم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش ششمآموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش ششم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش ششمfaradars
 
آموزش پایگاه داده ها (مرور – تست کنکور ارشد)
آموزش پایگاه داده ها (مرور – تست کنکور ارشد)آموزش پایگاه داده ها (مرور – تست کنکور ارشد)
آموزش پایگاه داده ها (مرور – تست کنکور ارشد)faradars
 
آموزش ساختمان داده ها - بخش اول
آموزش ساختمان داده ها - بخش اولآموزش ساختمان داده ها - بخش اول
آموزش ساختمان داده ها - بخش اولfaradars
 

Viewers also liked (6)

آموزش ساختمان داده ها - بخش سوم
آموزش ساختمان داده ها - بخش سومآموزش ساختمان داده ها - بخش سوم
آموزش ساختمان داده ها - بخش سوم
 
آموزش ساختمان داده ها - بخش ششم
آموزش ساختمان داده ها - بخش ششمآموزش ساختمان داده ها - بخش ششم
آموزش ساختمان داده ها - بخش ششم
 
آموزش ساختمان داده ها - بخش چهارم
آموزش ساختمان داده ها - بخش چهارمآموزش ساختمان داده ها - بخش چهارم
آموزش ساختمان داده ها - بخش چهارم
 
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش ششم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش ششمآموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش ششم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش ششم
 
آموزش پایگاه داده ها (مرور – تست کنکور ارشد)
آموزش پایگاه داده ها (مرور – تست کنکور ارشد)آموزش پایگاه داده ها (مرور – تست کنکور ارشد)
آموزش پایگاه داده ها (مرور – تست کنکور ارشد)
 
آموزش ساختمان داده ها - بخش اول
آموزش ساختمان داده ها - بخش اولآموزش ساختمان داده ها - بخش اول
آموزش ساختمان داده ها - بخش اول
 

Similar to آموزش روش تقسیم و حل در طراحی الگوریتم (مرور – تست کنکور ارشد)

آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سوم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سومآموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سوم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سومfaradars
 
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکمآموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکمfaradars
 
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش دوم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش دومآموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش دوم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش دومfaradars
 
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش چهارم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش چهارمآموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش چهارم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش چهارمfaradars
 
آموزش ساختمان داده ها - بخش هشتم
آموزش ساختمان داده ها - بخش هشتمآموزش ساختمان داده ها - بخش هشتم
آموزش ساختمان داده ها - بخش هشتمfaradars
 
آموزش ساختمان داده ها - بخش دوم
آموزش ساختمان داده ها - بخش دومآموزش ساختمان داده ها - بخش دوم
آموزش ساختمان داده ها - بخش دومfaradars
 
Final presentation for Master Degree Thesis
Final presentation for Master Degree ThesisFinal presentation for Master Degree Thesis
Final presentation for Master Degree ThesisShahram Foroozan
 
آموزش ساختمان داده ها - بخش نهم
آموزش ساختمان داده ها - بخش نهمآموزش ساختمان داده ها - بخش نهم
آموزش ساختمان داده ها - بخش نهمfaradars
 
آموزش سیستم های عامل - بخش نهم
آموزش سیستم های عامل - بخش نهمآموزش سیستم های عامل - بخش نهم
آموزش سیستم های عامل - بخش نهمfaradars
 
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارمآموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارمfaradars
 
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش پنجم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش پنجمآموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش پنجم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش پنجمfaradars
 
آموزش سیستم های عامل - بخش ششم
آموزش سیستم های عامل - بخش ششمآموزش سیستم های عامل - بخش ششم
آموزش سیستم های عامل - بخش ششمfaradars
 
آموزش ساختمان داده ها - بخش هفتم
آموزش ساختمان داده ها - بخش هفتمآموزش ساختمان داده ها - بخش هفتم
آموزش ساختمان داده ها - بخش هفتمfaradars
 
آموزش سیستم های عامل - بخش دهم
آموزش سیستم های عامل - بخش دهمآموزش سیستم های عامل - بخش دهم
آموزش سیستم های عامل - بخش دهمfaradars
 
Introduction to matlab
Introduction to matlabIntroduction to matlab
Introduction to matlabAbbas Shomali
 
آموزش سیستم های عامل - بخش سوم
آموزش سیستم های عامل - بخش سومآموزش سیستم های عامل - بخش سوم
آموزش سیستم های عامل - بخش سومfaradars
 
امتحان دی ماه وب مقدماتی
امتحان دی ماه وب مقدماتیامتحان دی ماه وب مقدماتی
امتحان دی ماه وب مقدماتیsomayeh daneshparvar
 
آموزش محاسبه انتگرال به کمک شبیه سازی مونت کارلو
آموزش محاسبه انتگرال به کمک شبیه سازی مونت کارلوآموزش محاسبه انتگرال به کمک شبیه سازی مونت کارلو
آموزش محاسبه انتگرال به کمک شبیه سازی مونت کارلوfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس نهم
آموزش ذخیره و بازیابی اطلاعات - درس نهمآموزش ذخیره و بازیابی اطلاعات - درس نهم
آموزش ذخیره و بازیابی اطلاعات - درس نهمfaradars
 
تشخیص انجمن در مقیاس کلان داده
تشخیص انجمن در مقیاس کلان دادهتشخیص انجمن در مقیاس کلان داده
تشخیص انجمن در مقیاس کلان دادهNavid Sedighpour
 

Similar to آموزش روش تقسیم و حل در طراحی الگوریتم (مرور – تست کنکور ارشد) (20)

آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سوم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سومآموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سوم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش سوم
 
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکمآموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم
 
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش دوم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش دومآموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش دوم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش دوم
 
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش چهارم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش چهارمآموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش چهارم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش چهارم
 
آموزش ساختمان داده ها - بخش هشتم
آموزش ساختمان داده ها - بخش هشتمآموزش ساختمان داده ها - بخش هشتم
آموزش ساختمان داده ها - بخش هشتم
 
آموزش ساختمان داده ها - بخش دوم
آموزش ساختمان داده ها - بخش دومآموزش ساختمان داده ها - بخش دوم
آموزش ساختمان داده ها - بخش دوم
 
Final presentation for Master Degree Thesis
Final presentation for Master Degree ThesisFinal presentation for Master Degree Thesis
Final presentation for Master Degree Thesis
 
آموزش ساختمان داده ها - بخش نهم
آموزش ساختمان داده ها - بخش نهمآموزش ساختمان داده ها - بخش نهم
آموزش ساختمان داده ها - بخش نهم
 
آموزش سیستم های عامل - بخش نهم
آموزش سیستم های عامل - بخش نهمآموزش سیستم های عامل - بخش نهم
آموزش سیستم های عامل - بخش نهم
 
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارمآموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارم
آموزش تحقیق در عملیات (برنامه ریزی خطی) - بخش چهارم
 
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش پنجم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش پنجمآموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش پنجم
آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش پنجم
 
آموزش سیستم های عامل - بخش ششم
آموزش سیستم های عامل - بخش ششمآموزش سیستم های عامل - بخش ششم
آموزش سیستم های عامل - بخش ششم
 
آموزش ساختمان داده ها - بخش هفتم
آموزش ساختمان داده ها - بخش هفتمآموزش ساختمان داده ها - بخش هفتم
آموزش ساختمان داده ها - بخش هفتم
 
آموزش سیستم های عامل - بخش دهم
آموزش سیستم های عامل - بخش دهمآموزش سیستم های عامل - بخش دهم
آموزش سیستم های عامل - بخش دهم
 
Introduction to matlab
Introduction to matlabIntroduction to matlab
Introduction to matlab
 
آموزش سیستم های عامل - بخش سوم
آموزش سیستم های عامل - بخش سومآموزش سیستم های عامل - بخش سوم
آموزش سیستم های عامل - بخش سوم
 
امتحان دی ماه وب مقدماتی
امتحان دی ماه وب مقدماتیامتحان دی ماه وب مقدماتی
امتحان دی ماه وب مقدماتی
 
آموزش محاسبه انتگرال به کمک شبیه سازی مونت کارلو
آموزش محاسبه انتگرال به کمک شبیه سازی مونت کارلوآموزش محاسبه انتگرال به کمک شبیه سازی مونت کارلو
آموزش محاسبه انتگرال به کمک شبیه سازی مونت کارلو
 
آموزش ذخیره و بازیابی اطلاعات - درس نهم
آموزش ذخیره و بازیابی اطلاعات - درس نهمآموزش ذخیره و بازیابی اطلاعات - درس نهم
آموزش ذخیره و بازیابی اطلاعات - درس نهم
 
تشخیص انجمن در مقیاس کلان داده
تشخیص انجمن در مقیاس کلان دادهتشخیص انجمن در مقیاس کلان داده
تشخیص انجمن در مقیاس کلان داده
 

More from faradars

آموزش شبیه سازی مدارات الکتریکی با OrCAD
آموزش شبیه سازی مدارات الکتریکی با OrCADآموزش شبیه سازی مدارات الکتریکی با OrCAD
آموزش شبیه سازی مدارات الکتریکی با OrCADfaradars
 
آموزش فیزیک الکتریسیته - فصل ششم تا نهم
آموزش فیزیک الکتریسیته - فصل ششم تا نهمآموزش فیزیک الکتریسیته - فصل ششم تا نهم
آموزش فیزیک الکتریسیته - فصل ششم تا نهمfaradars
 
آموزش فیزیک الکتریسیته - فصل یکم تا پنجم
آموزش فیزیک الکتریسیته - فصل یکم تا پنجمآموزش فیزیک الکتریسیته - فصل یکم تا پنجم
آموزش فیزیک الکتریسیته - فصل یکم تا پنجمfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس دهم
آموزش ذخیره و بازیابی اطلاعات - درس دهمآموزش ذخیره و بازیابی اطلاعات - درس دهم
آموزش ذخیره و بازیابی اطلاعات - درس دهمfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتمآموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتمfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتمآموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتمfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس ششم
آموزش ذخیره و بازیابی اطلاعات - درس ششمآموزش ذخیره و بازیابی اطلاعات - درس ششم
آموزش ذخیره و بازیابی اطلاعات - درس ششمfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس پنجم
آموزش ذخیره و بازیابی اطلاعات - درس پنجمآموزش ذخیره و بازیابی اطلاعات - درس پنجم
آموزش ذخیره و بازیابی اطلاعات - درس پنجمfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس چهارم
آموزش ذخیره و بازیابی اطلاعات - درس چهارمآموزش ذخیره و بازیابی اطلاعات - درس چهارم
آموزش ذخیره و بازیابی اطلاعات - درس چهارمfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سومآموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سومfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس دوم
آموزش ذخیره و بازیابی اطلاعات - درس دومآموزش ذخیره و بازیابی اطلاعات - درس دوم
آموزش ذخیره و بازیابی اطلاعات - درس دومfaradars
 
آموزش ذخیره و بازیابی اطلاعات - درس یکم
آموزش ذخیره و بازیابی اطلاعات - درس یکمآموزش ذخیره و بازیابی اطلاعات - درس یکم
آموزش ذخیره و بازیابی اطلاعات - درس یکمfaradars
 
آموزش ترمودینامیک ۲ بخش سوم
آموزش ترمودینامیک ۲ بخش سومآموزش ترمودینامیک ۲ بخش سوم
آموزش ترمودینامیک ۲ بخش سومfaradars
 
آموزش ترمودینامیک ۲ بخش هشتم
آموزش ترمودینامیک ۲ بخش هشتمآموزش ترمودینامیک ۲ بخش هشتم
آموزش ترمودینامیک ۲ بخش هشتمfaradars
 
آموزش ترمودینامیک ۲ بخش دوم
آموزش ترمودینامیک ۲ بخش دومآموزش ترمودینامیک ۲ بخش دوم
آموزش ترمودینامیک ۲ بخش دومfaradars
 
آموزش ترمودینامیک ۲ بخش هفتم
آموزش ترمودینامیک ۲ بخش هفتمآموزش ترمودینامیک ۲ بخش هفتم
آموزش ترمودینامیک ۲ بخش هفتمfaradars
 
آموزش ترمودینامیک ۲ بخش ششم
آموزش ترمودینامیک ۲ بخش ششمآموزش ترمودینامیک ۲ بخش ششم
آموزش ترمودینامیک ۲ بخش ششمfaradars
 
آموزش ترمودینامیک ۲ بخش اول
آموزش ترمودینامیک ۲ بخش اولآموزش ترمودینامیک ۲ بخش اول
آموزش ترمودینامیک ۲ بخش اولfaradars
 
آموزش ترمودینامیک ۲ بخش پنجم
آموزش ترمودینامیک ۲ بخش پنجمآموزش ترمودینامیک ۲ بخش پنجم
آموزش ترمودینامیک ۲ بخش پنجمfaradars
 
آموزش ترمودینامیک ۲ بخش چهارم
آموزش ترمودینامیک ۲ بخش چهارمآموزش ترمودینامیک ۲ بخش چهارم
آموزش ترمودینامیک ۲ بخش چهارمfaradars
 

More from faradars (20)

آموزش شبیه سازی مدارات الکتریکی با OrCAD
آموزش شبیه سازی مدارات الکتریکی با OrCADآموزش شبیه سازی مدارات الکتریکی با OrCAD
آموزش شبیه سازی مدارات الکتریکی با OrCAD
 
آموزش فیزیک الکتریسیته - فصل ششم تا نهم
آموزش فیزیک الکتریسیته - فصل ششم تا نهمآموزش فیزیک الکتریسیته - فصل ششم تا نهم
آموزش فیزیک الکتریسیته - فصل ششم تا نهم
 
آموزش فیزیک الکتریسیته - فصل یکم تا پنجم
آموزش فیزیک الکتریسیته - فصل یکم تا پنجمآموزش فیزیک الکتریسیته - فصل یکم تا پنجم
آموزش فیزیک الکتریسیته - فصل یکم تا پنجم
 
آموزش ذخیره و بازیابی اطلاعات - درس دهم
آموزش ذخیره و بازیابی اطلاعات - درس دهمآموزش ذخیره و بازیابی اطلاعات - درس دهم
آموزش ذخیره و بازیابی اطلاعات - درس دهم
 
آموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتمآموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتم
 
آموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتمآموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتم
 
آموزش ذخیره و بازیابی اطلاعات - درس ششم
آموزش ذخیره و بازیابی اطلاعات - درس ششمآموزش ذخیره و بازیابی اطلاعات - درس ششم
آموزش ذخیره و بازیابی اطلاعات - درس ششم
 
آموزش ذخیره و بازیابی اطلاعات - درس پنجم
آموزش ذخیره و بازیابی اطلاعات - درس پنجمآموزش ذخیره و بازیابی اطلاعات - درس پنجم
آموزش ذخیره و بازیابی اطلاعات - درس پنجم
 
آموزش ذخیره و بازیابی اطلاعات - درس چهارم
آموزش ذخیره و بازیابی اطلاعات - درس چهارمآموزش ذخیره و بازیابی اطلاعات - درس چهارم
آموزش ذخیره و بازیابی اطلاعات - درس چهارم
 
آموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سومآموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سوم
 
آموزش ذخیره و بازیابی اطلاعات - درس دوم
آموزش ذخیره و بازیابی اطلاعات - درس دومآموزش ذخیره و بازیابی اطلاعات - درس دوم
آموزش ذخیره و بازیابی اطلاعات - درس دوم
 
آموزش ذخیره و بازیابی اطلاعات - درس یکم
آموزش ذخیره و بازیابی اطلاعات - درس یکمآموزش ذخیره و بازیابی اطلاعات - درس یکم
آموزش ذخیره و بازیابی اطلاعات - درس یکم
 
آموزش ترمودینامیک ۲ بخش سوم
آموزش ترمودینامیک ۲ بخش سومآموزش ترمودینامیک ۲ بخش سوم
آموزش ترمودینامیک ۲ بخش سوم
 
آموزش ترمودینامیک ۲ بخش هشتم
آموزش ترمودینامیک ۲ بخش هشتمآموزش ترمودینامیک ۲ بخش هشتم
آموزش ترمودینامیک ۲ بخش هشتم
 
آموزش ترمودینامیک ۲ بخش دوم
آموزش ترمودینامیک ۲ بخش دومآموزش ترمودینامیک ۲ بخش دوم
آموزش ترمودینامیک ۲ بخش دوم
 
آموزش ترمودینامیک ۲ بخش هفتم
آموزش ترمودینامیک ۲ بخش هفتمآموزش ترمودینامیک ۲ بخش هفتم
آموزش ترمودینامیک ۲ بخش هفتم
 
آموزش ترمودینامیک ۲ بخش ششم
آموزش ترمودینامیک ۲ بخش ششمآموزش ترمودینامیک ۲ بخش ششم
آموزش ترمودینامیک ۲ بخش ششم
 
آموزش ترمودینامیک ۲ بخش اول
آموزش ترمودینامیک ۲ بخش اولآموزش ترمودینامیک ۲ بخش اول
آموزش ترمودینامیک ۲ بخش اول
 
آموزش ترمودینامیک ۲ بخش پنجم
آموزش ترمودینامیک ۲ بخش پنجمآموزش ترمودینامیک ۲ بخش پنجم
آموزش ترمودینامیک ۲ بخش پنجم
 
آموزش ترمودینامیک ۲ بخش چهارم
آموزش ترمودینامیک ۲ بخش چهارمآموزش ترمودینامیک ۲ بخش چهارم
آموزش ترمودینامیک ۲ بخش چهارم
 

آموزش روش تقسیم و حل در طراحی الگوریتم (مرور – تست کنکور ارشد)

  • 1. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫مدرس‬: ‫شیرافکن‬ ‫فرشید‬ ‫دانشجوی‬‫تهران‬ ‫دانشگاه‬ ‫دکتری‬ (‫ارشد‬ ‫کارشناسی‬ ‫و‬ ‫کارشناسی‬:‫افزار‬ ‫نرم‬ ‫کامپیوتر‬( )‫دکتری‬:‫انفورماتیک‬ ‫بیو‬) ‫کنکور‬‫ارشد‬ ‫کارشناسی‬ ‫الگوریتم‬ ‫طراحی‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫روش‬ 1 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 2. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫هنگام‬‫طراحی‬‫الگوریتم‬‫های‬‫تقسیم‬‫و‬‫حل‬ً‫ال‬‫معمو‬‫آن‬‫را‬‫به‬‫صورت‬‫یک‬‫روال‬‫بازگشتی‬‫می‬‫نوی‬‫سند‬. ‫حل‬ ‫و‬ ‫تقسیم‬ ‫روش‬(Divide-and-Conquer) ‫مراحل‬: 1-‫تقسیم‬‫نمونه‬‫ای‬‫از‬‫یک‬‫مسئله‬‫به‬‫یک‬‫یا‬‫چند‬‫نمونه‬‫کوچکتر‬ 2-‫حل‬‫نمونه‬‫های‬‫کوچکتر‬ 3-‫ترکیب‬‫حل‬‫نمونه‬‫های‬‫کوچکتر‬‫برای‬‫بدست‬‫آوردن‬‫حل‬‫نمونه‬‫اولیه‬(‫در‬‫صورت‬‫نیاز‬) ‫دلیل‬‫اینکه‬‫می‬‫گوئیم‬"‫در‬‫صورت‬‫نیاز‬"‫این‬‫است‬‫که‬‫در‬‫بعضی‬‫الگوریتم‬‫ها‬‫مانند‬‫جستجوی‬‫دودویی‬‫نمونه‬‫فقط‬‫به‬‫یک‬‫نمونه‬ ‫کوچکتر‬‫کاهش‬‫می‬‫یابد‬‫و‬‫نیازی‬‫به‬‫ترکیب‬‫حل‬‫ها‬‫نیست‬. 2 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 3. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫مثال‬ ‫الگوریتمی‬‫هر‬‫ورودی‬‫مسئله‬‫به‬‫اندازه‬‫ی‬n‫را‬‫به‬2‫بخش‬‫کم‬‫و‬‫بیش‬‫مساوی‬‫تقسیم‬ ‫می‬‫کند‬.‫زیر‬‫مسئله‬‫ها‬‫را‬‫به‬‫صورت‬‫بازگشتی‬‫حل‬‫و‬‫سپس‬‫با‬‫هزینه‬‫خطی‬‫حاصل‬‫این‬ ‫دو‬‫را‬‫با‬‫هم‬‫ترکیب‬‫کرده‬‫و‬‫جواب‬‫مسئله‬‫را‬‫به‬‫دست‬‫می‬‫آورد‬. ‫رابطه‬‫بازگشتی‬: n T(n) 2T( ) O(n) T(n) O(nlgn) 2     3 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 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
  • 6. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫اندازه‬ ‫با‬ ‫مسئله‬ ‫یک‬ ‫حل‬ ‫برای‬n‫است‬ ‫پذیر‬ ‫امکان‬ ‫زیر‬ ‫شرح‬ ‫به‬ ‫روش‬ ‫سه‬ ‫غلبه‬ ‫و‬ ‫تقسیم‬ ‫الگوریتم‬ ‫با‬: ‫اول‬ ‫روش‬:‫حل‬3‫هزینه‬ ‫با‬ ‫ها‬ ‫آن‬ ‫ترکیب‬ ‫و‬ ‫اندازه‬ ‫به‬ ‫مسئله‬ ‫زیر‬ ‫دوم‬ ‫روش‬:‫حل‬4‫هزینه‬ ‫با‬ ‫ها‬ ‫آن‬ ‫ترکیب‬ ‫و‬ ‫اندازه‬ ‫به‬ ‫مسئله‬ ‫زیر‬ ‫سوم‬ ‫روش‬:‫حل‬5‫هزینه‬ ‫با‬ ‫ها‬ ‫آن‬ ‫ترکیب‬ ‫و‬ ‫اندازه‬ ‫به‬ ‫مسئله‬ ‫زیر‬ ‫است؟‬ ‫کمتری‬ ‫هزینه‬ ‫دارای‬ ‫روش‬ ‫کدام‬ 1)‫اول‬ ‫روش‬2)‫دوم‬ ‫روش‬3)‫سوم‬ ‫روش‬4)‫هستند‬ ‫یکسان‬ ‫روش‬ ‫سه‬ ‫هر‬. n 2 2(n n) n 2 2(n ) n 2 (nlgn) (‫مهندسی‬IT-‫دولتی‬86) 6 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 7. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫روش‬‫اول‬:2 2n T(n) 3T( ) (n n) T(n) (n n) 2       ‫دوم‬ ‫روش‬: 2 2n T(n) 4T( ) (n ) T(n) (n lgn) 2       ‫سوم‬ ‫روش‬:5 2lgn T(n) 5T( ) (nlgn) T(n) (n ) 2       7 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 8. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫پیدا‬‫کردن‬‫عدد‬10‫در‬‫آرایه‬‫مرتب‬: 8 1 2 3 4 5 6 7 8 9 5 9 10 20 35 50 60 70 75 5 9 10 20 35 50 60 70 75 5 9 10 20 35 50 60 70 75 5 9 10 20 35 50 60 70 75 ‫دودویی‬ ‫جستجوی‬ ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 9. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 bsearch (a[ ] , x , low , high ){ if (low <=high ) { mid = ( low+high ) / 2; if ( x < a[mid] ) bsearch( a , x , low , mid-1 ); else if ( x > a[mid] ) bsearch (a , x , mid+1 , high ); else return mid; } return -1; } 9 1) 2 ()(  n TnT )(lg nO highmid+1midmid-1low …… ‫الگوریتم‬ ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 10. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫ادغامی‬ ‫سازی‬ ‫مرتب‬(Merge Sort) 10 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ 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
  • 13. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫بندی‬ ‫پارتیشن‬ ‫الگوریتم‬ 13 46531782 46531782 46531782 46531782 46538712 46578312 46578312 46578312 86574312 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 14. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫سریع‬ ‫سازی‬ ‫مرتب‬ ‫عملکرد‬ ‫حالت‬‫خوب‬‫و‬‫میانگین‬: T(n) = T(n/2) + T(n/2)+O(n) O(nlogn) 14 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 15. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫سریع‬ ‫سازی‬ ‫مرتب‬ ‫حالت‬ ‫بدترین‬ ‫در‬‫صورتی‬‫که‬‫اولین‬‫عنصر‬‫یا‬‫آخرین‬‫عنصر‬‫را‬‫به‬‫عنوان‬‫محور‬‫انتخاب‬،‫کنیم‬‫م‬‫رتب‬ ‫سازی‬‫سریع‬‫برای‬‫یک‬‫آرایه‬‫مرتب‬،‫بدترین‬‫عملکرد‬‫را‬‫خواهد‬‫داشت‬. T(n) = T(n-1) + O(n) O(n^2) 15 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 16. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫استراسن‬‫الگوریتمی‬‫را‬‫ارائه‬‫داد‬‫که‬‫پیچیدگی‬،‫آن‬‫از‬‫لحاظ‬‫ضرب‬)‫و‬‫همچنین‬‫از‬‫لحاظ‬‫جمع‬‫و‬‫تفریق‬)‫بهتر‬‫از‬ ‫پیچیدگی‬‫درجه‬‫سوم‬‫است‬. ‫استراسن‬ ‫های‬ ‫ماتریس‬ ‫ضرب‬ 16 Strassen’s matrix multiplication                     1111011010110010 1101010010010000 1110 0100 1110 0100 **** **** * BABABABA BABABABA BB BB AA AA ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 17. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103                     623142 537541 1110 0100 1110 0100 * MMMMMM MMMMMM BB BB AA AA M1=(A00+A11)*(B00+B11) M2=(A10+A11)*B00 M3=A00*(B01-B11) M4=A11*(B10-B00) M5=(A00+A01)*B11 M6=(A10-A00)*(B00+B01) M7=(A01-A11)*(B10+B11) 17 ‫استراسن‬ ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 18. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 3 17 5 7 3 10 5 9 86 75 11 17 13 7 11 10 13 9 278 227                       18 1 2 2 3 8 9 9 1 3 5 17 10 5 6 6 7 3 4 4 5 11 13 7 9                                                  ‫مثال‬:‫محاسبه‬M1 M1=(A00+A11)*(B00+B11)                     623142 537541 1110 0100 1110 0100 * MMMMMM MMMMMM BB BB AA AA ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 19. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫تحلیل‬‫پیچیدگی‬‫زمانی‬‫الگوریتم‬‫استراسن‬ ‫بازگشتی‬ ‫دستور‬(‫ضرب‬ ‫اصلی‬ ‫عمل‬‫است‬:) n T(n) 7T( ) 2  T(1) 1 lg7 2.81T(n) (n ) (n )    19 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 20. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫اگر‬‫در‬‫ضرب‬‫ها‬‫ماتریس‬‫به‬‫روش‬‫استراسن‬(Strassen)،‫مساله‬‫کوچک‬‫ضرب‬‫ماتریس‬‫های‬،‫باشد‬ ‫برای‬‫ضرب‬‫دو‬‫ماتریس‬،‫چند‬‫ضرب‬‫عددی‬‫صورت‬‫پذیرد؟‬‫می‬ 2 2 8 8 1)572)3433)3924)512 n T(n) 7T( ) 2 T(2) 8   T(4) 7T(2) 7 8 56 T(8) 7T(4) 7 56 392         (‫مهندسی‬IT-‫دولتی‬85) 20 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 21. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫اگر‬‫در‬‫ضرب‬‫ها‬‫ماتریس‬‫به‬‫روش‬،‫استراسن‬‫مساله‬،‫کوچک‬‫ضرب‬‫های‬‫ماتریس‬،‫باشد‬‫با‬‫چند‬‫فراخوانی‬ ‫بازگشتی‬‫به‬‫الگوریتم‬،‫استراسن‬‫عمل‬‫ضرب‬‫دو‬‫ماتریس‬‫انجام‬‫پذیرد؟‬‫می‬ 2 2 8 8 1)3432)573)494)7 ‫مقدار‬ ‫باید‬T(8)‫کرد‬ ‫محاسبه‬ ‫زیر‬ ‫بازگشتی‬ ‫رابطه‬ ‫از‬ ‫را‬: n T(n) 7T( ) 1 2 T(2) 1    T(4) 7T(2) 1 8 T(8) 7T(4) 1 7 8 1 57          (‫مهندسی‬IT-‫دولتی‬86) 21 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 22. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫خواهیم‬‫می‬‫عنصر‬‫بیشینه‬‫را‬‫در‬‫یک‬‫ماتریس‬‫به‬‫اندازه‬‫بیابیم‬.‫برای‬‫این‬‫کار‬‫ماتریس‬‫را‬‫به‬4 ‫قسمت‬‫مساوی‬‫و‬‫هرکدام‬‫به‬‫اندازه‬‫تقسیم‬‫کنیم‬‫می‬.‫بیشینه‬‫هرکدام‬‫را‬‫به‬‫صورت‬‫بازگ‬‫شتی‬‫به‬ ‫دست‬‫آوریم‬‫می‬‫و‬‫بین‬‫آنها‬‫جواب‬‫نهایی‬‫را‬‫پیدا‬‫کنیم‬‫می‬.‫تعداد‬‫دقیق‬‫های‬‫مقایسه‬‫عناصر‬‫با‬‫هم‬‫د‬‫ر‬‫این‬ ‫الگوریتم‬‫چندتاست؟‬() n n n n 2 2  kn 2 1)2)3)4) 2n 12n 13lgn3(lgn 1) (‫کامپیوتر‬ ‫مهندسی‬-‫هوش‬-‫دولتی‬89) 22 n T(n) 4T( ) 3 2   T(2) 3 4 2lg 2 T(n) (n ) (n )    ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 23. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫بزرگ‬ ‫صحیح‬ ‫عدد‬ ‫دو‬ ‫ضرب‬ ‫برای‬‫انجام‬‫اعمال‬‫محاسباتی‬‫روی‬‫اعداد‬‫صحیحی‬‫بزرگتر‬‫از‬‫حد‬‫قابل‬‫نمایش‬‫توسط‬‫سخت‬‫افزار‬‫کامپیوت‬،‫ر‬‫باید‬‫از‬ ‫روش‬‫تقسیم‬‫و‬‫حل‬‫استفاده‬‫کرد‬. ‫اگر‬n‫تعداد‬‫ارقام‬‫عدد‬‫صحیح‬u،‫باشد‬‫آن‬‫را‬‫به‬‫دو‬‫عدد‬‫صحیح‬‫یکی‬x‫با‬‫رقم‬‫و‬‫دیگری‬y‫با‬ ‫تبدیل‬‫کنیم‬‫می‬‫به‬‫صورت‬:‫که‬. n / 2  n / 2   mu x 10 y  m n / 2    212345 123 10 45   23 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 24. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫ضرب‬u‫و‬v m m 2m muv (x 10 y)(w 10 z) xw 10 (xz wy) 10 yz           ‫پس‬‫می‬‫توان‬v‫و‬u‫را‬‫با‬4‫عمل‬‫ضرب‬‫روی‬‫اعداد‬‫صحیح‬(‫با‬‫حدود‬‫نیمی‬‫از‬‫ارقام‬)‫و‬‫اجرای‬‫عملیات‬ ‫زمان‬،‫خطی‬‫در‬‫هم‬‫ضرب‬‫کنیم‬. 24 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 25. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫ضرب‬‫دو‬‫عدد‬567832‫و‬9423723: ‫سپس‬‫این‬‫اعداد‬‫صحیح‬‫کوچکتر‬‫را‬‫با‬‫همین‬‫روال‬‫ضرب‬‫کنیم‬‫می‬: 2 2 2 2 567 9423 (5 10 67)(94 10 23) 5 94 10 (5 23 67 94) 10 67 23                 ‫در‬‫این‬‫صورت‬‫عمل‬‫ضرب‬‫اعداد‬‫حداکثر‬‫دو‬‫رقمی‬‫را‬‫به‬‫طریق‬‫معمولی‬‫انجام‬‫می‬‫دهیم‬. 3 3 6 3 567,832 9,423,723 (567 10 832)(9423 10 723) 567 9,423 10 (567 723 9423 832) 10 832 723                 ‫مثال‬ 25 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 26. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫تحلیل‬‫الگوریتم‬‫در‬‫بدترین‬‫حالت‬ 26 ‫الگوریتم‬‫سریعتر‬: ‫در‬‫الگوریتم‬‫قبلی‬‫برای‬‫محاسبه‬‫ضرب‬‫دو‬‫عدد‬‫به‬4‫عمل‬‫ضرب‬‫نیاز‬‫بود‬‫که‬‫با‬‫یک‬‫ابتکار‬‫جالب‬‫تعداد‬‫آن‬‫را‬‫به‬3‫عمل‬ ،‫ضرب‬‫کاهش‬‫می‬‫دهیم‬. cn n TnT  ) 2 (3)( )()( 58.1 3 2log nn   cn n TnT  ) 2 (4)( )()( 2 4 2log nn   ‫مرتبه‬‫عدد‬ ‫دو‬ ‫ضرب‬k‫رقمی‬:3 2lg k ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 27. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫برای‬‫ضرب‬‫دو‬‫عدد‬‫و‬‫به‬‫ترتیب‬‫با‬‫و‬‫رقم‬‫برای‬: ABn4n5000 n 10000  1)‫کرد‬ ‫استفاده‬ ‫ها‬ ‫آن‬ ‫ضرب‬ ‫برای‬ ‫کالسیک‬ ‫و‬ ‫معمولی‬ ‫روش‬ ‫از‬ ‫است‬ ‫بهتر‬. 2)‫بهتر‬‫است‬‫از‬‫الگوریتم‬‫تقسیم‬‫و‬‫حل‬‫استفاده‬‫کرد‬‫و‬‫فرقی‬‫نمی‬‫کند‬‫به‬‫چه‬‫ترتیبی‬. 4)‫کردن‬ ‫قسمت‬ ‫از‬ ‫پس‬ ‫است‬ ‫بهتر‬B‫به‬4‫بخش‬n‫در‬ ‫را‬ ‫ها‬ ‫بخش‬ ‫این‬ ‫از‬ ‫کدام‬ ‫هر‬ ،‫رقمی‬A‫کرد‬ ‫ضرب‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫روش‬ ‫با‬ ‫و‬. 3)‫بهتر‬‫است‬‫پس‬‫از‬‫اضافه‬‫کردن‬3n‫صفر‬‫به‬‫سمت‬‫چپ‬A‫،عدد‬‫حاصل‬‫را‬‫با‬‫کمک‬‫الگوریتم‬‫تقسیم‬‫و‬‫حل‬‫در‬B‫ضرب‬‫کرد‬. (‫کامپیوتر‬ ‫مهندسی‬-‫دولتی‬83) 27 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 28. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 3 2lg k ‫در‬‫این‬‫حالت‬‫دو‬‫عدد‬4n‫رقمی‬‫داریم‬‫که‬‫مرتبه‬‫ضرب‬،‫آنها‬‫برابر‬‫است‬‫با‬: 3 3 3 4 3 3 2 2 2 2 2 2lg lg lg lg lg lg (4n) 4 n 3 n 9n     28 ‫دانیم‬ ‫می‬‫مرتبه‬ ‫که‬‫عدد‬ ‫دو‬ ‫ضرب‬k‫حل‬ ‫و‬ ‫تقسیم‬ ‫روش‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫رقمی‬‫برابر‬‫با‬ ‫است‬: ‫گزینه‬3:‫عدد‬A‫که‬n‫رقمی‬‫است‬‫را‬‫با‬‫اضافه‬‫کردن‬‫صفر‬‫به‬‫سمت‬‫چپ‬،‫آن‬4n‫رقمی‬‫کنیم‬. ‫گزینه‬4:‫عدد‬B‫که‬4n‫رقمی‬‫است‬‫را‬‫به‬‫چهار‬‫بخش‬n‫رقمی‬‫تبدیل‬‫کنیم‬‫و‬‫هر‬‫کدام‬‫از‬‫این‬‫بخش‬‫ها‬‫را‬‫در‬ A‫با‬‫کمک‬‫الگوریتم‬‫تقسیم‬‫و‬‫حل‬‫ضرب‬‫کرد‬.‫مرتبه‬‫چهار‬‫ضرب‬n،‫رقمی‬‫برابر‬‫است‬‫با‬: 3 2lg 4n ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 29. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫انتخاب‬i‫امین‬‫کوچکترین‬‫عنصر‬‫در‬‫آرایه‬n‫عنصری‬(‫عنصر‬‫با‬‫رتبه‬i) i=1:‫مینیمم‬ i=n:‫ماکزیمم‬ i = ⎣(n+1) / 2⎦ or ⎡(n+1)/2⎤:‫میانه‬ 29 ‫انتخاب‬ ‫مسئله‬ ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 30. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫اول‬ ‫عنصر‬‫در‬ ‫محور‬ ‫را‬‫کنیم‬ ‫می‬ ‫بندی‬ ‫پارتیشن‬ ‫و‬ ‫گیریم‬ ‫می‬ ‫نظر‬: 30 ‫عنصر‬ ‫کوچکترین‬ ‫هفتمین‬ ‫کردن‬ ‫پیدا‬ ‫دنبال‬ ‫به‬ ‫رنگ‬ ‫صورتی‬ ‫قسمت‬ ‫در‬ ‫بازگشتی‬ ‫طور‬ ‫به‬‫سومین‬‫گردیم‬ ‫می‬ ‫عنصر‬ ‫کوچکترین‬. (2,3,5,6,8,10,11,13) ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ 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
  • 32. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫ابتدا‬‫همه‬‫عناصر‬‫را‬‫به‬‫دسته‬‫های‬5‫تایی‬(‫به‬‫جز‬ً‫ال‬‫احتما‬‫یک‬‫دسته‬)‫تقسیم‬‫کنی‬‫می‬‫م‬. ‫میانه‬‫هر‬‫دسته‬‫را‬‫به‬‫دست‬‫آوریم‬‫می‬‫و‬‫سپس‬‫میانه‬‫میانه‬‫ها‬‫را‬‫به‬‫صورت‬‫بازگ‬‫شتی‬ ‫پیدا‬‫کنیم‬‫می‬. ‫این‬‫عنصر‬‫را‬‫به‬‫عنوان‬‫محور‬‫انتخاب‬‫کنیم‬‫می‬‫و‬‫عمل‬partition‫را‬‫بر‬‫روی‬‫آرایه‬ ‫عناصر‬‫انجام‬‫دهیم‬‫می‬. ‫همین‬‫الگوریتم‬‫را‬‫بصورت‬‫بازگشتی‬(‫و‬‫برای‬‫یک‬k‫دیگر‬)‫بر‬‫روی‬‫یکی‬‫از‬‫ها‬‫بخش‬ ‫اجرا‬‫کنیم‬‫می‬‫تا‬‫عنصر‬‫مورد‬‫نظر‬‫پیدا‬‫شود‬. 32 ‫انتخاب‬ ‫الگوریتم‬k‫عنصر‬ ‫امین‬(‫ها‬ ‫میانه‬ ‫میانه‬) ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 33. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫تقسیم‬54‫با‬ ‫گروهایی‬ ‫به‬ ‫عنصر‬n/5‫عنصر‬(‫نتیجه‬ ‫در‬11‫داشت‬ ‫خواهیم‬ ‫گروه‬) 33 ‫مثال‬ ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 34. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫گروه‬ ‫هر‬ ‫کردن‬ ‫مرتب‬ 34 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 35. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫گروه‬ ‫هر‬ ‫میانه‬ ‫کردن‬ ‫مشخص‬ 35 ‫ها‬ ‫میانه‬ ‫میانه‬ ‫انتخاب‬(‫عدد‬28) ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 36. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 36 ‫حداقل‬‫ها‬ ‫میانه‬ ‫میانه‬ ‫از‬ ‫بزرگتر‬ ‫های‬ ‫میانه‬ ‫تعداد‬ ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 37. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫حداقل‬‫ها‬ ‫میانه‬ ‫میانه‬ ‫از‬ ‫بزرگتر‬ ‫عناصر‬ 37 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 38. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫حداقل‬‫ها‬ ‫میانه‬ ‫میانه‬ ‫از‬ ‫کوچکتر‬ ‫عناصر‬ ‫تعداد‬‫ش‬ ‫می‬ ‫زده‬ ‫صدا‬ ‫بازگشتی‬ ‫طور‬ ‫به‬ ‫ها‬ ‫آن‬ ‫برای‬ ‫انتخاب‬ ‫تابع‬ ‫که‬ ‫عناصری‬‫ود‬: 3n 7n n 6 6 10 10          38 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ 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
  • 41. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫مقدار‬m=5،‫کوچکترین‬‫مقدار‬‫فرد‬‫است‬‫که‬‫منجر‬‫به‬‫کارایی‬‫خطی‬ ‫می‬‫شود‬.‫به‬‫همین‬‫علت‬‫در‬‫توضیح‬‫الگوریتم‬،‫انتخاب‬‫عناصر‬‫را‬‫به‬‫دست‬‫ه‬‫های‬ ‫پنج‬‫تایی‬‫تقسیم‬‫کردیم‬. 41 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 42. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫در‬‫الگوریتم‬‫پیدا‬‫کردن‬k‫امین‬،‫عنصر‬‫ابتدا‬‫همه‬‫عناصر‬‫را‬‫به‬‫دسته‬‫های‬5‫تایی‬(‫به‬‫جز‬ً‫ال‬‫احتما‬‫یک‬‫دسته‬)‫تقسیم‬ ،‫کنیم‬‫می‬‫میانه‬‫هر‬‫دسته‬‫را‬‫به‬‫دست‬‫آوریم‬‫می‬‫و‬‫سپس‬‫میانه‬‫میانه‬‫ها‬‫را‬‫به‬‫صورت‬‫بازگشتی‬‫پیدا‬‫کنی‬‫می‬‫م‬.‫این‬ ‫عنصر‬‫را‬‫به‬‫عنوان‬‫محور‬‫انتخاب‬‫کنیم‬‫می‬‫و‬‫عمل‬partition‫را‬‫بر‬‫روی‬‫آرایه‬‫عناصر‬‫انجام‬‫دهیم‬‫می‬.‫پس‬‫از‬‫آن‬ ‫همین‬‫الگوریتم‬‫را‬‫بصورت‬‫بازگشتی‬(‫و‬‫برای‬‫یک‬k‫دیگر‬)‫بر‬‫روی‬‫یکی‬‫از‬‫ها‬‫بخش‬‫اجرا‬‫کنیم‬‫می‬‫تا‬‫عنصر‬‫مورد‬‫نظر‬ ‫پیدا‬‫شود‬.‫زمان‬‫اجرای‬‫این‬‫الگوریتم‬‫توسط‬‫کدام‬‫یک‬‫از‬‫های‬‫رابطه‬‫بازگشتی‬‫زیر‬‫بیان‬‫شود؟‬‫می‬ 1)2) 3)4) n 3n T(n) T( ) T( 6) O(n) 5 10          n 3n T(n) T( ) T( 6) O(n) 5 10          n 7n T(n) T( ) T( 6) O(n) 5 10          n 7n T(n) T( ) T( 6) O(n) 5 10          (‫کامپیوتر‬ ‫مهندسی‬-‫دولتی‬82) 42 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 43. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫در‬‫راه‬‫حل‬‫کالسیک‬‫برای‬‫یافتن‬‫عنصر‬‫میانه‬‫ی‬n،‫عنصر‬‫عناصر‬‫را‬‫به‬‫دسته‬‫های‬5‫تایی‬‫تقسیم‬‫کردیم‬ ‫و‬‫میانه‬‫ی‬‫هر‬‫کدام‬‫و‬‫سپس‬‫میانه‬‫ی‬‫میانه‬‫ها‬‫را‬‫به‬‫صورت‬‫بازگشتی‬‫به‬‫دست‬‫آوردیم‬.‫این‬‫عنصر‬‫به‬ ‫عنوان‬‫محور‬‫برای‬‫بخش‬‫بندی‬‫عناصر‬‫محسوب‬‫می‬‫شود‬.‫اگر‬‫به‬‫جای‬‫دسته‬‫های‬5،‫تایی‬‫از‬‫دسته‬‫های‬ 3‫تایی‬‫استفاده‬،‫کنیم‬‫زمان‬‫اجرا‬‫توسط‬‫کدام‬‫رابطه‬‫ی‬‫بازگشتی‬‫بیان‬‫می‬‫شود؟‬ 1)2) 3)4) 2n T(n) T( ) cn 3   n T(n) T( ) cn 3   n T(n) 2T( ) cn 3   n 2n T(n) T( ) T( ) cn 3 3    (‫کامپیوتر‬ ‫مهندسی‬-‫دولتی‬91) 43 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 44. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫دوم‬ ‫کلید‬ ‫ترین‬ ‫بزرگ‬ ‫یافتن‬(‫تورنمن‬‫ت‬) ‫اگر‬8‫کلید‬‫داشته‬،‫باشیم‬‫در‬‫دور‬،‫اول‬4‫مقایسه‬،‫دور‬،‫دوم‬2‫مقایسه‬‫و‬‫دور‬‫آخر‬1‫مقایسه‬‫خواهیم‬‫داشت‬.(n-1) ‫برنده‬‫دور‬،‫آخر‬‫بزرگترین‬‫کلید‬‫است‬.‫بازنده‬‫دور‬‫آخر‬‫الزاما‬‫بزرگ‬‫ترین‬‫کلید‬‫دوم‬‫نیست‬. ‫کلیدی‬‫که‬‫یک‬‫مقایسه‬‫را‬‫به‬18‫ببازد‬،‫به‬‫لیست‬‫اضافه‬‫می‬‫شود‬. 12,16,15 44 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 45. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫تعداد‬‫لیست‬ ‫اعداد‬:logn(‫درخت‬ ‫ارتفاع‬‫مقایسه‬) ‫لی‬ ‫این‬ ‫در‬ ‫عدد‬ ‫بزرگترین‬ ‫پیداکردن‬ ‫برای‬ ‫مقایسه‬ ‫تعداد‬‫ست‬:logn 1 ‫یافتن‬ ‫برای‬ ‫الزم‬ ‫های‬‫مقایسه‬ ‫کل‬ ‫تعداد‬‫دوم‬ ‫کلید‬ ‫ترین‬‫بزرگ‬: (n 1) (lgn 1) n lgn 2      45 16 log16 2 16 4 2 18      ‫مثال‬:‫تعداد‬‫مقایسه‬‫مورد‬‫نیاز‬‫برای‬‫پیدا‬‫کردن‬‫دومین‬‫کوچکترین‬‫عنصر‬‫در‬‫آرایه‬16‫عنصری‬: ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 46. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫بین‬ ‫عنصر‬ ‫کوچکترین‬ ‫دومین‬n‫آورد؟‬ ‫دست‬‫به‬ ‫توان‬ ‫می‬ ‫مقایسه‬ ‫چند‬ ‫با‬ ‫را‬ ‫عنصر‬ 1)2) 3)4) n logn 1   n logn 2    n logn 1   n logn 2    (‫کامپیوتر‬ ‫مهندسی‬-‫هوش‬-‫دولتی‬86) 46 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 47. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 n n (k 1) lg( ) k k 1        (n) 47 ‫برای‬ ‫پایین‬ ‫حد‬‫یافتن‬k‫در‬ ‫کلید‬ ‫ترین‬‫کوچک‬ ‫امین‬‫مجموعه‬n‫کلیدی‬: k 1 ‫یافتن‬k‫ترین‬‫کوچک‬ ‫امین‬‫کلید‬ ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 48. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫کردن‬ ‫پیدا‬ ‫الگوریتم‬ ‫زمانی‬ ‫مرتبه‬ ‫کمترین‬k‫امین‬‫میران‬ ‫از‬ ‫عنصرر‬ ‫کوچکترین‬n‫عنصرر‬ ‫است؟‬ ‫کدام‬ 1)2)3)4) 3O(n )O(n)O(nlgn)‫هیچکدام‬ (‫مهندسی‬IT-‫دولتی‬85) 48 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 49. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 49 ‫پایان‬ ‫شیرافکن‬ ‫مدرس‬ ‫با‬ ‫مشاوره‬: (‫جزوه‬-‫زنی‬ ‫تست‬ ‫کالس‬) 09121972028 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org
  • 50. ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫فرادرس‬ ‫در‬ ‫شده‬ ‫مطرح‬ ‫نکات‬ ‫مبنای‬ ‫بر‬ ‫ها‬ ‫اسالید‬ ‫این‬ «‫الگوریتم‬ ‫طراحی‬ ‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫روش‬ ‫آموزش‬ (‫مرور‬-‫ارشد‬ ‫کنکور‬ ‫تست‬)» ‫است‬ ‫شده‬ ‫تهیه‬. ‫نمایید‬ ‫مراجعه‬ ‫زیر‬ ‫لینک‬ ‫به‬ ‫آموزش‬ ‫این‬ ‫مورد‬ ‫در‬ ‫بیشتر‬ ‫اطالعات‬ ‫کسب‬ ‫برای‬ faradars.org/fvsfte103 ‫روش‬‫در‬ ‫حل‬ ‫و‬ ‫تقسیم‬ ‫طراحی‬‫الگوریتم‬ faradars.org/fvsfte103 ‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬ FaraDars.org