خوارزمية الحل الجشعة الاستدلالية - كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: خوارزمية الحل الاستدلالية الجشعة Greedy Heuristic Solver

📚 معلومات الصفحة

الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: درس تعليمي

مستوى الصعوبة: متوسط

📝 ملخص الصفحة

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

يتم توضيح تطبيق الخوارزمية عبر دالة `greedy_solver` في لغة بايثون، التي تقبل معاملين: نسخة المشكلة ودالة الاستدلال. تتيح هذه المرونة للمستخدم تطبيق أي دالة استدلال يختارها، مثل `deadline_heuristic` التي تُرجع الموعد النهائي لمهمة معينة.

يشرح النص استخدام `lambda` مع دالة `sorted` لفرز قائمة المهام بناءً على قيمة مُحسَنة، مما يبسط عملية الجدولة. يُظهر المثال أن الخوارزمية الجشعة يمكن أن تنتج نفس نوع المخرجات كخوارزميات أكثر تعقيدًا، مثل حل القوة المفرطة، مع كونها أكثر كفاءة في بعض الحالات.

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

📋 المحتوى المنظم

📖 محتوى تعليمي مفصّل

خوارزمية الحل الاستدلالية الجشعة 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` قياسها لتحديد ترتيب المهام؟