1. علوم الحاسب
15

ما هي الكيفية لحساب درجة التعقيد لخوارزمية معينة؟

  • iali
  • 2013-12-23T01:08:10+00:00
  • رابط مختصر
يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

  • الأفضل
  • الأحدث
  • الأقدم
25
eisa 2013-12-23T07:42:20+00:00 أضف ردا
  • رابط مختصر

مقدمة

حساب تعقيد خوارزمية معينة له بعدين اساسيين هما: الوقت Time والمساحة Space.

لنفرض ان لدينا خورزميتين اثنتين A و B يؤديان نفس الغرض لكن A يستهلك ١٠ كيلوبايت مساحة و ٤ ثواني بينما B يستهلك ١٥ كيلوبايت مساحة و 6 ثواني .. لاشك أن خوارزمية A افضل او بالاصح أكفأ more efficient من B

الوقت يتضمن المساحة - بمعنى ان حجز مساحة ١٠٠ متغير تاخذ وقت اكثر من حجز مساحة ١٠ متغيرات.. فلذلك تعقيد الخوارزمية عادة ينصب على الوقت.


حتى نتمكن من حساب تعقيد الخوارزمية -الوقت اللازم لتنفيذ الخوارزمية- لابد ناخذ معيار يتوفر فيه الاتي:

١. ليس له علاقة بالمؤثرات الخارجية للخوارزمية ( لغة البرمجة المستعملة، سرعة الجهاز/الكومبايلر ..الخ )

٢. يكون له علاقة بطبيعة عمل الخوارزمية.

المقصد في الشرط الاول ان تعقيد الخوارزمية يبقى نفس الشئ مهما اختلفت الاجهزة والادوات المتاحة للمطور.

الشرط الثاني يقصد به اننا لابد ان نجد طريقة لحساب التعقيد معتمدة على طبيعة عمل الخوارزمية. كل خوارزمية لها هدف معين وتصل الى هذا الهدف عبر خطوات او عمليات متعدده.

مثلاً طبيعة خوارزمية ترتيب اعداد تختلف عن خوارزمية ايجاد cycle في قراف. في الأولى الخوارزمية تقوم بعمل مقارنة بين الاعداد وفي الثانية تقوم بالمشي traverse على القراف.


لنفرض ان لديك خوارزمية لترتيب الاعداد - من الاصغر الى الاكبر- في مصفوفة اعداد array من حجم n ..

العملية الأساسية لمثل هذه الخوارزمية هي المقارنة comparison بين عددين من المصفوفة للنظر ايهما اصغر ..

بالتاكيد ترتيب مصفوفة من ١٠ عناصر اسهل من ترتيب مصفوفة من ١٠٠ عنصر .. لذلك حجم المدخلات للخوارزمية عادة يكون هو مايقاس به تعقيدها (في حالتنا حجم المصفوفة n ) . ولذلك لحساب تعقيد الخوارزمية عادة لانهتم بالثوابت والاعداد الاخرى .. نهتم بوقت الخوارزمية مقارنة مع حجم المدخلات. مثلاً لو ان لدينا خوارزمية معينة بحجم مدخلات n لكن عدد الخطوات الاساسية التي تعملها هي 5*n فاننا نقول ان تعقيد الخوارزمية هو n .. هذا مايسمى تعقيد Asymptotic بمعنى اننا نحسب التعقيد عندما يكون n كبير ولانهتم بالعوامل الجانبية.


لناخذ خوارزمية Bubble sort لترتيب اعداد المصفوفة مثلاً ..

for i=1 to n
{
for j=i+1 to n 
if array[j]<array[i] then swap 
}

هذا منظر مريع لخوارزمية.. لكن كم عدد المقارنات التي تتم هنا ؟

في اسوء الاحوال فان اللوب الاول سيتم تنفيذه n مره واللوب الثاني سيتم تنفيذه n-1+n-2+....+1

لذلك تعقيد هذه الخوارزمية هو n+(n-1+n-2+...+1)=n(n-1)/2=n^2-n/2=n^2

ويرمز لها بالرمز O(n^2) لاحظ اننا تغافلنا عن الاعداد الاخرى .. علمياً في هذه الحالة نقول ان تعقيد الخوارزمية quadratic بمعنى تربيعي n^2 ..

13
eisa 2013-12-23T08:08:34+00:00 أضف ردا
  • رابط مختصر

مااعرف كيف اعدل الرد.. او ممكن يكون غير مسموح بالتعديل.. هذه مصادر جميلة في الموضوع

http://www.dcs.gla.ac.uk/~p...
http://www.cs.cmu.edu/~adam...
0
iali 2013-12-23T08:34:15+00:00 أضف ردا
  • رابط مختصر

التعديل مسموح لفترة قصيرة لا اعلم تحديدا مدتها تقريبا دقيقتين

12
محمد عبدالله 2013-12-23T13:04:42+00:00 أضف ردا
  • رابط مختصر

جميل جداً :)

أنوّه إلى أن كورس CS50 يوضح مبدأ عمل الخوارزميات :

http://cs50.tv/2013/fall

شاهد الأسبوع الثالث ..

0
ghazi147 2021-10-19T14:07:22+00:00
  • رابط مختصر
  • حذف بواسطة المستخدم

علوم الحاسب

علوم الحاسب: كل ما يتعلق بالاساس العلمي للحاسب من دراسة للخوارزميات و هيكلة البيانات

2.05 ألف متابع

أطلق موقعك الإلكتروني في دقائق

صمم موقعك كاملا بالسحب والإفلات بدون خبرة برمجية، واحجز مكانك على الإنترنت.

أنشئ موقعك الآن

اقرأ أيضًا

  • خوارزمية لحساب الزمن الداخلي internal time
  • كيف بدأ العالم الرقمي وكيف ظهر الحاسوب
  • كيف احصل على بكالوريوس حاسب آلي عن بعد
  • من أين يجب أن ننطلق في دراسة علوم الحاسوب ؟
  • كيف أميز بين CPU & Micropressor؟

انسخ هذا الرابط:

تنبيه