أمثلة على أشهر الخوارزميات

فيما يلي أشهر 6 أنواع للخورازميات وأمثلة عليها:[١]


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

تعد الخوارزمية العودية (Recursive Algorithm) واحدة من أهم أنواع الخوارزيات تلي تتميز عن غيرها كونها تعتمد أسلوب التكرار حتى تصل لحل أمثل للمشكلة، وأنها تفرض على نفسها مدخلات ذات قيم صغيرة التي هي أصلاً مخرجات للمدخلات السابقة، وفيما يلي مثال على الخوارزمية العودية:[١]


المشكلة: إيجاد حل لكل من المشكلات للرسم البياني كالبرج هانوي أو مشكلة DFS.[١]

الحل عن طريق إنشاء خوارزمية عودية: يجب كتابة خوارزمية لإيجاد العامل (Y):

  • Fact (y) (تعريف للمدخل y)
  • If y is 0 (يكون المدخل يساوي العامل المطلوب بحال كانت قيمة المدخل y تساوي 0)
  • return 1 (بحال عدم تحقق الشرط السابق أي أن y لا تساوي 0 يجب تكرار الخوارزمية مرة أخرى)
  • return (y*Fact (y-1) (بحال كانت قيمة المدخل y في الشرط السابق تساوي 0 فعندها ستتوقف الخوارزمية عن التكرار لأنها توصلت للحل.)


خوارزمية فرق تسد

تستخدم خوارزمية فرق تسد (Divide and Conquer Algorithm) لحل العديد من المشكلات التي يمكن تجزئتها لمشاكل صغيرة فرعية وحل كل مشكلة منها وبالنهاية دمج جميع هذه الحلول للوصول لحل المشكلة الرئيسية، فيما يلي مثال على حل مشكلة باستخدام خوارزمية فرق تسد:[١]


المشكلة: إيجاد النقطة التي تنصف المصفوفة [ar]، وتقسمها إلى نصفين.

الحل: تقسيم المصفوفة ar إلى قسمين l و r.

  • MergeSorting (ar [], l, r) (تعريف بالمصوفات، الرئيسية والفرعية)
  • If r> l إذا تحقق شرط أن المصفوفة r أكبر من المصفوفة l، تقوم الخوارزمية بحساب نقطة المنتصف m التي تنصف المصفوفة.
  • middle m = (l+r) /2 معادلة التي يتم من خلالها حساب نقطة المنتصف.


 خوارزمية البرمجة الديناميكية

يقوم مبدأ عمل خوارزمية البرمجة الديناميكية (Dynamic Programming Algorithm) على استخدام نتائج العمليات السابقة كمدخلات جديدة، وذلك لتقسيم المشكلة الرئيسية لعدة مشاكل فرعية وحل كل منها على حدا ومن ثم تخزين تلك النتائج لاستخدامها مرة أخرى كمدخلات عند الحاجة إليها في المستقبل، ويعد تسلسل فيبوناتشي أحد الأمثلة على هذا النوع من الخوارزميات، وفيما يلي مثال على كود لتسلسل فيبوناتشي:[١]


فيبوناتشي (N) = 0 (لـ n = 0)

= 0 (لـ n = 1)

= فيبوناتشي (N-1) + Finacchi (N-2) (لـ n> 1)


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

تستخدم خوارزمية الجشع (Greedy Algorithm) عادةً لحل المشاكل المتعلقة بالتحسين، والجدير بالذكر أن هذا النوع من الخوارزميات يعطى حلاً فقط للوقت الحالي، وليس للمستقبل، أي لا يمكن تعميمه على جميع الحالات فهو خاص فقط بحال واحد، وتتكون خوازمية الجشع من 5 مكونات، المكون الأول هو مجموعة تحتوي على خيارات عديدة للحلوم الممكنة، المكون الثاني هو، كود مختص باختيار أنسب حل من مجموعة الحل، والمكون الثالث هو، كود يعمل على تحديد إن كان هذا الحل المختار يمكن أن يكون هو فعلاً الحل الصحيح، المكون الرابع، دالة تقوم بإيجاد قيمة للحل المختار مسبقاً، وأخيراً المكون الخامس الذي وهو عبارة عن كود يوضح متى تم إيجاد الحل للمشكلة، ومن الأمثلة الشهيرة على هذا النوع: (Huffman Coding) و(Dijkstra).[١]


خوارزمية القوة الغاشمة

تعد خوارزمية القوة الغاشمة (Brute Force Algorithm) هي من أبسط أنواع الخوارزميات التي يعتمد مبدأها على العشوائية في اختيار الحل وتجربته إن كان حلاً صحيحاً لمشكلة ما أم لا، ومن الأمثلة على استخدام هذا النوع من الخوارزميات، إنشاء خوارزمية لإيجاد الرقم السري للخزنة، وفي هذه الحالة سيتم اختيار جميع الأرقام كحلول ممكنة وبشكل عشوائي.[١]


ما معنى الخوارزميات؟

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


ما الفرق بين البرنامج والخوارزمية؟

هناك فرق بين البرنامج والخوارزمية، من حيث النظرية الاحتسابية، فالخوارزمية تحقق جميع الشروط التالية: (مدخلات، مخرجات، الوضوح، المحلولية، المحدودية) ويمكن وصف الخوارزمية بعدة عبارات كلغة الخوارزمية، والمخططات الانسيابية، أما البرنامج فلا يحقق الشرط (وضوح)، ويوصَف البرنامج بلغة الحاسوب، ومن هنا فإن البرنامج=خوارزمية+هيكل بياني يبين أسلوب لتنظيم البيانات.[٤]


من هو مخترع الخوارزميات؟

وأول من ابتكر مفهوم الخوارزميات هو العالم الرياضي المسلم الشهير محمد بن موسى الخوارزمي، عاش الخوارزمي في مدينة بغداد بين عامي 780-847م، وكان ذلك في عهد الخليفة المأمون، وقد برز في الرياضيات والفلك، ومن أهم إنجازاته الرياضية وضعه لمبادئ علم الجبر، وتأليف كتابه الشهير الجبر والمقابلة، ومنه أُخذت كلمة الجبر لتترجم إلى جميع لغات العالم، كما قدم كتاباً آخر في الحساب، نقل إلى اللغة اللاتينية بعنوان (Algoritmi de nemero lndriun).[٢]


المراجع

  1. ^ أ ب ت ث ج ح خ "types-of-algorithms", educba., Retrieved 24/1/2022. Edited.
  2. ^ أ ب علي سليمان، مبادئ الخوارزميات، صفحة 73-78. بتصرّف.
  3. "bbc", bbc, Retrieved 22/1/2022. Edited.
  4. "library/", utub, Retrieved 22/1/2022. Edited.