algorithems

تمثل الخوارزمية (Algorithm) مجموعة من الخطوات المنطقية والرياضية المتتابعة لحل مشكلة ما، وقد سميت الخوارزمية بهذا الاسم نسبة إلى العالم محمد بن موسى الخوارزمي الذي ابتكرها في القرن التاسع الميلادي. بينما تعرف الخوارزمية في مجال البرمجة الحاسوبية بأنها مجموعة من التعليمات (Instruction) البرمجية التي ينفذها الحاسوب لتنفيذ مهمة معينة، وتُنفذ هذه التعليمات على مجموعة من البيانات تعرف باسم المدخلات (Inputs)، لنحصل في النهاية على حل المشكلة التي نتعامل معها والتي يعبر عنها بالمخرجات (Output).

عند تحليل أي خوارزمية مهما كان حجمها وتعقيدها فإنها لم تخرج من الأنماط الثلاثة الآتية:

  • التسلسل: في هذا النمط يتم ترتيب التعليمات بشكل متعاقب أو متسلسل، تعليمة وراء الأخرى إلى انتهاء المهمة، وهو أبسط شكل يمكن أن نرتب به التعليمات البرمجية.
  • الاختيار: بعض المشاكل لا يمكن حلها بالتسلسل البسيط للتعليمات، وقد تحتاج إلى اختبار بعض الشروط وتنظر إلى نتيجة الاختبار، إذا كانت النتيجة صحيحة تتبع مسار يحوي تعليمات متسلسلة، وإذا كانت خاطئة تتبع مسار آخر مختلف من التعليمات. هذه الطريقة هي ما تسمى اتخاذ القرار(Decision Making) أو الاختيار.
  • التكرار: عند حل بعض المشاكل لا بد من إعادة نفس تسلسل الخطوات عدة مرات، وهذا ما يطلق عليه التكرار(Repetition).

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

الخوارزمية

 

مواصفات الخوارزمية الناجحة:

لنصف مجموعة من الأكواد البرمجية بأنها خوارزمية يجب أن يتوفر فيها عدد من المواصفات الدقيقة التي تضمن عملها بشكل صحيح، والتي يمكن حصرها في التالي:

  1. الوضوح وعدم اللبس: يجب أن تكون كل خطوة من خطواتها واضحة ودقيقة وسهلة التفسير، وأن تؤدي إلى معنى واحد فقط، بحيث يمكن تتبعها باستخدام الورقة والقلم بكل سهولة، كما يجب أن تؤدي الخوارزمية ككل عملية واحدة محددة.
  2. تحديد المدخلات والمخرجات جيدا: تحتوي الخوارزمية على صفر أو أكثر من المدخلات وكذلك الحال بالنسبة للمخرجات، والتي يجب أن يتم تحديد عددها ونوعها بشكل جيد عند بناء الخوارزمية، لأنها هي الأبواب التي يتصل من خلالها العالم الخارجي بالخوارزمية.
  3. الكفاءة: بحيث تكون الخوارزمية بسيطة وعامة وعملية قدر الإمكان، والابتعاد عن تضمين أي تعقيدات أو تقنيات غير ضرورية حفاظا على الموارد، كما يجب أن تنهي عملها بأقل وقت ممكن، وبعد عدد محدد من الخطوات والعمليات.
  4. الاستقلال عن اللغة: عند تصميم أي خوارزمية يجب أن يتم التفكير بشكل مجرد عن أي لغة برمجة، بحيث تكون مجرد خطوات منطقية منظمة يمكن تنفيذها بأي لغة برمجة، بحيث تكون المخرجات هي نفسها بغض النظر عن التقنية التي بُنيت بها.

 

اقرأ أيضا: 9 نصائح لاحتراف البرمجة

أين تستخدم الخوارزميات؟

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

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

الخوارزميات هي خطط عامة لحل المشاكل وتتنوع أساليب وأنواع الخوارزميات بحسب الأسلوب الذي تتبعه الخوارزمية لحل المشكلة، أو بحسب نوع المشكلة التي تحلها، وبناء على ذلك يمكن تمييز أنواع مختلفة من الخوارزميات، من أبرزها:

  • خوارزميات القوة الغاشمة (Brute force algorithms): تحاول هذه الخوارزميات حل المشكلة بطريقة مباشرة وتمر بجميع الخيارات الممكنة دون استبعاد أي منها حتى تتمكن من العثور على حل المشكلة.
  • الخوارزميات الجشعة (Greedy algorithms): تحاول الخوارزميات الجشعة حل المشكلة خطوة فخطوة، بحيث تقترب رويدًا رويدًا من الحل العام للمشكلة.
  • خوارزميات فرق تسد (Divide and conquer algorithms): تقسِّم خوارزميات فرِّق تسد المسألة إلى مسائل فرعية تشبه المسألة الأصلية، ثمّ تحلها وتدمج الحلول لتقديم حلٍّ المسألة الأصلية.
  • خوارزميات الترتيب (Sort algorithms):هي خوارزميات هدفها ترتيب مجموعة من العناصر بشكل معين، توجد عدة خوارزميات تمكننا من تحقيق عملية الفرز ولكل منها ميزاتها ومحدوديتها.
  • خوارزميات البحث (Search algorithms):هي خوارزميات تقوم بتحديد موقع البيانات المبحوث عنها من بين مجموعة كبيرة من البيانات، وهي عادة ما ترتب البيانات ضمن بعض هياكل البيانات لتستطيع استرداد  القيمة المحددة.
  • خوارزميات التعلم الآلي (Machine Learning algorithms): هي خوارزميات تحاول التعلم بناءً على مجموعة من الحالات أو التجارب السابقة كي تتمكن من اتخاذ قرارات جديدة غير تلك التي تعامل معها أثناء عملية التعلم.
  • خوارزميات التشفير (Encryption algorithms): هي الخوارزميات التي تقوم بتحويل نص مقروء إلى نص غير مقروء يُعرف بالنص المشفر، بحيث يمكن للأطراف المصرح لهم فقط بفهم المعلومات الموجودة في هذا النص وهي خوارزميات مهمة جدًا في مجال أمن البيانات الحساسة والحفاظ على الخصوصية.

كانت تلك بعض أنواع وتصنيفات الخوارزميات الأكثر شيوعًا، وهناك بالطبع العديد من الخوارزميات الأخرى التي تناسب العديد من الحالات المختلفة.

 كيفية نعبر عن الخوارزمية؟
  1. اللغة الطبيعية:هنا نعبر عن الخوارزمية باللغة الطبيعية كالعربية أو الإنجليزية، وهذه الطريقة تصف حل المشكلة بلغتك المحكية دون أي قواعد.
  1. المخطط الانسيابي (Flow Chart) :المخطط الانسيابي هو تمثيل رسومي للخوارزمية، يرسم باستخدام أنواع مختلفة من الرموز لكل رمز غرض معين، وهو يقسم المشكلة الكبيرة إلى مشاكل صغيرة سهلة الفهم ويعد طريقة مناسبة للتواصل بين الأشخاص غير التقنيين.
  • الكود الزائف (Pseudo Code): هنا نعبر عن الخوارزمية في شكل مجموعة من التعليمات التي تحاكي طريقة كتابتها بلغات البرمجة، لكنها لا تلتزم بقواعد البرمجة التي يجب الالتزام بها عندما تكتب أكواد البرمجية الفعلية.

مثال:

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

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

الخوارزيمة

algorithm2

اترك رد

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *