ما هي الخوارزميات البرمجية؟
تُعرَف الخوارزميات Algorithms بمفهومها العام على أنها مجموعة خطوات منطقية لحل مشكلة معينة، تختلف باختلاف تفكير من يتولّى مهمة حل المشكلة. يمكن تشبيهها إلى حدٍ كبير بلوحة إشارات المرور، إذ تُوضَع مجموعة من الخطوات والقواعد لكيفية التحكُّم باللوحة وصولًا إلى المرحلة التي يظهر فيها الضوء المناسب وفق الشرط المُحقَّق.
أما عن الخوارزميات في البرمجة فتُعدّ مجموعة من التعليمات المحددة التي يجب اتباعها لبناء البرامج والعمليات الحاسوبية وتصميمها. جديرٌ بالذكر أن الخوارزميات جزء من التعاليم البرمجية، صياغتها تختلف حَسَبَ اللغة البرمجية، والناتج سيكون مماثلًا في جميع الحالات.
كما تُعرَّف الخوارزميات البرمجية على أنها بناء برمجي ذو طابع أمري، بمعنى أنها تعليمات حاسوبية على شكل أفعال أمر بصيغة جمل شرطية: “إذا ____؛ افعل ____”. فإذا أردت من الحاسب تنفيذ عملية معينة، يجب أن تُخبره طريقة التنفيذ بخطواتٍ مفصلةٍ ليُنفّذ ما تريده وفق المسار المُحدَّد.
يرجع تاريخ استخدام علم الخوارزميات في البرمجة إلى عام 1936، عندما حدَّد “آلان تورينج” مفهومًا تأسيسيًا لعلماء الحاسوب في ورقته البحثية على آلة تورينج، وأوضح أنه يمكن تفكيك المشكلات وحلها بسرعة، بواسطة الآلات التي تنفذ الخوارزميات لإجراء العمليات التسلسلية وصولًا إلى إجابة محددة.
مثال ذلك عندما نكتب برنامج بسيط لحساب معادلة 2×9 ÷8:
- نبدأ الخطوة الأولى بالتحقُّق أن المقام لا يساوي صفر، إن كان كذلك؛
- نجد في الخطوة التالية ناتج ضرب 9×2.
- أخيرًا نحسب ناتج القسمة.
كيف تعمل الخوارزميات Algorithms؟
تتكوَّن الخوارزميات Algorithms من مدخلات أولية مع مجموعة من التعليمات والقواعد. تشكّل المدخلات البيانات الأولية اللازمة لتنفيذ الخوارزمية والحصول على المخرجات، ويشكّل المخرج الخطوة الأخيرة في الخوارزمية. ولتبسيط طريقة عملها أكثر، تخيَّل السيناريو التالي:
لعبة بين شخصين يُحدّد إحداهما عدد ويطلب من الشخص الآخر تخمين ذلك العدد مع إخباره بنطاق معين يقع ضمنه العدد المُحدَّد، على أن يساعده بعد كل تخمين خاطئ بإعطائه تلميح ما إذا كان العدد المُحدَّد (المخرجات) أكبر من التخمين أم أصغر منه (المدخلات).
إذا أردنا حل هذه المسألة البسيطة بطريقةٍ اعتياديةٍ، فإننا سنعتمد على أسلوب التجربة والخطأ واستهلاك جميع المحاولات -والتي تُمثّل النطاق الذي يقع ضمنه العدد المُحدَّد- إلى حين إيجاد التخمين الصحيح. هذه الطريقة لا بأس بها، لكنها غير مجدية وتستهلك وقتًا غير ضروريًا في حين يمكن حلها بطرق أبسط.
يمكننا عبر وضع خوارزمية لحل المسألة اختصار الوقت والجهد، وبالاعتماد على المعطيات، فإن شروط اللعبة تتيح معرفة موقع العدد بعد كل تخمين خاطئ، وبالتالي ستعتمد خوارزميتنا بصورة أساسية على تقليص نطاق الأعداد بعد كل تخمين واستبعاد الأعداد التي لا تقع ضمن هذا النطاق وصولًا إلى النتيجة النهائية.
لقد قلصت بذلك عدد المحاولات للوصول إلى الإجابة الصحيحة إلى الثُلث تقريبًا وزدت حظوظك بالإجابة الصحيحة والسريعة.
ما أهمية الخوارزميات في البرمجة؟
أحدثت الخوارزميات طفرة كبيرة في مجال البرمجيات وساهمت كثيرًا بتطوّره، وعلى الرغم من كون الخوارزميات علمًا مستقلاً بذاته نشأ قبل الحاسب بكثير، إلّا أنها تُستخدَم في كل أجزاء الحاسوب تقريبًا. فيما يلي نوضح أبرز استخدامات الخوارزميات في البرمجة:
1. ترتيب المعلومات وفرزها
تأتي أهمية الخوارزميات في البرمجة Algorithms من كونها تساعد على تعزيز كفاءة البرامج وتحسين استخدامها للموارد المتاحة والمدخلات مهما كثرت، بإنتاج نتائج دقيقة تساعد على حل المشكلات بسرعة وكفاءة أكبر.
إذ تُمثّل عملية فرز المعلومات، بترتيب منطقي لتقديمها بصورة أفضل ومناسبة أكثر، تحدٍ يُحل غالبًا بخوارزميات خاصة. أبرز الأمثلة على ذلك هو استخدام الخوارزميات في نتائج محركات البحث مثل جوجل، فتترتب ملايين النتائج وتُفرز وفقًا لاحتياجات المستخدم وتماثل النتائج لقواعد تحسين محركات البحث.
2. نُظم التوصية
تلعب الخوارزميات في البرمجة على سبيل المثال لا الحصر دورًا كبيرًا في كيفية عمل وسائل التواصل الاجتماعي وتتحكَّم في ظهور المحتويات والإعلانات المناسبة وفقًا لبيانات المستخدم وشخصيته، إذ تُتَخَذ جميع هذه القرارات وتقودها الخوارزميات من خلف الستار.
كما تستخدم مواقع مثل Amazon وNetflix خوارزميات التصفية التعاونية Collaborative filtering التي تبحث في الاستخدامات وبيانات المستخدمين لمعرفة اهتماماتهم وأذواقهم وتقدم بعد ذلك اقتراحات وتوصيات لعمليات الشراء والعروض التلفزيونية التي قد يحبونها.
3. معالجة البيانات بسرعة
تساعد الخوارزميات البرمجية البرامج في معالجة مليارات المعلومات بسرعةٍ ودقةٍ كبيرتين وغير مسبوقة. مثلًا، تحتاج تطبيقات كخرائط جوجل إلى حساب الطرقات عبر المدن، مع مراعاة المسافة وحركة المرور والحوادث؛ لتحديد أفضل المسارات التي يجب أن يسلكها المستخدم. ولحل هذه المشكلة، غالبًا تلجأ تلك التطبيقات إلى استخدام خوارزمية ديكسترا Dijkstra’s التي تُعنى بحل مسألة إيجاد المسار الأقصر بين مسافتين.