اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

هما الأساس لأي خوارزمية من الناحية النظرية، حيث Time Complexity يقيس عدد العمليات التي تقوم بها الخوارزمية كدالة في حجم المدخلات، بمعنى كلما زاد حجم المدخلات، كم من الوقت الإضافي سيستغرقه البرنامج؟

فالخوارزمية البطيئة لا مشكلة بها لـ 10 عناصر، لكنها ستستغرق ساعات أو أيام لمعالجة مليون عنصر، بالتالي المقياس يساعدنا على فهم قابلية الـ Scalability أو التوسع للحل.

وSpace Complexity يقيس مقدار الذاكرة الإضافية التي تستخدمها الخوارزمية كدالة في حجم المدخلات، أي بزيادة حجم المدخلات، كم من الذاكرة الإضافية سيحتاجها البرنامج؟ حيث استخدام ذاكرة هائلة سيؤدي إلى بطء النظام أو انهياره، خاصة في البيئات ذات الموارد المحدودة مثل الهواتف المحمولة أو الخوادم المشتركة.

لكن عمليًا، هناك مقاييس أخرى، وأهما مدى نسبة صحة الخوارزمية بالنسبة لمختلف الحالات، بالإضافة إلى مدى بساطة الخوارزمية ومدى تعقيدها، وأداء ذاكرة التخزين المؤقت، قابلية التوسع في الأنظمة الموزعة، الاستقرار واستهلاك الطاقة.

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

الإجابة بإختصار هي لا فهما ليسا العوامل الوحيدة ولكنهما الأهم والأشهر في التحليل النظري ومقارنة الخوارزميات.

ففي الواقع العملي في هندسة البرمجيات هناك عوامل أخرى قد تكون بنفس الأهمية أو حتى أهم بناء على الموقف.

فإنه يتم التركيز على التعقيد الزمني (Time Complexity) و التعقيد المكاني (Space Complexity) لأنهما يمثلان الموردين الأساسيين المحدودين في أي جهاز كمبيوتر:

  • الوقت (Time): كم ستستغرق الخوارزمية من وقت لتنفيذها مع زيادة حجم المدخلات؟ (يقاس بعدد العمليات).
  • المساحة (Space): كم ستحتاج الخوارزمية من ذاكرة (RAM) مع زيادة حجم المدخلات؟

يستخدم تحليل (Big O Notation) لوصف سلوكهما التقريبي (Asymptotic behavior) وهذا ممتاز للمقارنات النظرية.

وعند كتابة برامج حقيقية، توازن بين Time/Space وعوامل أخرى:

سهولة القراءة والصيانة (Readability & Maintainability) : ففي كثير من الأحيان تكون الخوارزمية الأسرع معقدة جدًا وصعبة الفهم

  • والأهم هو أن الكود يقرأ أكثر مما يكتب فإذا كان فريقك والأشخاص الأخرين لا يستطيع فهم الخوارزمية فمن المستحيل صيانتها أو تطويرها أو حتى إصلاح أخطائها.
  • المفاضلة (Trade-off) فقد تختار خوارزمية أبطأ قليلًا إذا كانت أبسط وأسهل في الصيانة.

بساطة التنفيذ (Implementation Simplicity) فكمم من الوقت سيستغرق المطور لكتابة هذه الخوارزمية بشكل صحيح فالخوارزميات المعقدة عرضة للأخطاء (Bugs) بشكل أكبر وصعوبة تنفيذها وتطويرها كبيرة .

إذا الخلاصة أن ال Time وال Space هما الأساس الأكاديمي لمقارنة كفاءة الخوارزمية ولكن في هندسة البرمجيات أنت تبحث عن الخوارزمية الأفضل للمشكلة وهذا يشمل الموازنة بين الكفاءة وسهولة الصيانة ووقت التطوير والسياق الذي ستعمل فيه.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...