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

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

آلية عمل الخوارزمية
- تحديد المشكلة الكلية.
- تحديد معيار الاختيار (ما هو 'الأفضل' حاليًا؟).
- اختيار أفضل عنصر متاح بناءً على المعيار.
- إضافة العنصر للحل النهائي.
- تكرار الخطوات حتى انتهاء عناصر المشكلة.
مثال: اختيار الأنشطة (Activity Selection)
المشكلة:
لدينا مجموعة من الأنشطة، كل نشاط له وقت بداية ونهاية. الهدف هو اختيار أكبر عدد ممكن من الأنشطة التي لا تتداخل زمنيًا.
الفكرة الجشعة (Greedy Strategy):
نختار دائمًا النشاط الذي ينتهي أولًا، لأنه يترك أكبر مساحة زمنية للأنشطة التالية.
الكود البرمجي (Python)
شرح الكود خطوة بخطوة
- قمنا أولًا بترتيب الأنشطة حسب وقت النهاية (تصاعديًا).
- اخترنا أول نشاط ينتهي بسرعة لضمان توفير وقت.
- في كل خطوة نتحقق: هل يبدأ النشاط بعد انتهاء النشاط السابق؟
- القرار الجشع: (نعم ← نختاره) | (لا ← نتجاهله).
مثال واقعي: قاعة الاجتماعات
تخيل أنك مسؤول عن قاعة اجتماعات ولديك طلبات كثيرة.
هدفك: حجز أكبر عدد من الاجتماعات في اليوم.
الحل:
تحجز الاجتماع الذي ينتهي مبكرًا جدًا، لتترك المجال للاجتماع الذي يليه مباشرة. هذا هو جوهر الـ Greedy Algorithm.

تطبيقات يومية أخرى
متى يجب استخدام Greedy؟
نستخدم هذه الخوارزمية عندما:
1. تكون المشكلة تتطلب سرعة كبيرة في الحل.
2. عندما يضمن القرار المحلي الوصول لحل صحيح (مثل مشكلة العملات في بعض الأنظمة).
3. عندما لا يكون الحل الأمثل بنسبة 100% ضروريًا مقارنةً بتكلفة الوقت.
4. عندما لا تكون المشكلة شديدة التعقيد وتحمل تفرعات كثيرة.
الخلاصة
خوارزميات Greedy تعتمد على اتخاذ القرار الأفضل في كل خطوة. هي سريعة وبسيطة وفعالة في كثير من المشاكل الواقعية، لكنها قد لا تكون الحل الأمثل لجميع المشاكل.
Greedy Algorithms
(الخوارزميات الجشعة)
إعداد الطالب: أصيل عايش
إشراف: المهندس الوليد الدعيس