50
روش تقسیم و حل در طراحی الگوریتمfaradars.org/fvsfte103 مدرس: فرشید شیرافکن دانشجوی تهراننشگاه دکتری دا( سی ارشد کارشنا کارشناسی و: م افزار کامپیوتر نر( ) دکتری: نفورماتیک بیو ا) نکور کسی ارشد کارشنا الگوریتم طراحی روش تقسیم و حل1 ﻓﺮادرسFaraDars.org

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

Embed Size (px)

Citation preview

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

:مدرسفرشید شیرافکن

دکتری دانشگاه تهران دانشجوی (بیو انفورماتیک: دکتری( )کامپیوتر نرم افزار: کارشناسی و کارشناسی ارشد )

کارشناسی ارشد کنکور طراحی الگوریتم

روش تقسیم و حل

1

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

.سندنویمیبازگشتیروالیکصورتبهراآنمعموالًحلوتقسیمهایالگوریتمطراحیهنگام

(Divide-and-Conquer)روش تقسیم و حل

:مراحل

کوچکترنمونهچندیایکبهمسئلهیکازاینمونهتقسیم-1

کوچکترهاینمونهحل-2

(نیازصورتدر)اولیهنمونهحلآوردنبدستبرایکوچکترهاینمونهحلترکیب-3

نمونهیکبهفقطنمونهدودوییجستجویمانندهاالگوریتمبعضیدرکهاستاین"نیازصورتدر"گوئیممیاینکهدلیل

.نیستهاحلترکیببهنیازیویابدمیکاهشکوچکتر

2

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

مثال

تقسیممساویبیشوکمبخش2بهراnیاندازهبهمسئلهورودیهرالگوریتمی

اینحاصلخطیهزینهباسپسوحلبازگشتیصورتبهراهامسئلهزیر.کندمی

.آوردمیدستبهرامسئلهجوابوکردهترکیبهمبارادو

:بازگشتیرابطه

nT(n) 2T( ) O(n) T(n) O(nlgn)

2

3

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

اصلیقضیه

n:باشیمداشتهاگرT(n) aT( ) f (n)

b

a 1,b 1

a ab b

ab

ab

log log

log

log

(n ) f (n) n

T(n) (f (n).lgn) f (n) n

(f (n)) f (n) n

4

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

5

nT(n) 4T( ) lgn

2

42log

lg nn

)( 2n

a 4

b 2

f (n) lgn

nT(n) 8T( ) nlgn

9

89log

lg nnn

)lg( nn

2nT(n) T( ) 1

3

12/3log

1 n

)(lg n

a 8

b 9

f (n) nlgn

a 1

3b

2

f (n) 1

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

:با الگوریتم تقسیم و غلبه سه روش به شرح زیر امکان پذیر استnبرای حل یک مسئله با اندازه

زیر مسئله به اندازه و ترکیب آن ها با هزینه 3حل : روش اول

زیر مسئله به اندازه و ترکیب آن ها با هزینه 4حل : روش دوم

زیر مسئله به اندازه و ترکیب آن ها با هزینه 5حل : روش سوم

کدام روش دارای هزینه کمتری است؟

.هر سه روش یکسان هستند( 4روش سوم ( 3روش دوم ( 2روش اول ( 1

n

2

2(n n)

n

2

2(n )

n

2(nlgn)

(86دولتی -ITمهندسی )

6

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

2:اولروش 2nT(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

Page 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

Page 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

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103 مرتب سازی ادغامی(Merge Sort)

10

فرادرس

FaraDars.org

Page 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

nn

TnT

الگوریتم

فرادرس

FaraDars.org

Page 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

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

الگوریتم پارتیشن بندی

13

46531782

46531782

46531782

46531782

46538712

46578312

46578312

46578312

86574312

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

عملکرد مرتب سازی سریع

:میانگینوخوبحالت

T(n) = T(n/2) + T(n/2)+O(n) O(nlogn)

14

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

بدترین حالت مرتب سازی سریع

رتبمکنیم،انتخابمحورعنوانبهراعنصرآخرینیاعنصراولینکهصورتیدر.داشتخواهدراعملکردبدترین،مرتبآرایهیکبرایسریعسازی

T(n) = T(n-1) + O(n) O(n^2)

15

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

ازبهتر(تفریقوجمعلحاظازهمچنینو(ضربلحاظازآن،پیچیدگیکهدادارائهراالگوریتمیاستراسن.استسومدرجهپیچیدگی

ضرب ماتریس های استراسن

16

Strassen’s matrix multiplication

1111011010110010

1101010010010000

1110

0100

1110

0100

****

*****

BABABABA

BABABABA

BB

BB

AA

AA

فرادرس

FaraDars.org

Page 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

Page 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

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103استراسنالگوریتمزمانیپیچیدگیتحلیل

(:استعمل اصلی ضرب )دستور بازگشتی

nT(n) 7T( )

2

T(1) 1

lg7 2.81T(n) (n ) (n )

19

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

باشد،هایماتریسضربکوچکمساله،(Strassen)استراسنروشبهماتریس هاضربدراگر

می پذیرد؟صورتعددیضربچند،ماتریسدوضرببرای

2 2

8 8

1 )572 )3433 )3924 )512

nT(n) 7T( )

2

T(2) 8

T(4) 7T(2) 7 8 56

T(8) 7T(4) 7 56 392

(85دولتی -ITمهندسی )

20

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

فراخوانیچندباباشد،ماتریس هایضربکوچک،مسالهاستراسن،روشبهماتریس هاضربدراگر

می پذیرد؟انجامماتریسدوضربعملاستراسن،الگوریتمبهبازگشتی

2 2

8 8

1 )3432 )573 )494 )7

:را از رابطه بازگشتی زیر محاسبه کردT(8)باید مقدار

nT(n) 7T( ) 1

2

T(2) 1

T(4) 7T(2) 1 8

T(8) 7T(4) 1 7 8 1 57

(86دولتی -ITمهندسی )

21

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

4بهراماتریسکاراینبرای.بیابیماندازهبهماتریسیکدررابیشینهعنصرمی خواهیم

بهشتیبازگصورتبهراهرکدامبیشینه.می کنیمتقسیماندازهبههرکدامومساویقسمت

اینردهمباعناصرمقایسه هایدقیقتعداد.می کنیمپیدارانهاییجوابآنهابینومی آوریمدست

()چندتاست؟الگوریتم

n n

n n

2 2

kn 2

1 )2 )3 )4) 2n 12n 13lgn3(lgn 1)

(89دولتی -هوش-مهندسی کامپیوتر )

22

nT(n) 4T( ) 3

2

T(2) 3

42lg 2

T(n) (n ) (n )

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103ضرب دو عدد صحیح بزرگ

ازبایدر،کامپیوتافزارسختتوسطنمایشقابلحدازبزرگترصحیحیاعدادرویمحاسباتیاعمالانجامبرای.کرداستفادهحلوتقسیمروش

باyدیگریورقمباxیکیصحیحعدددوبهراآنباشد،uصحیحعددارقامتعدادnاگر

.که:صورتبهمی کنیمتبدیل

n / 2 n / 2

mu x 10 y m n / 2

212345 123 10 45

23

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

vوuضرب

m m 2m muv (x 10 y)(w 10 z) xw 10 (xz wy) 10 yz

عملیاتاجرایو(ارقامازنیمیحدودبا)صحیحاعدادرویضربعمل4باراuوvتوانمیپس.کنیمضربهمدرخطی،زمان

24

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

:9423723و567832عدددوضرب

:می کنیمضربروالهمینباراکوچکترصحیحاعداداینسپس

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

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103حالتبدتریندرالگوریتمتحلیل

26

:سریعترالگوریتمعمل3بهراآنتعدادجالبابتکاریکباکهبودنیازضربعمل4بهعدددوضربمحاسبهبرایقبلیالگوریتمدر

.دهیممیکاهشضرب،

cnn

TnT )2

(3)( )()( 58.132

lognn

cnn

TnT )2

(4)( )()( 242

lognn

3: رقمی kضرب دو عددمرتبه 2lg

k

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

:برایرقموباترتیببهوعدددوضرببرای ABn4n5000 n 10000

.بهتر است از روش معمولی و کالسیک برای ضرب آن ها استفاده کرد( 1

.ترتیبیچهبهکندنمیفرقیوکرداستفادهحلوتقسیمالگوریتمازاستبهتر(2

.و با روش تقسیم و حل ضرب کردAرقمی، هر کدام از این بخش ها را در nبخش 4به Bبهتر است پس از قسمت کردن ( 4

.کردضربBدرحلوتقسیمالگوریتمکمکباراحاصل،عددAچپسمتبهصفر3nکردناضافهازپساستبهتر(3

(83دولتی -مهندسی کامپیوتر )

27

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

32lg

k

:بااستبرابرآنها،ضربمرتبهکهداریمرقمی4nعدددوحالتایندر

3 3 3 4 3 32 2 2 2 2 2lg lg lg lg lg lg

(4n) 4 n 3 n 9n

28

: است بابرابر رقمی با استفاده از روش تقسیم و حل kضرب دو عددکه مرتبه می دانیم

.کنیمرقمی4nآن،چپسمتبهصفرکردناضافهبارااسترقمیnکهAعدد:3گزینه

درراهابخشاینازکدامهروکنیمتبدیلرقمیnبخشچهاربهرااسترقمی4nکهBعدد:4گزینهAضربچهارمرتبه.کردضربحلوتقسیمالگوریتمکمکباn،بااستبرابررقمی:

32lg

4n

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

(iرتبهباعنصر)عنصریnآرایهدرعنصرکوچکترینامینiانتخاب

i=1:مینیمم

i=n:ماکزیمم

i = ⎣(n+1) / 2⎦ or ⎡(n+1)/2⎤:میانه

29

مسئله انتخاب

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

:نظر می گیریم و پارتیشن بندی می کنیمرا محور در عنصر اول

30

پیدا کردن هفتمین کوچکترین عنصر

.کوچکترین عنصر می گردیمسومینبه طور بازگشتی در قسمت صورتی رنگ به دنبال

(2,3,5,6,8,10,11,13)

فرادرس

FaraDars.org

Page 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

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

.ممی کنیتقسیم(دستهیکاحتماالًجزبه)تایی5هایدستهبهراعناصرهمهابتدا

شتیبازگصورتبهراهامیانهمیانهسپسومی آوریمدستبهرادستههرمیانه

.می کنیمپیدا

آرایهرویبرراpartitionعملومی کنیمانتخابمحورعنوانبهراعنصراین

.می دهیمانجامعناصر

بخش هاازیکیرویبر(دیگرkیکبرایو)بازگشتیبصورتراالگوریتمهمین

.شودپیدانظرموردعنصرتامی کنیماجرا

32

(میانه میانه ها)امین عنصرkالگوریتم انتخاب

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

(گروه خواهیم داشت11در نتیجه ) عنصر n/5عنصر به گروهایی با 54تقسیم

33

مثال

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103 مرتب کردن هر گروه

34

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103مشخص کردن میانه هر گروه

35(28عدد )انتخاب میانه میانه ها

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

36

تعداد میانه های بزرگتر از میانه میانه ها حداقل

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

عناصر بزرگتر از میانه میانه ها حداقل

37

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103 عناصر کوچکتر از میانه میانه هاحداقل

:ود عناصری که تابع انتخاب برای آن ها به طور بازگشتی صدا زده می شتعداد 3n 7n

n 6 610 10

38

فرادرس

FaraDars.org

Page 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 7nT(n) T T 6 O(n)

5 10

O(n)

الگوریتم انتخاب

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

عنصری3های گروه

n 2nT(n) T T 4 O(n) O(n.lgn)

3 3

40

n 5nT(n) T T( 8) O(n) O(n)

7 7

n (3m 1)nT(n) T T c O(n)

m 4m

عنصری 7های گروه

عنصریmهای گروه

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

خطیکاراییبهمنجرکهاستفردمقدارکوچکترین،m=5مقدار

هایهدستبهراعناصرانتخاب،الگوریتمتوضیحدرعلتهمینبه.شودمی

.کردیمتقسیمتاییپنج

41

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

تقسیم(دستهیکاحتماالًجزبه)تایی5هایدستهبهراعناصرهمهابتداعنصر،امینkکردنپیداالگوریتمدر

این.ممی کنیپیدابازگشتیصورتبهراهامیانهمیانهسپسومی آوریمدستبهرادستههرمیانهمی کنیم،

آنازپس.می دهیمانجامعناصرآرایهرویبرراpartitionعملومی کنیمانتخابمحورعنوانبهراعنصر

نظرموردعنصرتامی کنیماجرابخش هاازیکیرویبر(دیگرkیکبرایو)بازگشتیبصورتراالگوریتمهمین

می شود؟بیانزیربازگشتیرابطه هایازیککدامتوسطالگوریتمایناجرایزمان.شودپیدا

1 )2)

3 )4)

n 3nT(n) T( ) T( 6) O(n)

5 10

n 3nT(n) T( ) T( 6) O(n)

5 10

n 7nT(n) T( ) T( 6) O(n)

5 10

n 7nT(n) T( ) T( 6) O(n)

5 10

(82دولتی -مهندسی کامپیوتر )

42

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

کردیمتقسیمتایی5هایدستهبهراعناصرعنصر،nیمیانهعنصریافتنبرایکالسیکحلراهدر

بهعنصراین.آوردیمدستبهبازگشتیصورتبهراهامیانهیمیانهسپسوکدامهریمیانهو

هایدستهازتایی،5هایدستهجایبهاگر.شودمیمحسوبعناصربندیبخشبرایمحورعنوان

شود؟میبیانبازگشتییرابطهکدامتوسطاجرازمانکنیم،استفادهتایی3

1 )2)

3 )4)

2nT(n) T( ) cn

3

nT(n) T( ) cn

3

nT(n) 2T( ) cn

3

n 2nT(n) T( ) T( ) cn

3 3

(91دولتی -مهندسی کامپیوتر )

43

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103 (تتورنمن)یافتن بزرگ ترین کلید دوم

(n-1).داشتخواهیممقایسه1آخردورومقایسه2دوم،دور،مقایسه4اول،دوردرباشیم،داشتهکلید8اگر

.نیستدومکلیدترینبزرگالزاماآخردوربازنده.استکلیدبزرگترینآخر،دوربرنده

.شودمیاضافهلیستبه،ببازد18بهرامقایسهیککهکلیدی 12,16,15

44

فرادرس

FaraDars.org

Page 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

Page 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

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

nn (k 1) lg( ) k

k 1

(n)

47

:کلیدیnمجموعهامین کوچک ترین کلید در kیافتنحد پایین برای

k 1

کلیدامین کوچک ترین kیافتن

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

عنصرر nکوچکترین عنصرر از میران امین kکمترین مرتبه زمانی الگوریتم پیدا کردن

کدام است؟

1 )2 )3 )4) 3O(n )O(n)O(nlgn)هیچکدام

(85دولتی -ITمهندسی )

48

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

49

پایان

: مشاوره با مدرس شیرافکن(کالس تست زنی-جزوه)

09121972028

فرادرس

FaraDars.org

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

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

این اسالید ها بر مبنای نکات مطرح شده در فرادرسآموزش روش تقسیم و حل در طراحی الگوریتم»

« (تست کنکور ارشد-مرور ).تهیه شده است

برای کسب اطالعات بیشتر در مورد این آموزش به لینک زیر مراجعه نمایید

faradars.org/fvsfte103

تقسیم و حل در روش الگوریتمطراحی

faradars.org/fvsfte103

فرادرس

FaraDars.org