برمجة

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

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

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

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

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

ثم وضع السكر فى الكوب واخيرا وضع الشاء فى الكوب، اذا الخوارزميات هى عباره عن الخطوات المتبعه لحل مشكله ما.

دور الخوارزميات في لغات البرمجة

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

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

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

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

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

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

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

اشهر الخوارزميات:

Sort Algorithms

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

عناصر بترتيب معين . كل لغات البرمجة لديها طريقتها الخاصه فى الترتيب .

بعض اشهر خوارزميات الترتيب هى :

Merge Sort
Quick Sort
Heap Sort
Bubble Sort
مثال : الترتيب بحسب السعر أو الشعبيه فى المواقع التجارية.

Search Algorithms

تقوم هذه الخوارزميه بالبحث عن عنصر معين فى مكان ما ومن اشهر الأمثلة عليها هو ما يعرف بالبحث الثنائى أو

Binary search فهى تقوم بتقسيم العناصر إلى النصف عده مرات الى ان يتم ايجاد العنصر المراد ومن تطبيقاتها

عندما تقوم بالبحث عن اسم ملف مثلا مقطع فيديو معين فهو يقوم بالطريقه السابقه إلى ان يتم أيجاده.

Depth/Breadth First Search

تستخدم فى البحث ولكن فى ال Data structure وهى من الدول المفيده والمهم جدا ومن اهم تطبيقاتها

فى البحث عن المعلومات فى محركات البحث Crawling
فى الذكاء الاصطناعى فى بناء الروبوتات مثل الروبوت ألذي يلعب شطرنج
أيجاد اقصر الطرق بين نقطتين وحل المتاهات

Hashing

حاليا من اكثر الخوارزميات المستخدمه فى ايجاد عنصر ما عن طريق المفتاح الخاص به Key/Value pair

يعرف أيضا باسم القاموس أو Dictionary ويقوم بربط كل قيمه تريد حفظها بمفتاح معين لذلك عن البحث عن قيمه

معينه كل ما عليك هو استخدام المفتاح وهى اسرع بكثير من Sort + Search لإيجاد عنصر ما, من اهم التطبيقات

فى ال router لتسجيل IPs
للتاكد من وجود قيمه معينه فى List حيث أن ال Linear search سيأخذ وقت كبير يتناسب مع عدد العناصر

Dynamic Programming

تستخدم هذه الخوارزمية لحل المشاكل المعقدة عن طريق تكسيرها إلى أجزاء اصغر , نحل المشاكل الصغيرة نتذكر

حلها جيدا ثم نحل المشاكل الأكبر بسرعه مثال :

ما مجموع 1+1+1+1+1 , ستعدها وتقول 5 ولكن إذا قلت لك اضف واحد ماذا يكون العدد ستجاوب على الفور 6

بدون العد مره أخرى كيف فعلتها ؟ انت فقط قمت بإضافة واحد على العدد الذي تتذكره في المشكلة السابقة بدون العد مره

أخرى ال Dynamic Programming تقوم بنفس الطريقة لحل المشكلات الكبيرة .

Exponentiation by squaring

اذا اردت ان تحسب 232 كل ما ستفعله هو ان تقوم بعمل loop ل 32 مره لإيجاد الحل , ماذا إذا قلت لك انك يمكنك الحصول

على نفس الجواب بعمل loop ل 5 مرت فقط . هذه الخوارزميه تستخدم لايجاد الحل لرقم مرفوع لقوى كبيره فى وقت صغير جدا

O(log N) (إذا أردت أن تفهم معنى الوقت السابق هذا الموضوع سيفيدك )

String Matching and Parsing

واحده من اهم الخوارزميات تستخدم للبحث عن مقطع معين فى نص ضخم , فعندما تستخدم Ctrl +F فانك تقوم بالبحث عن نص ضخم

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

Primality Testing Algorithms

تستخدم لتحديد إذا ما كان رقم معين اولى ام لا من اهم تطبيقاتها

التشفير
تستخدم أيضا في ال Hashing

اترك تعليقاً

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