في حال كان شخص يخطط لبناء منزل كبير ولكن في نفس الوقت، ليس متأكدًا مما إذا كانت الموارد التي لديه كافية أم لا، فسيقوم بديهيًا بتحديد خطة عمل تضمن إنفاق الموارد القليلة المتاحة تحت التصرف لإنهاء المبنى، أو حتى عند التخطيط للسفر إلى مكان على عدة أميال؛ مع عد توفر الوقت الكافي، فمن الواضح تمامًا أن الشخص سيحاول الحصول على أقصر أو أسرع طريق يوصله إلى وجهته.[١]

تعريف الخوارزميات

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


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


أهمية الخوارزميات

تعمل الخوارزمية كعدسة قوية لرؤية المشكلة حيث تساعد على تحديد ما إذا كانت المشكلة قابلة للحل أم لا، فإذا كانت الإجابة بنعم، فكيف سنحل المشكلة؟ وكم يستغرق حل المشكلة؟ وما مدى الدقة في عملية حلها؟ إذا لم يكن الأمر كذلك، فستساعد الخوارزمية مرة أخرى في تحديد ما إذا كان بالإمكان حل جزء منها،[٣] وتتلخص أهمية الخوارزميات في:[١]


تحسين كفاءة برنامج الكمبيوتر

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


تحسن استغلال الموارد

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


التكلفة

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


خطوات الخوارزمية من منظور البرمجة

يقوم الكمبيوتر في الأساس بالكثير من العمليات الحسابية؛ مما يعني أن لديه الكثير من المشكلات التي يجب حلها، هذا هو بالضبط سبب كون الخوارزميات جوهر علوم الكمبيوتر، خوارزمية الكمبيوتر هي إجراء حسابي يأخذ مجموعة من المدخلات المحدودة ويحولها إلى مخرجات من خلال تطبيق بعض الرياضيات والمنطق ستتكون الخوارزمية في البرمجة من عدة خطوات على النحو التالي:[٣]

  • تعريف المشكلة - ما العمل؟
  • جمع البيانات - ماذا المتوفر لحل المشكلة؟ أو المدخلات.
  • معالجة البيانات - فهم الموجود أو تحويله إلى نموذج قابل للاستخدام.
  • نهج منطقي - استخدام البيانات التي تم جمعها وإنشاؤها مقابل حل المنطق.
  • الحل - تقديم الحل بالطريقة المرادة في واجهة المستخدم الرسومية أو المحطة الطرفية أو الرسم التخطيطي أو الرسم البياني.

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


مزايا وعيوب الخوارزميات

هناك الكثير من المزايا وبعض العيوب للخوارزميات، وهي كالآتي:[٤]


مزايا الخوارزمية

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


عيوب الخوارزمية

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

المراجع

  1. ^ أ ب ت Cleophas Mulongo (5/8/2021), "The Importance Of Algorithms In Computer Programming", technotification, Retrieved 2/1/2022.
  2. Importance of Algorithms "THE IMPORTANCE OF ALGORITHMS", topcoder, 31/10/2018, Retrieved 2/1/2022.
  3. ^ أ ب "Introduction to Algorithm in Programming", educba, Retrieved 2/1/2022.
  4. "Different Types of Algorithms in Data Structure.", thetechplatform, Retrieved 18/5/2022. Edited.