Professional Documents
Culture Documents
Analysis
Analysis
گیری کارایی
https://www.sharemation.com/xythoswfs
/webui/kashfi/DS
1
Kashfi- Islamic Azad University of Qazvin
الگوریتم
2
Kashfi- Islamic Azad University of Qazvin
الگوریتم-ادامه
• موارد زیر در هر الگوریتم باید مشخص باشد
ورودی :هر الگوریتم می تواند صفر یا بیشتر اقلم داده به عنوان ورودی –
داشته باشد
خروجی :هر الگوریتم حداقل یک قلم داده به عنوان خروجی دارد –
محدودیت :هر الگوریتم پس از تعداد محدودی مرحله پایان می پذیرد –
قطعیت :کلیه دستورالعمل های یک الگوریتم باید واضح و غیر مبهم باشند –
کارایی :کلیه دستورالعمل های یک الگوریتم باید عملی باشند .هر فرمان را –
بتوان به راحتی با قلم و کاغذ نیز انجام داد
3
Kashfi- Islamic Azad University of Qazvin
ساختمان داده ها
• ساختار ،ارتباط و چگونگی ذخیره اقلم داده
• پیاده سازی و اجرای الگوریتم ها بر روی ساختمان داده
• مثال :آرایه ،رکورد ،لیست پیوندی
4
Kashfi- Islamic Azad University of Qazvin
برنامه سازی
• تعیین نیازمندی ها :تشخیص ورودی ها و خروجی های مساله
• تجزیه و تحلیل :تقسیم مساله به بخش های قابل مدیریت
– پایین به بال -غیر ساختیافته :اول اشیاء بعد اتصالت -دید کلی مناسبی اول موجود نیست-
در نهایت اتصال ها ضعیف است
– بال به پایین :طرح کلی برای شکستن مساله -مناسب برای مسائل پیچیده
• طراحی :ارائه یک الگوریتم که مساله را با توجه به نیازمندی ها حل کند
– مستقل از زبان و نحوه پیاده سازی
– از دیدگاه اشیاء مورد نیاز دربرنامه و عملیاتی که انجام می دهند
• بهبود و کدگذاری :
– پیاده سازی الگوریتم مورد نظر
– انتخاب نحوه ارائه داده ها
– الگوریتم مستقل از داده ها نوشته می شود
• اصلح و تست :اطمینان از درستی برنامه ،تست برنامه ،اثبات درستی ،حذف
خطا
5
Kashfi- Islamic Azad University of Qazvin
تابع
یکی از اهداف مهم در ساختاردهی برنامه این است که ما راحت تر •
به اهداف خوانایی و درستی برنامه دست پیدا کنیم
یکی از راهکارها استفاده از تابع در برنامه می باشد •
مجموعه ای از دستورات که یک عملیات منطقی را انجام می دهند •
می توانند به صورت تابع گروه بندی شوند
ارگ نام و مشخص ه ورودی و خروج ی های تاب ع را بدانیم لزم •
نیست بدانیم تابع چگونه عملیات را انجام می دهد
تابع فراخوانی می شود ،اجرا می گردد و کنترل را به مکان مناسب •
در تابع فراخوان بر می گراند
6
Kashfi- Islamic Azad University of Qazvin
الگوریتم های بازگشتی
• بازگشتی مستقیم و غیرمستقیم:
– یک تابع ممکن است در بدنه خود ،خودش را فراخوانی کند
– ی ک تاب ع ممک ن اس ت تواب ع دیگری را فراخوان ی کن د ک ه دوباره تابع
فراخوان را فراخوانی کنند
در مس ائلی ک ه طبیع ت بازگشت ی دارن د م ی توان حالت nام را از •
حالت n-1ام به دست آورد
یک ویژگی مهم الگوریتم های بازگشتی داشتن شرط خاتمه است •
مزیت :سادگی برنامه نویسی •
عیب :حافظه مصرفی بیشتر •
7
Kashfi- Islamic Azad University of Qazvin
مثال در برنام ه زی ر خروجی
( چیست؟f(3,6
func f(m,n:int):int
int fact(int n) {
{ if(m=1) or(n=0)
if(n<=1) return 1; or(n=m)
else f:=1;
return (n*fact(n-1)); else
} f:=f(m-1,n)+f(m-1,n-1)
8
Kashfi- Islamic Azad University of Qazvin
الگوریتم های بازگشتی با پارامتر مرجع
9
Kashfi- Islamic Azad University of Qazvin
تحلیل و اندازه گیری کارایی
• معیارهای قضاوت در مورد برنامه ها
– آیا برنامه ما را به هدف خواسته شده می رساند؟
– آیا با توجه به مشخصه های خواسته شده درست کار می کند؟
– آی ا مس تنداتی درباره چگونگ ی عملکرد برنام ه و اس تفاده از آن
وجود دارد؟
– آیا توابع به نحوی ایجاد شده اند که زیر عملیات های منطقی را
انجام دهند؟
– آیا کد خوانا است؟
10
Kashfi- Islamic Azad University of Qazvin
پیچیدگی فضا و زمان
پیچیدگ ی فض ا :مقدار حافظ ه مص رفی برای اجرا و تکمیل عملیات
خواسته شده
• پیچیدگی زمان
چگونگی رفتار الگوریتم مورد نظر –
نحوه عملکرد الگوریتم در بهترین و بدترین وضعیت و حالت متوسط –
نحوه اثر تغییر ابعاد مساله بر روی نحوه اجرای آن –
میزان زمان مورد نیاز برای اجرا –
• ارزیابی کارایی
– تخمین اولیه
– تست ثانویه
11
Kashfi- Islamic Azad University of Qazvin
پیچیدگی فضا
• قسمت ثابت
مستقل از ویژگی ورودی و خروجی ها و یک نمونه مساله خاص –
فضای دستورات –
متغیرهای ساده –
متغیرهای پیچیده با اندازه ثابت –
• قسمت متغیر
– متغیرهای پیچیده که اندازه آنها وابسته به نمونه مساله است
– فضای پشت ه بازگشت ی :پارامترهای فرمان -متغیرهای محلی -آدرس
برگشتی
– متغیرهای ارجاعی)(reference var
• کل فضا= فضای ثابت +فضای متغیر
12
Kashfi- Islamic Azad University of Qazvin
Float abc(float a, float b, float c)
{
return a+b+b*c+(a+b-c/(a+b)+4.0);
}
13
Kashfi- Islamic Azad University of Qazvin
پیچیدگی زمان
• تعداد کل مراحل برنامه
– :Stepبخشی دستوری یا معنایی از برنامه که زمان اجرای آن
مستقل از نمونه مساله است
– :step countپیچیدگ ی ه ر stepکه عموم ن 1در نظر
گرفته می شود
– برای حلق ه ه ا step countفق ط برای بخ ش کنترل ی در نظر
گرفته می شود
;Return a+b+b*c
14
Kashfi- Islamic Azad University of Qazvin
تعداد کل مراحل
15
Kashfi- Islamic Azad University of Qazvin
تعیین عمل اصلی
• تعیین اندازه ورودی
• انتخاب ی ک دس تور ی ا گروه ی از دس تورات ب ه طوری ک ه کل کار انجام شده
توسط الگوریتم متناسب با تعداد دفعات اجرای این دستور یا دستورات باشد
• به طور کلی تحلیل پیچیدگی زمانی یک الگوریتم عبارت از تعیین تعداد دفعاتی
است که توسط این دستور یا گروه دستورها انجام می شود
)g(n
Kashfi- Islamic Azad University of Qazvin
17
ادامه-مرتبه اجرایی
18
Kashfi- Islamic Azad University of Qazvin
حلقه های forو while
• حلقه های forتو در تو
– حلقه های مستقل :تعداد دفعات تکرار در هم ضرب می شود
– حلقه های وابسته
• حلقه های while
– بدترین حالت ،بهترین حالت ،حالت متوسط
19
Kashfi- Islamic Azad University of Qazvin
elementType sum(elementType s[n])
{
elementType result;
for(i=1;i<=n;i++)
result=result+s[i];
return result;
}
20
Kashfi- Islamic Azad University of Qazvin
int search(elementType s[n],elementType x)
{
int location=1;
while(location<=n&& s[location]!=x)
location=location+1;
if(location>n)
return 0;
else return location;
}
21
Kashfi- Islamic Azad University of Qazvin
تحلیل حالت متوسط
• عنصر xبه احتمال pدر آرایه است
• عنصر pبه احتمال n/1ممکن است در هر کدام از خانه
های آرایه واقع شده باشد
• (O(n
)A(n)=∑(k*p/n)+n(1-p
22
Kashfi- Islamic Azad University of Qazvin
حلقه های وابسته
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
some operations;
23
Kashfi- Islamic Azad University of Qazvin
مرتبه اجرایی توابع بازگشتی
• تعیین رابطه ی زمانی بازگشتی با استفاده از تابع بازگشتی
• جایگزای مکرر
• برای مس اله برج های هانوی و جایگش ت های nعنص ر تحلیل
مربوطه را انجام دهید
)int fact(int n
{ (fact(n)=n*fact(n-1
;if(n<=1) return 1
else
;))return (n*fact(n-1
T(n)=T(n-1)+d
}
)O(n
24
Kashfi- Islamic Azad University of Qazvin
مرتبه الگوریتم ها
• O(log n a)
• O(n)
مرتبه
• O(n log n a) چندجمله ای
• O(nm)
• O(an) مرتبه نمایی
• O(n!)
25
Kashfi- Islamic Azad University of Qazvin