المحتوى
1.مقدمة
2. تعريف الخوارزمية
3. كيف تعمل الخوارزمية؟
4. ما هي الأنواع المختلفة من الخوارزميات؟
5. أمثلة على الخوارزميات المستخدمة في الحياة الحقيقية.
6. تحليل أداء الخوارزمية.
7. طرق تقييم كفاءة وفعالية الخوارزميات.
8. الخاتمة
9. المراجع
- مقدمة
في المشهد المتطور باستمرار لعلوم الكمبيوتر وهندسة البرمجيات، تلعب كفاءة الخوارزميات دورًا محوريًا في تشكيل أداء الأنظمة الرقمية. تبدأ هذه المقالة بالتعمق في عالم الخوارزميات وتحليل أدائها، مع التركيز على الركيزتين التوأم المتمثلتين في الكفاءة والتعقيد
وفي النطاق الواسع لعلوم الكمبيوتر، تقف الخوارزميات بمثابة المهندسين الفكريين الذين يحركون العالم الرقمي. باعتبارها منسقة العمليات الحسابية، توفر الخوارزميات المخططات المنهجية التي توجه البرامج في حل المشكلات المعقدة، بدءًا من فرز مجموعات البيانات إلى البحث عن المعلومات. لفهم جوهر الخوارزميات حقًا، يجب على المرء الشروع في رحلة تستكشف تعقيداتها، وتتعمق في التعقيد الذي يحكم سلوكها، وتدقق في أدائها في ظل سيناريوهات متنوعة.
- تعريف الخوارزمية
الخوارزمية في جوهرها عبارة عن مجموعة من التعليمات المصممة لحل مشكلة حسابية محددة. سواء أكان الأمر يتعلق بفرز البيانات، أو البحث عن المعلومات، أو معالجة المهام المعقدة، تعمل الخوارزميات بمثابة المخططات المعمارية التي تدعم وظائف برامج الكمبيوتر.
وهي إجراء يستخدم أيضاً لإجراء عملية حسابية.
تعمل الخوارزميات كقائمة دقيقة من التعليمات التي تنفذ إجراءات محددة خطوة بخطوة في الإجراءات الروتينية القائمة على الأجهزة أو البرامج.
تُستخدم الخوارزميات على نطاق واسع في جميع مجالات تكنولوجيا المعلومات. في الرياضيات وبرمجة الكمبيوتر وعلوم الكمبيوتر، تشير الخوارزمية عادة إلى إجراء صغير يحل مشكلة متكررة. تُستخدم الخوارزميات أيضًا كمواصفات لأداء معالجة البيانات وتلعب دورًا رئيسيًا في الأنظمة الآلية.
يمكن استخدام الخوارزمية لفرز مجموعات من الأرقام أو لمهام أكثر تعقيدًا، مثل التوصية بمحتوى المستخدم على وسائل التواصل الاجتماعي. تبدأ الخوارزميات عادةً بالمدخلات الأولية والتعليمات التي تصف عملية حسابية محددة. عند تنفيذ الحساب، تنتج العملية مخرجات
وهي مجموعة من الخطوات الرياضية والمنطقية والمتسلسلة اللازمة لحل مشكلة ما. وسميت الخوارزمية بهذا الاسم نسبة إلى العالم أبو جعفر محمد بن موسى الخوارزمي الذي ابتكرها في القرن التاسع الميلادي. الكلمة المنتشرة في اللغات اللاتينية والأوروبية هي «algorithm» وفي الأصل كان معناها يقتصر على خوارزمية لتراكيب ثلاثة فقط وهي: التسلسل والاختيار والتكرار.
- التسلسل: تكون الخوارزمية عبارة عن مجموعة من التعليمات المتسلسلة، هذه التعليمات قد تكون إما بسيطة أو من النوعين التاليين.
- الاختيار: بعض المشاكل لا يمكن حلها بتسلسل بسيط للتعليمات، وقد تحتاج إلى اختبار بعض الشروط وتنظر إلى نتيجة الاختبار، إذا كانت النتيجة صحيحة تتبع مسار يحوي تعليمات متسلسلة، وإذا كانت خاطئة تتبع مسار آخر مختلف من التعليمات. هذه الطريقة هي ما تسمى اتخاذ القرار أو الاختيار.
- التكرار: عند حل بعض المشاكل لا بد من إعادة نفس تسلسل الخطوات عدد من المرات. وهذا ما يطلق عليه التكرار.
- كيف تعمل الخوارزمية؟
تعمل الخوارزميات باتباع مجموعة من التعليمات أو القواعد لإكمال مهمة أو حل مشكلة. يمكن التعبير عنها باللغات الطبيعية ولغات البرمجة والرموز الزائفة والمخططات الانسيابية وجداول التحكم. تعبيرات اللغة الطبيعية نادرة لأنها أكثر غموضا. تُستخدم لغات البرمجة عادةً للتعبير عن الخوارزميات التي ينفذها الكمبيوتر.
تستخدم الخوارزميات مدخلات أولية مع مجموعة من التعليمات. المدخلات هي البيانات الأولية اللازمة لاتخاذ القرارات ويمكن تمثيلها في شكل أرقام أو كلمات. يتم وضع البيانات المدخلة من خلال مجموعة من التعليمات، أو الحسابات، والتي يمكن أن تشمل العمليات الحسابية وصنع القرار. الإخراج هو الخطوة الأخيرة في الخوارزمية ويتم التعبير عنه عادةً بمزيد من البيانات.
على سبيل المثال، تأخذ خوارزمية البحث استعلام بحث كمدخل وتقوم بتشغيله من خلال مجموعة من الإرشادات للبحث في قاعدة بيانات عن العناصر ذات الصلة بالاستعلام. تعمل برامج الأتمتة كمثال آخر للخوارزميات، حيث تتبع الأتمتة مجموعة من القواعد لإكمال المهام. تشكل العديد من الخوارزميات برامج التشغيل الآلي، وتعمل جميعها على أتمتة عملية معينة.
- ما هي الأنواع المختلفة من الخوارزميات؟
هناك عدة أنواع من الخوارزميات، جميعها مصممة لإنجاز مهام مختلفة:
- خوارزمية محرك البحث (Search engine algorithm): تأخذ هذه الخوارزمية سلاسل البحث الخاصة بالكلمات الرئيسية وعوامل التشغيل كمدخلات، وتبحث في قاعدة البيانات المرتبطة بها عن صفحات الويب ذات الصلة وترجع النتائج.
- خوارزمية التشفير (Encryption algorithm): تقوم خوارزمية الحوسبة هذه بتحويل البيانات وفقًا لإجراءات محددة لحمايتها. تستخدم خوارزمية المفتاح المتماثل، مثل معيار تشفير البيانات، على سبيل المثال، نفس المفتاح لتشفير البيانات وفك تشفيرها. إذا كانت الخوارزمية معقدة بما فيه الكفاية، فلن يتمكن أي شخص يفتقر إلى المفتاح من فك تشفير البيانات.
- خوارزمية الجشع (Greedy algorithm): تعمل هذه الخوارزمية على حل مشكلات التحسين من خلال إيجاد الحل الأمثل محليًا، على أمل أن يكون الحل الأمثل على المستوى العالمي. ومع ذلك، فإنه لا يضمن الحل الأمثل.
- خوارزمية العودية (Recursive algorithms): تقوم هذه الخوارزمية باستدعاء نفسها بشكل متكرر حتى تحل المشكلة. تطلق الخوارزميات العودية على نفسها قيمة أصغر في كل مرة يتم فيها استدعاء دالة العودية.
- خوارزمية التراجع (Backtracking algorithm): تجد هذه الخوارزمية حلاً لمشكلة معينة بطرق تدريجية وتحلها قطعة واحدة في كل مرة.
- خوارزمية فرق تسد (Divide-and-conquer algorithm): تنقسم هذه الخوارزمية الشائعة إلى قسمين. جزء واحد يقسم المشكلة إلى مشاكل فرعية أصغر. أما الجزء الثاني فيحل هذه المشكلات ثم يجمعها لإنتاج الحل.
- خوارزمية البرمجة الديناميكية (Dynamic programming algorithm): تعمل هذه الخوارزمية على حل المشكلات عن طريق تقسيمها إلى مشكلات فرعية. ثم يتم تخزين النتائج ليتم تطبيقها على المشاكل المقابلة في المستقبل.
- خوارزمية القوة الغاشمة (Brute-force algorithm): تكرر هذه الخوارزمية جميع الحلول الممكنة لمشكلة ما بشكل أعمى، وتبحث عن حل واحد أو أكثر لوظيفة ما.
- خوارزمية الفرز (Sorting algorithm): تُستخدم خوارزميات الفرز لإعادة ترتيب هياكل البيانات بناءً على عامل المقارنة، والذي يُستخدم لتحديد ترتيب جديد للبيانات.
- خوارزمية التجزئة (Hashing algorithm): تأخذ هذه الخوارزمية البيانات وتحولها إلى رسالة موحدة ذات تجزئة.
- خوارزمية عشوائية (Randomized algorithm): تعمل هذه الخوارزمية على تقليل أوقات التشغيل والتعقيدات المستندة إلى الوقت. يستخدم عناصر عشوائية كجزء من منطقه.
- أمثلة على الخوارزميات المستخدمة في الحياة الحقيقية
في كثير من الأحيان نقوم بأفعال روتينية في حياتنا الواقعية ولكنها في الحقيقة هي خوارزميات نقوم باتباعها ونحن لا نعي ذلك وسنرى أمثلة على هذا الآن:
- اتباع وصفة (Following a recipe): توفر الوصفات سلسلة من الخطوات لتحقيق هدف معين، مثل إعداد فطائر التوت أو صنع صلصة السباغيتي من الصفر. تهدف الوصفات إلى تحقيق نتائج متسقة ومساعدة الأفراد بغض النظر عن خلفيتهم – على إنشاء طبق معين باتباع التعليمات التفصيلية. وبهذه الطريقة، تعكس الوصفات خوارزميات علوم الكمبيوتر، التي تحدد الخطوات اللازمة لتوليد نتائج قابلة للتكرار.
- ربط أربطة الحذاء (Tying shoelaces): يعد ربط أربطة الحذاء مثالًا آخر على اتباع الخوارزمية. على سبيل المثال، هناك عدد محدود من الخطوات التي تؤدي إلى عقدة رباط الحذاء التقليدية المربوطة بشكل صحيح، والتي يشار إليها غالبًا باسم “عقدة الأرنب” أو “عقدة الحلقة والانقضاض والسحب”.
- التعرف على الوجه (Facial recognition): يُستخدم التعرف على الوجه على نطاق واسع في عمليات تسجيل الدخول إلى iPhone بالإضافة إلى مرشحات Snapchat وInstagram. وهو يعمل عن طريق عرض سمات الوجه من صورة أو مقطع فيديو على خريطة القياسات الحيوية باستخدام خوارزمية. يبحث البرنامج بعد ذلك عن التطابق بين هذه الخريطة وقاعدة بيانات الوجوه للتأكد من هوية المستخدم. إذا تم استخدام التعرف على الوجه لمرشحات Snapchat أو Instagram، فلن تكون هناك حاجة للبحث في قاعدة البيانات لأن الخوارزمية تقوم ببساطة ببناء خريطة للوجه وتطبيق المرشح عليها.
- إشارات المرور (Traffic signals): تستخدم إشارات المرور خوارزميات ذكية لإدارة تدفق حركة المرور. تقوم هذه الخوارزميات بتجميع خوارزميات أو حركات مختلفة، مثل السير بشكل مستقيم أو الانعطاف إلى اليمين، إلى مراحل، مما يساعد على ضمان السلامة والكفاءة. على سبيل المثال، عندما يقترب سائق السيارة من الضوء الأحمر، فإن إشارة المرور تمر عبر هذه المراحل. من خلال تقييم حجم حركة المرور، تقرر الخوارزمية متى يكون آمنًا للمركبة أن تتحرك للأمام.
- فرز المستندات والأوراق (Sorting documents and papers): يعد هذا مثالًا رائعًا لكيفية استخدام الخوارزميات لمهام وأغراض مختلفة، مثل فرز الملفات أبجديًا، أو حسب عدد الكلمات، أو حسب التاريخ، أو حسب أي مواصفات أخرى. عندما يقوم شخص ما بترتيب مستنداته الشخصية أو المهنية وفقًا لمجموعة من التعليمات، فهو يطبق التفكير الخوارزمي لتبسيط عملية التنظيم باستخدام مهام صغيرة.
- البحث عن كتاب في المكتبة (Searching for a book in the library): إن العثور على كتاب في المكتبة يشبه اتباع خوارزمية أو خطة خطوة بخطوة. على سبيل المثال، هناك طرق مختلفة للقيام بذلك، مثل استخدام نظام الكمبيوتر الخاص بالمكتبة أو البحث عن ملصقات على الرفوف توضح نوع الكتاب أو موضوعه أو مؤلفه. بغض النظر عن الطريقة التي يختارها المرء، إذا كان من الممكن شرحها وتنفيذها بواسطة الآخرين، فيمكن تصنيفها على أنها خوارزمية.
- تحليل أداء الخوارزمية
يشير تحليل أداء الخوارزمية إلى التقييم المنهجي وتقييم كفاءة وفعالية الخوارزميات. وهو يتضمن دراسة مدى جودة أداء الخوارزمية من حيث الزمان والمكان والموارد الأخرى، وفهم كيفية قياس أدائها مع أحجام المدخلات المختلفة.
الهدف من تحليل أداء الخوارزمية هو اتخاذ قرارات مستنيرة بشأن اختيار وتصميم الخوارزميات بناءً على خصائص كفاءتها. فهو يساعد في تحسين أنظمة البرمجيات، والتأكد من أنها تلبي متطلبات الأداء، وتوجيه تطوير الخوارزميات التي يمكنها التعامل مع مختلف أحجام المدخلات والسيناريوهات بفعالية. - طرق تقييم كفاءة وفعالية الخوارزميات
- فهم كفاءة الوقت (Understanding Time Efficiency)
تعقيد الوقت (Time Complexity):
يقيس تعقيد الوقت كيفية قياس وقت تشغيل الخوارزمية مع حجم الإدخال ويوضح كيفية تطور وقت تشغيل الخوارزمية. يستكشف هذا القسم التعقيد الزمني، ويفحص كيف تظهر الخوارزميات المختلفة معدلات نمو متميزة ولماذا يفضل التعقيد الزمني الأقل في كثير من الأحيان فهو يلقي الضوء على كيفية تأثر كفاءة الخوارزمية مع زيادة تعقيد المشكلة.
Big O لتعقيد الوقت:
يُعد تدوين Big O بمثابة لغة عالمية للتعبير عن تعقيد الوقت. إنه يبسط المقارنة بين الخوارزميات ويساعد في فهم حدودها العليا، مما يوفر رؤى مهمة حول كفاءتها.
من أجل تحليل وحساب أداء الخوارزمية، يجب علينا حساب ومقارنة أسوأ تعقيدات وقت تشغيل الخوارزمية. يعد ترتيب O(1) – المعروف باسم وقت التشغيل الثابت – هو أسرع وقت تشغيل للخوارزمية، حيث يكون الوقت الذي تستغرقه الخوارزمية متساويًا لأحجام الإدخال المختلفة. على الرغم من أن وقت التشغيل الثابت هو وقت التشغيل المثالي للخوارزمية، إلا أنه نادرًا ما يمكن تحقيقه لأن وقت التشغيل يعتمد على حجم n المُدخل.
لنرى تعقيد وقت التشغيل لبعض أمثلة الخوارزميات الشائعة:
- كشف كفاءة المساحة (Unravelling Space Efficiency)
تعقيد المساحة (Space complexity):
يتعمق تعقيد المساحة في متطلبات الذاكرة للخوارزمية. وبعيدًا عن وقت التنفيذ، فهو يدقق في كيفية استخدام الخوارزميات لموارد الذاكرة، مما يؤثر على الكفاءة الإجمالية للعمليات الحسابية. على غرار التعقيد الزمني، فإننا نكشف عن أهمية التعقيد المكاني، والذي غالبًا ما يتم التعبير عنه بلغة تدوين Big O
Big O لتعقيد المساحة:
على غرار التعقيد الزمني، يتم التعبير عن التعقيد المكاني باستخدام تدوين Big O. نحن نكشف عن أهمية هذا الترميز في تقييم كفاءة ذاكرة الخوارزميات.
في المجمل يشير تحليل أداء الخوارزمية إلى التقييم المنهجي وتقييم كفاءة وفعالية الخوارزميات. وهو يتضمن دراسة مدى جودة أداء الخوارزمية من حيث الزمان والمكان والموارد الأخرى، وفهم كيفية قياس أدائها مع أحجام المدخلات المختلفة.
تشمل الجوانب الرئيسية لتحليل أداء الخوارزمية ما يلي:
كفاءة الوقت ووقت التشغيل (Time Efficiency (Runtime)): تحليل مدى سرعة إكمال الخوارزمية لمهمتها. يتضمن ذلك قياس الوقت الذي يستغرقه تشغيل الخوارزمية وفهم كيفية تغير ذلك الوقت مع زيادة حجم البيانات المدخلة.
كفاءة المساحة واستخدام الذاكرة (Space Efficiency (Memory Usage)): فحص مقدار الذاكرة أو المساحة التي تتطلبها الخوارزمية لأداء مهمتها. يتضمن ذلك تحليل هياكل البيانات والمتغيرات والموارد الأخرى المستهلكة أثناء تنفيذ الخوارزمية.
تحليل التعقيد (Complexity Analysis): وصف كيفية تغير أداء الخوارزمية كدالة لحجم الإدخال. يعد التعقيد الزمني والتعقيد المكاني من المقاييس الشائعة المستخدمة في هذا التحليل، مما يوفر نظرة ثاقبة حول كفاءة الخوارزمية من حيث متطلباتها الحسابية والذاكرة.
التحليل المقارب (Asymptotic Analysis): التحقيق في سلوك الخوارزمية مع اقتراب حجم الإدخال من اللانهاية. يساعد التحليل المقارب، والذي يتم التعبير عنه غالبًا باستخدام تدوين Big O، في فهم الحدود العليا لتعقيد الزمان والمكان للخوارزمية.
السيناريوهات الأفضل والمتوسطة والأسوأ (Best, Average, and Worst-Case Scenarios): تقييم كيفية أداء الخوارزمية في ظل ظروف مختلفة، بما في ذلك السيناريوهات الأفضل والمتوسط والأسوأ. يعد السيناريو الأسوأ مهمًا بشكل خاص لفهم أداء الخوارزمية في ظل الظروف المعاكسة.
التحليل التجريبي (Empirical Analysis): إجراء تجارب واقعية للتحقق من صحة التنبؤات النظرية. يتضمن ذلك تشغيل الخوارزميات على مجموعات البيانات الفعلية وقياس أدائها للتأكد من أن التحليل النظري يتماشى مع الملاحظات العملية.
المفاضلات (Trade-offs): النظر في المفاضلات بين جوانب مختلفة من الأداء، مثل تعقيد الزمان والمكان. في بعض الأحيان، قد يؤدي تحسين عامل واحد إلى مقايضة مع عامل آخر، ويعد فهم هذه المقايضات أمرًا بالغ الأهمية في اختيار الخوارزمية الأكثر ملاءمة لموقف معين.
التحليل المطفأ (Amortized Analysis): ذو أهمية خاصة للخوارزميات ذات العمليات المكلفة في بعض الأحيان. يحسب التحليل المطفأ متوسط الوقت أو المساحة لكل عملية عبر تسلسل، مما يوفر فهمًا أكثر شمولاً للأداء.
- الخاتمة
في الختام، تشكل الخوارزميات، بتصميماتها وتعقيداتها المعقدة، العمود الفقري للعمليات الحسابية. وتحدد كفاءتها، التي يمليها تعقيد الزمان والمكان، سرعة أنظمة البرمجيات واستخدام مواردها. من خلال تحليل الأداء الشامل، نكتسب رؤى حول الرقص المعقد للخوارزميات في السيمفونية الرقمية، مما يمكننا من صياغة حلول لا تحل المشكلات بفعالية فحسب، بل تفعل ذلك أيضًا بأناقة وقابلية للتوسع والكفاءة. وبينما نتنقل في المشهد الحسابي، تظهر الخوارزميات ليس فقط كسطور من التعليمات البرمجية، بل كمنسقين لسيمفونية رقمية تشكل المستقبل التكنولوجي. - المراجع
https://www.techtarget.com/whatis/definition/algorithm
https://www.simplilearn.com/big-o-notation-in-data-structure-article
https://www.geeksforgeeks.org/analysis-algorithms-big-o-analysis