ما هى الخوارزميات فى البرمجة ؟

ما هى الخوارزميات فى البرمجة
ما هى الخوارزميات فى البرمجة

سنتعرف فى هذا المقال على ما هى الخوارزميات فى البرمجة وماهى عوامل جودة الخوارزمية وامثلة عملية علي الخوارزميات وماهو الهدف من تعلم الخوارزميات.

اولا لنتعرف على ما هى الخوارزميات فى البرمجة

لجعل جهاز الكمبيوتر يقوم بعمل اي وظيفة فإنك بحاجة إلى كتابة برنامج , ولكتابة هذا البرنامج فإنك بحاجة ان تخبر الكمبيوتر خطوة بخطوة ما الذى عليه القيام به , بعد ذلك يقوم الكمبيوتر بتنفيذ هذه الخطوات للوصول إلى الهدف النهائى المطوب .

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

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

عن طريق التاكسى :

  • ايقاف التاكسى
  • الدخول إلى التاكسى
  • إعطاء السائق العنوان

عن طريق تأجير سيارة :

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

هذه الطرق (الخوارزميات) وغيرها من الطرق الاخر يمكنك استخدامها لتنفيذ الهدف النهائى وهو توصيل صديقك إلى المطار وكل الطرق تؤدى فى النهاية إلى نفس الهدف , ولكن كل منهم بطريقة مختلفة وبخطوات مختلفة بطبيعة الحل , فكل خوارزمية لها تكلفة Cost مختلفة , وكل منهما له زمن تنفيذ Time مختلف فالتكسى على سبيل المثال ربما اسرع طريقة ولكن فى المقابل ربما هو الاغلى .

هذا الكلام ينطبق على البرمجة فى الكمبيوتر فكل برنامج له طرق مختلفة لتنفيذ نفس المهمة وكل طريقة او Algorithm له مميزات وعيوب عند استخدامات معينة .

تعريف الخوارزميات فى البرمجة

يمكننا الآن تعريف الخوارزميات على انها مجموعة من الخطوات المصممة لاداء مهمة معينة , والتى يمكن ان تكون مهمة بسيطة مثل حاصل ضرب رقمين او مهمة معقدة مثل تشغيل ملف فيديو مضغوط ومحركات البحث مثل جوجل تستخدم خوارزميات معقدة لاظهار نتائج البحث المناسبة لك.
كيف تعمل خوارزمية جوجل Page Rank

وتهتم دارسة الخوازميات للكمبيوتر بعاملين هامين وهما Time complexity وهو الوقت الذى يقضيه الكمبيوتر فى تنفيذ الخوارزمية , والعامل الاخر هو Space complexity وهو كمية الذاكرة التى استخدمها البرنامج لتنفيذ الخوارزمية.

مثال على الخوارزميات فى البرمجة

الترتيب او Sorting على سبيل المثال من انواع الخوازميات فى الكمبيوتر التى تستخدم بكثرة لترتيب العناصر لذلك هناك الكثير من الخوارزميات وهذه اشهرها :

  • Bin sort
  • Merge sort
  • Bubble sort
  • Shell sort
  • Quick sort

كل طريقة من الطرق السابقة مناسبة لحالة معينة فعلى سبيل المثال إذا كنت تريد ترتيب مليون عدد من النوع Integer فخوارزمية Bin Sort هى المناسبة لذلك , اما اذا اردت ترتيب مليون عنوان كتاب فربما خوارزمية Quick Sort , وعليك تحديد الخوارزمية الأنسب للمهمة عن طريق فهم نقاط القوة والضعف لك خوازمية فى مواقف مختلفة .

عوامل جودة الخوارزمية

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

فائدة تعلم الخوارزميات فى البرمجة

تعلم الخوارزميات اساسى لتعلم البرمجة وهذه بعض فوائد تعلم الخوارزميات

تقليل الزمن اللازم لتنفيذ الخوارزمية

يمكن ان يكون لنفس المهمة اكثر من حل ولكن الفرق قد يكون فى زمن تنفيذ كلًا منهم ولتوضيح اهمية الزمن فى تنفيذ البرنامج إليك المثال التالى :

لنتفترض اننا نريد برنامج لايجاد مجموع من 0 إلى 10 اس 11.

الحل الذى سياتى إلى ذهنك مباشرتًا هو كالتالى :

الحل بالاعلى ببساطة يفترض اننا سنمر على الاعداد من 0 إلى 10 اس 11  ونقوم بجمع كل رقم فى هذه الاعداد وتنفيذ الكود كالتالى

الحل لم ياخذ اي وقت ولكن دعنا نجرب تنفيذ البرنامج , والنتيجة ان البرنامج سياخذ الكثير من الوقت لينفذ هذا البرنامج البسيط , لنحاول تقدير الزمن اللازم لتنفيذ هذه الخوارزمية

وقت تشغيل الكود = عدد التعليمات * وقت تنفيذ كل وحدة

لنفترض ان عدد التعليمات هو X

x = 1 + (10^11 + 1) + (10^11) + 1  لاحظ ان علامة ^ تعنى اس

وبالتالى x = 2 * 10^11 + 3

لنتفترض ان جهاز الحاسوب الخاص بك يستطيع تنفيذ y = 10 ^8 امر فى الثانية -هذا بالطبع يختلف من جهاز لاخر على حسب قدرته.

بالتالى الوقت المستغرق لتشغيل الكود = x / y (أكبر من 16 دقيقة)

سيستغرق الكود حوالى 16 دقيقة ليتم تنفيذه ! كارثة أليس كذلك؟

بالطبع هذا مثال على خوارزمية سيئة ام الطريقة الصحيحة هى باستخدام الرياضية التالية :

المجموع = N * (N + 1) / 2

والتنفيذ كالتالى

هذا الكود يتطلب امر واحد لتنفيذه بغض النظر عن العدد الذى نريد جمعه.

المثال السابق يوضح لنا ان دراسة زمن تنفيذ الخوارزمية هو امر ضرورى ولا يمكن الاستغناء عنه.

قابلية التوسع

سبب اخر يجعل دراسة الخوارزميات امر ضرورى هو القابلية للتوسع Scalability وتعنى تكون الخوارزمية قابلة لمعالجة المشكلة التى تقوم بحلها ولكن مع زيادة حجم المشكلة.

لنتفترض اننا نريد ان ننشئ فصل دراسى ل 50 دارس ستقول حسنًا نأجر غرفة ونجلب بعض السابورات والاقلام وحلت المشكلة.

حسنًا لنفترض ان العدد زاد إلى 200 دارس فى هذه الحالة الحل مازل صالح ولكن مع زيادة الموارد ربما غرفة اوسع وجهاز عرض شرائح وحلت المشكلة.

لنتفترض ان العدد زاد إلى 1000 فى هذه الحالة يفشل الحل او يحتاج إلى الكثير من الموارد عندما يزداد حجم المشكلة بالتالى هذا الحل غير قابل للتوسع وله حدود.

لعلك تتسأل مع الحل القابل للتوسع اذًا؟

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

المحافظة على الذاكرة 

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

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

كلمة اخيرة

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

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

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

ويمكنك متابعة مجموعة من الدروس عن الخوارزميات من هنا

مجموعة كبيرة من الخوارزميات بلغة بايثون على موقع جيت هب


مقالات ذات صلة

Binary Search Algorithm خوارزمية البحث الثنائي

  كيف تعمل خوارزمية البحث الثنائي كغيرها من الخوارزميات لا بد من توافر المدخلات المطلوبة و التي تتمثل في...

مسألة برمجية : نظام جداول البيانات

فى نظام من نظم جداول البيانات مثل اكسل على سبيل المثال يتم استخدام الترقيم التالي فى الأعمدة       ...

كيف تعمل خوارزمية PageRank فى محرك بحث جوجل ؟

  عند بدايته لما يكن جوجل  الاول على الساحة ولكن احد اهم العوامل التى جعلت جوجل يصعد القمة على حساب...

الخوارزميات الصوتيه Phonetic algorithms

الخوارزميات الصوتية عبارة عن ترتيب الكلمات بناءً على التشابه فى النطق و معظمها طورت للغة الانجليزية ولا تعطى نفس...

كتب بواسطة عمرو العربى

مؤسس مطور

التعليقات

اترك تعليقك

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

*