ما هي الخوارزميات وأهميتها في علم الحاسوب

- الإعلانات -

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

وسط المقالة

ما هي الخوارزميات وأهميتها في علم الحاسوب
ما هي الخوارزميات وأهميتها في علم الحاسوب

ما هي الخوارزميات وأهميتها في علم الحاسوب

إذا طُلِب منك عد الأشخاص في هذه الصورة فبدأت العد بواحد ثم إثنان وهكذا واحداً تلو الآخر حتى إنتهيت بالعد إلى 10 فما قمت به هو خوارزمية لعد الأشخاص في هذه الغرفة.

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

في المثال السابق المشكلة كانت إيجاد عدد الأشخاص الموجودين بالغرفة والخوارزمية التي تم إتباعها هي:

  1. نفترض عدد الموجودين بالغرفة حالياً س = صفر
  2. لكل شخص موجود في الغرفة نجري س = س + 1
  3. عدد الموجودين في الغرفة هو س

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

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

  1. نفترض عدد الموجودين بالغرفة حالياً س = صفر
  2. لكل زوج من الأشخاص في الغرفة نجري س = س + 2
  3. إذا كان هناك شخص واحد أخير نجري س = س + 1
  4. عدد الموجودين في الغرفة هو س

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

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

ملاحظة:

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

الآن دعنا نطرح مثالاً آخراً،

ما هي الخوارزميات وأهميتها في علم الحاسوب
ما هي الخوارزميات وأهميتها في علم الحاسوب

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

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

حسناً، إن كانت الخوارزمية ستعتمد على البحث من بداية المجلد إلى آخره أو العكس فهي حتماً ستنتهي بإيجاد الإسم المطلوب ولكنها ليست الأمثل!

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

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

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

عند المقارنة بين خوارزمية وأخرى يجب أن نقارن بين أسوء نتيجة لكل منهما.. لماذا؟

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

إذاً كيف سنقارن بين النتيجة الأسوء للخوارزميات المختلفة؟

يتم ذلك عبر إيجاد المعامل الرياضي الأكبر المستخدم في كل خوارزمية والذي يعرف ب  big O notationوالذي يكافئ إحدى الدوال التالية

ما هي الخوارزميات وأهميتها في علم الحاسوب
ما هي الخوارزميات وأهميتها في علم الحاسوب

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

أهمية الخوارزميات في علم الحاسوب؟

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

خوارزميات حياتية

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

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

وهناك الكثير من خوارزميات علم الحاسوب التي يمكنك الإستفادة منها في الحياة، للمزيد أنصح بقراءة كتاب Algorithms to live be .

خاتمة

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

التعليقات متوقفه

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More