28
ﻃﺮاﺣﯽ اﻟﮕﻮرﯾﺘﻢ ﻫﺎ ﺳﯿﺪه ﺣﻤﯿﺪه ﻋﺮﻓﺎﻧﯽ داﻧﺸﮕﺎه داﻣﻐﺎن

ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

طراحی الگوریتم هاسیده حمیده عرفانی

دامغاندانشگاه

zamzam
Pencil
zamzam
Rectangle
zamzam
Rectangle
zamzam
Rectangle
Page 2: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

به طور معمول براي حل یک مسئله مشخص بیش از یک الگوریتم وجود دارد.برخی از این الگوریتم ها از بقیه کاراتر می باشند.الگوریتمی انتخاب می شود که بیشترین کارایی را داشته باشد.چه مواردي را باید بررسی کنیم:

آیا الگوریتمی که ارائه می شود درست است یا خیر؟چگونه الگوریتم هاي مربوط به یک مسئله مقایسه می شوند؟ کارایی(efficiency) هر الگوریتم چگونه تعیین می شود؟

براي این کار نیاز به تحلیل الگوریتم ها داریم .

هدف از مطالعه درس طراحی الگوریتم ها

2

Page 3: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

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

3

Page 4: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

درسی منابعمنبع اصلی

طراحی الگوریتم هادکتر محمود نقیب زاده

منابع فرعی Foundations of algorithms

Richard Neapolitan & Kumarss Naimipour

ترجمه مهندس سید حجت اهللا جلیلی

Introduction to algorithms Thomas Cormen

4

Page 5: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

ارزیابی نحوهنمره 12امتحان پایان ترم94/2/13نمره 4امتحان میان ترمنمره 3 تمرین نمره 2فعالیت کالسی کوئیز ونمره 21مجموع

براي دریافت اسالیدها و تمرین ها در گروه زیر عضو شوید[email protected]

5

zamzam
Rectangle
zamzam
Rectangle
Page 6: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

تحلیل و ارزیابی کارایی الگوریتم ها

اول فصل

6

Page 7: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

تعریف الگوریتممجموعه محدودي از دستورالعمل ها که اگر دنبال شوند منجر به حل مسئله خاصی می گردند.

به عبارت دیگر الگوریتم به روش خاص حل هر دسته از مسائل گفته می شود.

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

خوارزمیبه دست آمده که خود از نام الگوریزماز نظر واژه شناسی کلمه الگوریتم از .دانشمند ایرانی گرفته شده است

الگوریتم

7

Page 8: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

خواص الگوریتم ها محدود(متناهی(

بدون ابهام

بیان دقیق

ترتیب و توالی

خروجی-ورودي

الگوریتم

8

Page 9: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

اغلب یک الگوریتم تا رسیدن به وضعیتی که بتوان آن را به کامپیوتر منتقل کرد مراحل:مختلفی را طی می کند

زبان انسان(زبان طبیعی(

نمودار گردشی)FlowChart(

بیان الگوریتم به یک زبان برنامه نویسی و یا شبه کد

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

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

9

Page 10: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

ارزیابی کارایی الگوریتم هابراي اکثر مسائل قابل حل الگوریتم هاي متفاوتی وجود دارد.

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

سوال اینجاست که معیار برتري یک الگوریتم نسبت به الگوریتم دیگر چیست؟

براي مقایسه الگوریتم هایی که براي حل مسئله واحد تولید شده اند دو معیار مطرح می شود:زمان الزم براي اجراي کامل الگوریتم

میزان حافظه الزم در زمان اجراي الگوریتم

تحلیل الگوریتم ها

10

Page 11: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

ارزیابی کارایی الگوریتم هازمان الزم براي اجراي کامل یک الگوریتم به کامپیوتري که آن را اجرا می کند بستگی دارد.

میزان حافظه الزم براي اجراي الگوریتم به نوع سیستم عامل کامپیوتر و روش مدیریت حافظه.اصلی بستگی دارد

باید براي مقایسه کارایی دو الگوریتم شرایط یکسانی را در نظر گرفت.

دو معیار زیر را جایگزین دو معیار قبل می کنیم: مرتبه زمانی اجراي کامل الگوریتمT(n)

تعداد دفعات تکرار عمل یا اعمال اصلی به ازاي هر مقدار از اندازه مسئله

مرتبه مکانی اجراي الگوریتمS(n)

مقدار حافظه اي که عمل یا اعمال اصلی الگوریتم به ازاي هر مقدار از اندازه مسئله نیاز دارد

تحلیل الگوریتم ها

11

Page 12: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

از آنجایی که امروزه محدودیت حافظه تا حد زیادي برطرف شده است، براي مقایسه کارایی.الگوریتم ها بیشتر بر روي مرتبه زمانی آنها متمرکز می شویم

اندازه مسئله و عمل براي تشریح مرتبه زمانی و در نتیجه تحلیل کارایی الگوریتم ها مفهوم.باید تشریح گردند) اصلی(کلیدي

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

طول داده ها یا اندازه مسئله، تعداد داده هاي ورودي، تعداد نتایج و یا ترکیبی از آنها می باشد.ضرب ماتریس: مثالدر اغلب مسائل مرتبه زمانی الگوریتم تابعی از اندازه مسئله است.

عمل کلیديعمل کلیدي، عملی است که تعداد دفعات اجراي آن بیشترین یا یکی از بیشترین ها باشد.انتخاب عمل کلیدي بدیهی نیست و نیازمند دقت و تجربه است.

تحلیل الگوریتم ها

12

Page 13: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

مرتبه زمانی معموال پیچیدگی زمانی الگوریتم باT(n) نشان داده می شود که در آنn اندازه مسئله

.است مثال

float sum (float List [], int n){

int i;float s=0; for (i=0;i< n ;i++)

s=s + List [i];return s;

}

13

T (n) =2n+3

0

n+1

n

1

1

Page 14: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

14

مثال For (i=a; i<=b; i++)

x+=1;

For (i=1; i<=n; i++)For (j=1; j<=n; j++)

x+=1;

T (n) =b-a+1

T (n) = 2n

عمل کلیدی

عمل کلیدی

Page 15: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

15

مثال پیچیدگی زمانی الگوریتم هاي زیر را بدست آورید

for (i=1; i<=n; i++)for (j=1; j<=i; j++)

x+=1;

for (i=1; i<=n; i++)for (j=1; j<=n; j++)

x+=1;

for i=1 to nfor j=1 to i

for k=1 to ix=x+1

2)1(...211

11 1

nnnin

i

n

i

i

j

6)12)(1(...21

1

22

1

2

1 11 1 1

nnnn

iin

i

n

i

i

j

n

i

i

j

i

k

2

11 1

1 nnn

i

n

i

n

j

Page 16: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

16

مثال با فرض اینکه (پیچیدگی زمانی الگوریتم هاي زیر را بدست آوریدn است 2توانی از.(

for (i=1; i<=n; i=i*2)cout<<i;

پیچیدگی زمانی الگوریتم= جمع یک هاي سطر دوم واضح است که تعداد یک هاي سطر دومk+1 است.با توجه به اینکه بنابراین داریم: nk 2log

1log1)( 2 nKnT

Page 17: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

مرتب سازي حبابی: مثالvoid bubblesort (int n , int S[ ]){

int i,j;for (i = 1 ; i < n ; i++)

for (j = i +1; j < n ; j++)if ( S[j] < S[i])

swap(S[i] , S[j]);}

17

عمل کلیدي

)(22

)1(21 22

1

1

1

1

1

nnnnninn

i

n

i

n

ij

Page 18: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

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

خروج از الگوریتم را داشته باشیم، احتماال حالت هاي بهترین، متوسط و بدترین از یکدیگر .جدا می شوند

محاسبه حالت متوسطمشخص کردن همه حاالتi محاسبه تعداد تکرار عمل کلیديمحاسبه احتمال رخداد هر حالت

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

مرتبه زمانی

18

i

k

ii spnT

1

)(

ipis

Page 19: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

جستجوي ترتیبی: مثالint seqsearch (int n , int x, int S[ ]){

int i;for (i = 0 ; i < n ; i++)

if (x == S[i])return (i);

return -1;}

19

عمل کلیديبهترین حالت؟بدترین حالت؟حالت متوسط؟

Page 20: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

20

رشد توابعاز نظر کارایی الگوریتم ها به دو دسته بزرگ تقسیم می شوند:

چنانچه مرتبه زمانی الگوریتم چندجمله اي بر حسب تعداد داده ها باشد: رام شدنی.الگوریتمی که مرتبه زمانی آن را نتوان به یک چند جمله اي محدود کرد: رام نشدنی.

با افزایش اندازه داده ها زمان الزم براي اجراي الگوریتم به شدت افزایش می یابد.در عمل یک الگوریتم رام نشدنی تنها براي اندازه داده کم قابل اجرا می باشد.

دسته هاي مختلفی از پیچیدگی وجود دارد: نمایی، ...، 2ثابت، لگاریتمی، خطی، خطی لگاریتمی، درجه ،...ترتیب زیر قابل اثبات است

nnn nnnnnnnn !...32...lglg1 32

Page 21: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

21

نمادهاي مجانبی نمادO)بدترین حالت:(

و ثابت صحیح وجود داشته باشندکه براي cاگر و فقط اگر ثابت همه مقادیر آنگاه

g(n) بزرگترین تابع کوچکتر ازf(n) استاُ بزرگ، مرتبه زمانی الگوریتم را با فرض اجراي بیشترین تعداد اعمال مشخص می کند.

مثال)}()(0:,0,:)({))(( 00 nCgnfnnnCnfngO

,...}20,lg,2,lg,,{...,)( 222 nnnnnnnnO

))(()( ngOnf

0nn |)(||)(| ngcnf 0n

Page 22: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

22

نمادهاي مجانبیقضیه چند جمله اي

اگر ، تعداد اعمال الزم براي اجراي یک.باشد آنگاه mالگوریتم، یک چند جمله اي از درجه

مثال:)()(3)( 323 nnTnnnnT

011

1 ...)( ananananA mm

mm

)()( mnnA

Page 23: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

23

نمادهاي مجانبی

)}()(0:,0,:)({))(( 00 nfnCgnnnCnfng

,...}lg,2,12,1{...,)( 2322 nnnnn n

نمادΩ)بهترین حالت:(و ثابت صحیح وجود داشته باشندکه براي cاگر و فقط اگر ثابت

همه مقادیر آنگاه

مثال

))(()( ngnf

0nn |)(||)(| ngcnf 0n

Page 24: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

24

نمادهاي مجانبی

)}()()(0:,0,,:)({))(( 210021 ngCnfngCnnnCCnfng

)(321 22 nnn

21

141

3213

21

21

212

122

1

CC

Cn

CnCnnnC

نمادӨ)حالت متوسط:(و ثابت صحیح وجود داشته c2 و c1اگر و فقط اگر ثابت هاي

باشندکه براي همه مقادیر آنگاه

مثال

))(()( ngnf

0nn |)(|2|)(||)(|1 ngcnfngc 0n

Page 25: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

25

مقایسه نمادها

Page 26: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

در این مثال الگوریتمی مد نظر است که مقدار متغیرx را به توان عدد صحیح.برساند

float powern (float x , int n){

int i;float result = x;for (i = 2 ; i <= n ; i++)

result = result * x;return (result);

}

الگوریتم توان رسانی: مثال

26

0n

عمل کلیدي )()(1)( nnTnnT

Page 27: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

در این مثال الگوریتمی مد نظر است که ماکزیمم عناصر یک آرایه را بیابد.float maximum(float b[] , int n){

float max = b[0];for (i = 1 ; i < n ; i++)

if (b[i] > max)max = b[i];

return max;}

الگوریتم یافتن بزرگترین عدد: مثال

27

عمل کلیدي )()(1)( nnTnnT

Page 28: ﺎﻫ ﻢﺘﯾرﻮﮕﻟا ﯽﺣاﺮﻃbayanbox.ir/view/956075013985805488/ch01.pdf · Microsoft PowerPoint - ch01.ppt [Compatibility Mode] Author: Erfani Created Date: 1/31/2015

28

:1تمرینالگوریتم ضرب ماتریس ها را نوشته و مرتبه زمانی آن را محاسبه نمایید.