📋 المحتوى المنظم
📖 محتوى تعليمي مفصّل
خوارزمية الحل الاستدلالية الجشعة Greedy Heuristic Solver
نوع: محتوى تعليمي
خوارزمية الحل الاستدلالية الجشعة Greedy Heuristic Solver
نوع: محتوى تعليمي
تستخدم خوارزمية الحل الجشعة أسلوبًا استدلاليًا بسيطًا لفرز المهام واتخاذ قرار الترتيب الذي يجب جدولتها وفقًا له. ثم تُرتّب المهام لحساب زمن إكمال كل مهمة ومجموع التباطؤ الموزون لكامل الجدول. وفي هذا المثال الخاص تظهر خوارزمية الحل الجشعة نوع المخرجات نفسه الذي أظهرته خوارزمية حل القوة المفرطة.
تقبل خوارزمية الحل الجشعة معاملان هما: نسخة المشكلة المراد حلها، ودالة الاستدلال التي ستُستخدم (معيار فرز المهام). مما يسمح للمستخدم بأن يُطبق أي دالة استدلال يختارها كدالة البايثون، ثم يمررها إلى خوارزمية الحل الجشعة باعتباره معاملًا.
تطبيق الدالة التالية خوارزمية تحسين تستخدم دالة استدلالية جشعة لحل المشكلة:
نوع: محتوى تعليمي
تطبيق الدالة التالية خوارزمية تحسين تستخدم دالة استدلالية جشعة لحل المشكلة:
greedy_solver function
نوع: محتوى تعليمي
def greedy_solver(problem, heuristic):
# gets the information for this problem
durations, weights, deadlines = problem['durations'], problem['weights'], \
problem['deadlines']
job_num = len(durations)# gets the number of jobs
# Creates a list of job indices sorted by their deadline in non-decreasing order
schedule = sorted(range(job_num), key = lambda j: heuristic(j, problem))
# evaluates the schedule
tardiness, finish_times = compute_schedule_tardiness(problem, schedule)
# returns the results as a dictionary
return {'schedule': schedule,
'tardiness': tardiness,
'finish_times': finish_times}
شرح استخدام lambda مع sorted
نوع: محتوى تعليمي
يُستخدم بناء الجملة lambda مع دالة البايثون ()sorted عندما يتمثل الهدف في فرز قائمة عناصر بناءً على قيمة يتم حسابها بطريقة منفصلة لكل عنصر.
شرح دالة الاستدلال الجشعة
نوع: محتوى تعليمي
يُستخدم في هذا المثال دالة استدلالية جشعة لتحديد المهمة التالية التي تحتاج إلى جدولة وهي المهمة التي لها أقرب موعد نهائي.
تظهر الدالة التالية الموعد النهائي لمهمة محددة في نسخة مشكلة معطاة:
نوع: محتوى تعليمي
تظهر الدالة التالية الموعد النهائي لمهمة محددة في نسخة مشكلة معطاة:
deadline_heuristic function
نوع: محتوى تعليمي
# returns the deadline of a given job
def deadline_heuristic(job,problem):
# accesses the deadlines for this problem and returns the deadline for the job
return problem['deadlines'][job]
نوع: محتوى تعليمي
تمرير دالة deadline_heuristic كمعامل إلى خوارزمية الحل الجشعة (greedy_solver) يعني أن الخوارزمية ستُجدول (تفرز) المهام وفق ترتيب تصاعدي حسب الموعد النهائي، مما يعني أن المهام التي لها أقرب موعد نهائي ستُجدول أولاً.
نوع: METADATA
وزارة التعليم
273
2025 - 1447
📄 النص الكامل للصفحة
خوارزمية الحل الاستدلالية الجشعة Greedy Heuristic Solverتستخدم خوارزمية الحل الجشعة أسلوبًا استدلاليًا بسيطًا لفرز المهام واتخاذ قرار الترتيب الذي يجب جدولتها وفقًا له. ثم تُرتّب المهام لحساب زمن إكمال كل مهمة ومجموع التباطؤ الموزون لكامل الجدول. وفي هذا المثال الخاص تظهر خوارزمية الحل الجشعة نوع المخرجات نفسه الذي أظهرته خوارزمية حل القوة المفرطة.
تقبل خوارزمية الحل الجشعة معاملان هما: نسخة المشكلة المراد حلها، ودالة الاستدلال التي ستُستخدم (معيار فرز المهام). مما يسمح للمستخدم بأن يُطبق أي دالة استدلال يختارها كدالة البايثون، ثم يمررها إلى خوارزمية الحل الجشعة باعتباره معاملًا.--- SECTION: تطبيق الدالة التالية خوارزمية تحسين تستخدم دالة استدلالية جشعة لحل المشكلة: --- تطبيق الدالة التالية خوارزمية تحسين تستخدم دالة استدلالية جشعة لحل المشكلة:--- SECTION: greedy_solver function ---
def greedy_solver(problem, heuristic):# gets the information for this problem durations, weights, deadlines = problem['durations'], problem['weights'], \
problem['deadlines']job_num = len(durations)# gets the number of jobs# Creates a list of job indices sorted by their deadline in non-decreasing order schedule = sorted(range(job_num), key = lambda j: heuristic(j, problem))# evaluates the schedule tardiness, finish_times = compute_schedule_tardiness(problem, schedule)# returns the results as a dictionary return {'schedule': schedule,
'tardiness': tardiness,
'finish_times': finish_times}--- SECTION: شرح استخدام lambda مع sorted --- يُستخدم بناء الجملة lambda مع دالة البايثون ()sorted عندما يتمثل الهدف في فرز قائمة عناصر بناءً على قيمة يتم حسابها بطريقة منفصلة لكل عنصر.--- SECTION: شرح دالة الاستدلال الجشعة --- يُستخدم في هذا المثال دالة استدلالية جشعة لتحديد المهمة التالية التي تحتاج إلى جدولة وهي المهمة التي لها أقرب موعد نهائي.--- SECTION: تظهر الدالة التالية الموعد النهائي لمهمة محددة في نسخة مشكلة معطاة: --- تظهر الدالة التالية الموعد النهائي لمهمة محددة في نسخة مشكلة معطاة:--- SECTION: deadline_heuristic function ---
# returns the deadline of a given job def deadline_heuristic(job,problem):# accesses the deadlines for this problem and returns the deadline for the job return problem['deadlines'][job]تمرير دالة deadline_heuristic كمعامل إلى خوارزمية الحل الجشعة (greedy_solver) يعني أن الخوارزمية ستُجدول (تفرز) المهام وفق ترتيب تصاعدي حسب الموعد النهائي، مما يعني أن المهام التي لها أقرب موعد نهائي ستُجدول أولاً.2025 - 1447
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 5 بطاقة لهذه الصفحة
ما هي الآلية الأساسية التي تعتمد عليها خوارزمية الحل الاستدلالية الجشعة (Greedy Heuristic Solver) في اتخاذ قرارات الجدول الزمني؟
الإجابة: تعتمد خوارزمية الحل الجشعة على أسلوب استدلالي بسيط لفرز المهام واتخاذ قرار ترتيب جدولتها بناءً على معيار محدد، مما يساعد في حساب زمن إكمال كل مهمة ومجموع التباطؤ الموزون.
الشرح: تركز الخوارزمية الجشعة على اتخاذ القرار الأمثل في كل خطوة بشكل مستقل، وهنا يتم ذلك عبر فرز المهام بناءً على دالة استدلال معينة.
تلميح: فكر في العملية التي تستخدمها الخوارزمية لتحديد أي مهمة تأتي أولاً.
ما هما المعاملان اللذان تقبلهما خوارزمية الحل الجشعة (Greedy Heuristic Solver)؟
الإجابة: تقبل خوارزمية الحل الجشعة معاملين أساسيين: نسخة المشكلة المراد حلها، ودالة الاستدلال (المعيار المستخدم لفرز المهام).
الشرح: المعامل الأول يحدد البيانات التي ستعمل عليها الخوارزمية، والمعامل الثاني يحدد طريقة اتخاذ القرار أثناء عملية الفرز.
تلميح: ما هي المعلومات التي تحتاجها الخوارزمية لكي تبدأ عملها، وما هو الجزء الذي يسمح بتخصيص سلوكها؟
كيف يمكن تطبيق دالة استدلالية مخصصة مع خوارزمية الحل الجشعة في لغة بايثون؟
الإجابة: يمكن للمستخدم تطبيق أي دالة استدلال يختارها كدالة بايثون، ثم تمريرها كمعامل (argument) إلى خوارزمية الحل الجشعة (greedy_solver).
الشرح: هذا يسمح بمرونة عالية حيث يمكن للمستخدم اختيار معيار الفرز الذي يناسب طبيعة المشكلة بدلاً من الاعتماد على معيار ثابت.
تلميح: ابحث عن الآلية التي تسمح بتمرير منطق مخصص إلى دالة موجودة.
ما هو الغرض من استخدام بناء الجملة `lambda` مع الدالة `sorted` في بايثون؟
الإجابة: يُستخدم بناء الجملة `lambda` مع `sorted` عندما يكون الهدف هو فرز قائمة عناصر بناءً على قيمة يتم حسابها بشكل منفصل لكل عنصر، مما يوفر طريقة موجزة لتعريف دالة صغيرة بدون اسم.
الشرح: `lambda` تنشئ دالة مجهولة يمكن استخدامها مباشرة في `sorted` لتحديد القيمة التي بناءً عليها سيتم ترتيب العناصر، وهذا مفيد لتحديد معيار الفرز.
تلميح: فكر في الحاجة إلى تحديد 'مفتاح' للفرز بطريقة سريعة ومباشرة.
في مثال `deadline_heuristic`، ما هو المعيار الذي يتم استخدامه لجدولة المهام؟
الإجابة: يتم استخدام الموعد النهائي (deadline) لكل مهمة كمعيار لجدولة المهام. الخوارزمية تُرتّب المهام بترتيب تصاعدي حسب أقرب موعد نهائي، مما يعني أن المهام ذات المواعيد النهائية الأقرب تُجدول أولاً.
الشرح: اختيار الموعد النهائي كمعيار يعكس استراتيجية لتقليل احتمالية التأخير في إنجاز المهام ذات الأولوية العالية (ذات المواعيد النهائية القريبة).
تلميح: ما هي الخاصية التي تحاول دالة `deadline_heuristic` قياسها لتحديد ترتيب المهام؟