ما هو تعقيد الوقت في الخوارزميات Time Complexity

اقرأ في هذا المقال


ما هو Time Complexity؟

وهو مفهوم في علم الحاسوب يعبر عن كمية الوقت الذي يستغرقه الكود البرمجي أو الخوارزمية للمعالجة أو تشغيل، ويُحسب من خلال عدد العمليات التي ستؤديها الخوارزمية.بعبارة أخرى، فإن (Time Complexity) هو المدة التي يستغرقها الكود البرمجي لمعالجة مقدار معين من المدخلات، ويعبر أيضا عن كفاءة الكود.

يمكن تطبيقه على أي خوارزمية أو وظيفة (function) تقريبًا ولكن سيكون أكثر فائدة في البرامج التي تستخدم التكرار، كما لا جدوى من قياس (Complexity Time) لتطبيقات مثل جلب اسم المستخدم وكلمة المرور من قاعدة بيانات للمقارنة أو حفظ البيانات سواء كانت 20 مل ثانية أو 5 ملل ثانية. ومع ذلك، إذا كانت هناك جمل تُنفذ بشكل متكرر، فإن تحديد وفهم مصدر (Complexity Time) يُمكن أن يساعد في إيجاد حلول لتقصير وقت المعالجة مثلا.

لماذا تعتبر  complexity time بالغة الأهمية؟

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

الآن بعد أن علمنا أن العوامل المختلفة التي تؤثر على نتيجة الخوارزمية التي يتم تنفيذها، فمن الحكمة أن نفهم مدى كفاءة استخدام هذه البرامج لأداء مهمة ما. لقياس هذا، نحتاج إلى تقييم (Time and space Complexity). بحكم التعريف، فإن (Space complexity) لخوارزمية ما يحدد مقدار المساحة أو الذاكرة التي تأخذها الخوارزمية لتعمل كدالة لطول المدخلات. بينما يحدد (Time Complexity) للخوارزمية مقدار الوقت الذي تستغرقه الخوارزمية للتشغيل كدالة لطول المدخلات.

ما هي الأنواع المختلفة من Time complexity؟

يمكنك التعبير عن (Time Complexity) باستخدام (Big O Notation) وتعبر عن وقت تشغيل الخوارزمية من حيث سرعة نموها بالنسبة للإدخال “n” من خلال تحديد عدد “N” من العمليات التي تتم عليها.وهكذا، فإن (Time Complexity) للخوارزمية يُرمز إليه مجموع “[O[n” المخصصة لكل سطر في الكود. هناك أنواع مختلفة من (Time Complexity) المستخدمة:

  • (Constant time: O(1
  • (Linear time: O(n
  • (Logarithmic time: O(log n
  • (Quadratic time: O(n^2
  • (Polynomial-time: O(n^K

شارك المقالة: