كفاءة خوارزميةتُعرّف الكفاءة الخوارزميّة[1] في علم الحاسوب بأنها إحدى خصائص الخوارزميات التي تتعلق بعدد الموارد الحاسوبية (الوقت، السرعة، الذاكرة..) التي تستخدمها الخوارزمية أثناء عملها، وهنا يجب أن يتم تحليل الخوارزمية لتحديد مدى استخدامها للموارد وتحديد كفاءتها.[2] للوصول إلى أعلى كفاءة؛ يجب تقليص الموارد المستخدمة إلى أقل حد ممكن. مع أن الموارد المختلفة (مثل الوقت والمساحة) لا يمكن تحليلها بشكل مباشر لمقارنة الخوارزميات المختلفة وتحديد أي منها أكثر كفاءة من الأخرى، حيث أن المقارنة تعتمد على أهمية المعيار الذي يقارن من خلاله. فمثلاً أن تكون الخوارزمية أكثر سرعة أو أن تستخدم اقل مساحة ممكنة من الذاكرة، أو أي معايير أدائية أخرى. نظرة عامةتعتبر الخوارزمية ذات كفاءة إذا كان استخدامها للموارد أقل من "المستوى المقبول"، ويمكن القول أن المستوى المقبول يعني أن الخوارزمية سوف تستهلك كمّا معقولاً من الموارد. منذ 1950، شهدت الحواسيب تطورًا كبيرًا بالنسبة لكل من الطاقة الحاسوبية المتاحة وكمية الذاكرة المتاحة، لذلك فإن مستويات القبول الحالية لا يمكن مقارنتها مع المستويات المقبولة قبل 10 سنوات مثلاً. هناك العديد من الموارد المستخدمة من قبل الحاسوب يمكن قياسها، أكثر اثنتين شائعتين هما السرعة واستخدام الذاكرة، عدا عن موارد أخرى يمكن أخذها بعين الاعتبار مثل سرعة النّقل ومدى استخدام الخوارزمية للذاكرة المؤقتة، واستهلاك الطاقة، ووقت الاستجابة. العديد من هذه المعايير يعتمد على حجم المدخلات للخوارزمية -كمية البيانات التي سيتم معالجتها-، وأحيانا تعتمد على طريقة ترتيب البيانات حيث أن بعض خوارزميات الترتيب يكون أداؤها سيّئاً عندما تكون البيانات مرتّبة مسبقاً، أو التي تكون مرتبة بطريقة عكسية. عملياً، هناك عوامل أخرى يمكن أن تتحكم بكفاءة الخوارزمية؛ مثلاً مدى دقتها وتلبيتها لمتطلبات عملها، كما سيُذكر لاحقًا، فإن طريقة تطبيق الخوارزمية سيكون لها تأثير كبير على الكفاءة الفعلية. التحليل النظرييمكن تحليل الخوارزمية نظريًا من خلال حساب تعقيد الخوارزمية باستخدام رمز O الكبير، حيث يرمز إلى مدى تعقيد الخوارزمية كاقتران مرتبط بحجم البيانات. و يعتبر هذا المقياس دقيق بشكل معقول إذا كان حجم البيانات كبير، ولكن لا يمكن أخذه بعين الاعتبار على البيانات القليلة. مقياس استخدام الموارديُعّبر عادةً عن المقياس من خلال اقتران مرتبط بحجم البيانات n أكثر مِقياسّين يُعتمد عليهما هما: 1. الزمن: مقدار الزمن الذي تستغرقه الخوارزمية لتنهي عملها. 2. المساحة: كمية الذاكرة (تحديداً الذاكرة العشوائية) التي تحتاجها الخوارزمية. والمساحة تُقسم إلى قسمين: حجم المساحة التي تحتاجها الشيفرة المصدرية للخوارزمية وحجم البيانات التي تعالجها الشيفرة. الزمننظريًايُستخدم التعقيد الزمني لتحليل الوقت الذي تستخدمه الخوارزمية بالنسبة لكمية المدخلات. النتيجة يمكن التعبير عنها بواسطة رمز O الكبير. يمكن من خلال هذه العملية مقارنة الخوارزميات خاصة إذا كان لدينا كم كبير من البيانات لمعالجتها. المساحةكما هو الحال في التحليل الزمني، تُحللّ الخوارزمية من خلال تعقيد المساحة للحصول على تقدير المساحة التي تحتاجها الخوارزمية خلال وقت التشغيل، يعبر عن هذا الاقتران أيضاً بواسطة رمز O الكبير. هناك أربع جوانب لاستخدام الذاكرة يجب التنبه لها:
الحواسيب الحالية تمتلك مساحة كبيرة من الذاكرة، لذلك تقليص حجم الخوارزمية ليتناسب مع حجم الذاكرة لم يعد مشكلة كبيرة نواجهها. لكن مع وجود ثلاث أنواع من الذاكرة فالأمر مختلف قليلاً:
الخوارزمية التي تحتاج ذاكرة تتناسب مع مساحة الذاكرة المخبئية Cache Memory سيكون أداؤها أفضل بمراحل من الخوارزمية التي تحتاج إلى سعة الذاكرة الرئيسة، وبدورها ستكون أسرع بكثير من الخوارزمية التي تحتاج إلى الذاكرة الافتراضية. مراجع
|