Loading...

لاتفوتك فرصة خصم الاشتراك المبكر ٣٩٩ ريال لمعسكر تطوير اللغة الانجليزية

خوارزميات الحاسب

خوارزميات الحاسب

July 3, 2023 calendar icon

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

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


ما هي الخوارزميات (Algorithms) ؟


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

تنفذ هذه الأوامر علي مجموعة من المدخلات (input) للحصول علي نتائج (output). تختلف الخوارزميات المصممة في درجة الصعوبة بدأ من شديد السهولة مثل تصميم خوارزمية لمعرفة ما اذا كان العدد زوجي أو فردي أو أكثر تعقيدا من ذلك نوعا ما مثل خوازرمية معرفة أقصر الطرق للوصول لمكان معين .

تكتب الخوارزميات بصيغة (pseudo code) أي ما يعرف بالكود الزائف (2).

على سبيل المثال في حالة كتابة خوارزمية معرفة ما اذا كان العدد زوجي أو فردي ، تكون الصيغة هكذا:

أدخل عدد x

اقسم العدد الذي تم ادخاله علي 2

اذا كان ناتج القسمة بدون باقي فإن العدد زوجي

عدا ذلك فإن العدد فردي

تستخدم أيضا خرائط التدفق (Flow charts) للتعبير عن الخوارزميات ، حيث توضح تسلسل أوامر الخوارزمية من البداية الى الوصول للناتج في النهاية .


أنواع الخوارزميات :


لدينا العديد من أنواع الخوارميات ، ولعل أشهرها (1) :

1- خوارزمية القوة الغاشمة (Brute Force Algorithm) : ,هي بمثابة أبسط نهج لحل المشكلة  والطريقة الأولى التي يتم اكتشافها عندما نرى مشكلة. لا تعتمد سوى على القوة الحسابية وتجربة الحلول الممكنة بدلًا من اعتمادها على طرق أخرى متقدمة لتحسين كفاءة عمل الخوارزمية.

2- الخوارزمية العودية (Recursive Algorithm): تعتمد هذه الخوارزمية على العودية (التكرار) ، حيث يتم تقسيم المشكلة إلى أجزاء فرعية أصغر ويتم استدعاء نفس الوظيفة (functions) مرارًا وتكرارًا.

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

4- خوارزمية البحث (Searching Algorithm): هي تلك المستخدمة للبحث عن عناصر أو مجموعات من العناصر من هيكل بيانات معين. وتختلف أناوعها وفقا على نهجها أو هياكل  البيانات التي يوجد بها العنصر.

5- خوارزمية الترتيب (Sorting Algorithm): المقصود بالترتيب هو ترتيب مجموعة من البيانات بطريقة معينة وفقًا للمتطلبات. تسمى الخوارزمية التي تساعد في أداء هذه الوظيفة خوارزمية الترتيب، والتي تقوم بترتيب مجموعات البيانات بطريقة متزايدة أو متناقصة.

6- خوارزمية فرق تسد(Divide and Conquer Algorithm) : تقوم هذه الخوارزمية بتقسيم المشكلة إلى مشاكل فرعية ، وتحل المشكلة الفرعية وتدمج الحلول معًا للحصول على الحل النهائي. 

7- خوارزمية البرمجة الديناميكية(Dynamic Programming Algorithm) : تستخدم هذه الخوارزمية مفهوم استخدام الحل الموجود بالفعل لتجنب الحساب المتكرر لنفس الجزء من المشكلة. يقسم المشكلة إلى مشاكل فرعية متداخلة أصغر ويقوم بحلها. يمتاز هذا النوع بأنه يحسن كفاءة الخوارزمية من خلال تخزين النتائج المتوسطة (intermediate results)  و يمر بخمس خطوات للعثور على أفضل حل للمشكلة (3):

يقسم المشكلة إلى مشاكل فرعية لإيجاد الحل الأفضل.

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

يقوم بعملية حفظ و تخزين نتائج المشاكل الفرعية.

يعيد استخدام النتيجة لمنع إعادة حسابها مرة أخري لنفس المشكلات الفرعية.

يحسب ناتج البرنامج كله . 

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


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

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

2- التحليل اللاحق (Posterior Analysis) : يعني التحقق من الخوارزمية بعد تنفيذها، حيث يتم فحص الخوارزمية عن طريق تنفيذها بأي لغة برمجة. من خلال هذا التحليل نحصل على تقرير التحليل الفعلي حول مدي الصحة (بمعني هل لكل المدخلات الممكنة تعطي الخوارزمية نتائج صحيحة؟) ، والمساحة المطلوبة ، والوقت المستهلك وما إلى ذلك (1). 


الخاتمة: 

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


المراجع:

(1) : https://www.geeksforgeeks.org/fundamentals-of-algorithms/

(2) : https://elakademiapost.com/%D8%B3%D9%84%D8%B3%D9%84%D8%A9-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA-%D9%85%D8%A7-%D9%87%D9%8A-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85/

(3) : https://www.simplilearn.com/tutorials/data-structure-tutorial/what-is-an-algorithm