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

والآن، لنأخذ رحلة سريعة لفهم الخوارزميات البرمجية.

الوصفة البرمجية

الخوارزمية البرمجية Programming Algorithms هي وصفة بها مجموعة من التعليمات، بترتيب معين لحل مشكلة برمجية ما. من الممكن أن نقول أنها أشبه بالوصفة المختصرة لإعداد طبق ما، فهي تتكون من ثلاث مراحل، إعداد المدخلات inputs، معالجة تلك المدخلات Procedure، وأخيراً صدور نتيجة Output.

على سبيل المثال، إذا أردنا ان نجمع رقمين، فسنأخذ تلك الخطوات:

  • تكوين 3 متغيرات، (أ)، (ب)، و(ج). (أول اثنين من أجل الأرقام، والأخير من أجل تخزين جمع تلك الأرقام).
  • قراءة المتغير (أ) و(ب).
  • ج = أ + ب.
  • اطبع (ج).
  • Step 1: Start
  • Step 2: Declare variables num1, num2 and sum.
  • Step 3: Read values num1 and num2.
  • Step 4: Add num1 and num2 and assign the result to sum.
  • sum←num1+num2
  • Step 5: Display sum
  • Step 6: Stop

كتابة الحل بتلك الطريقة تسمى بال pseudo code، وهي طريقة بسيطة مؤقتة لتكوين الخوارزمية، لحين تحويلها الى طريقة برمجية، بلغة برمجة معينة.

إذا أردنا تحديد جودة وكفاءة أي خوارزمية، فيجب توافر فيها تلك المواصفات:

  1. تحديد المدخلات اللازمة بدقة.
  2. كل خطوة يجب أن تكون أساسية وواضحة.
  3. توافر الكفاءة والسرعة لحل المشكلة.
  4. عدم تحديد لغة برمجة معينة لتلك الخوارزمية، فيجب أولاً كتابتها بطريقة ال Pseudo Code، لكي تلائم أي لغة برمجة أخرى.

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

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

لا يوجد وقت للترتيب

خوارزميات الترتيب تعتبر من الخوارزميات الأساسية في أي عمل برمجي، فإنها توفر الكثير من الوقت في ترتيب عدد معين من البيانات، تصاعدياً أو تنازلياً على حسب الحاجة، والتي تخدم في حل مشاكل أخرى معقدة بشكل كبير. أحد تلك الخوارزميات هو الترتيب الفقاعي (Bubble sort) .

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

البحث بدون عناء

إحدى أنواع الخوارزميات، هي خوارزميات البحث، التي تعتبر من أهم الخوارزميات على الإطلاق، والتي بدورها تستفيد بشكل كبير من خوارزميات الترتيب، فإذا كانت البيانات مرتبة، سهلت عملية البحث. أشهر خوارزميات البحث، هي خوارزمية البحث الثنائي (Binary Search).

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

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

تتكرر تلك العملية حتى نجد أن العنصر الأوسط الذي نحدده يساوي ما نبحث عنه.

المصادر:

  • إعداد: أحمد ثروت
  • مراجعة: أحمد سعد
  • تدقيق لغوي: داليا المتني
مشاركة!
الفضائيون
مبادرة معرفيّة علميّة موجهة للجمهور الناطق بالعربية تأسست بتاريخ 16 مارس 2015، شعارها "نرى العالم، من نافذة العلم"، وهي تهدف إلى نشر العلوم الحقيقية ونبذ الخرافة معتمدة على ترجمة وإعداد مواد مكتوبة ومقروءة إضافة إلى الصور التوضيحية والفيديوهات التعليمية.

تعليق

لطفت، أدخل تعليقك هنا
لُطفا، أدخل اسمك هنا