دالة المقارنة ()Compare Function - كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 - المملكة العربية السعودية

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

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

الدرس: دالة المقارنة ()Compare Function

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

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

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

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

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

📝 ملخص الصفحة

تقدم هذه الصفحة شرحًا لدالة المقارنة ()Compare Function المستخدمة في تحليل الخوارزميات لحل المشكلات. تُستخدم هذه الدالة لتقييم أداء خوارزميات حل مختلفة على مجموعات بيانات محددة، حيث تقوم بحساب متوسط التباطؤ الذي تحققه كل خوارزمية عبر جميع المشكلات في مجموعة البيانات. تتضمن الدالة معاملًا منطقيًا `use_brute` للتحكم في إمكانية استخدام خوارزمية الحل بالقوة المفرطة.

يتم عرض مثال برمجي بلغة Python يوضح كيفية تنفيذ دالة المقارنة، حيث تستخدم مكتبات مثل `collections.defaultdict` و `numpy` لتجميع النتائج وحساب المتوسطات. يتضمن الكود استدعاءات لخوارزميات متنوعة مثل `brute_force_solver` و `greedy_solver` و `local_search_solver` مع هيورستيك مختلفة.

تظهر الصفحة أيضًا مخرجات عملية لدالة المقارنة عند تطبيقها على مجموعتي بيانات: `problems_7` و `problems_30`. تُعرض النتائج كمتوسطات تباطؤ لكل خوارزمية، مما يسمح بمقارنة أدائها بشكل مباشر. على سبيل المثال، في مجموعة `problems_7` مع `use_brute=True`، تظهر قيم مثل 211.49 لخوارزمية brute-force و 308.14 لخوارزمية greedy-deadline.

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

📄 النص الكامل للصفحة

--- SECTION: دالة المقارنة ()Compare Function --- دالة المقارنة ()Compare Functionتستخدم الدالة التالية ()Compare كل خوارزميات الحل؛ لحل كل المشكلات في مجموعة بيانات معينة، ثم تظهر متوسط التباطؤ الذي تحققه كل خوارزمية حل على كل المشكلات في مجموعة البيانات، وتقبل الدالة كذلك المعامل المنطقي use_brute لتحديد إمكانية استخدام خوارزمية الحل بالقوة المفرطة أم لا.يمكن الآن استخدام دالة ()compare مع مجموعتي البيانات problems_7 و problems_30 كلتيهما:--- SECTION: Python Code Example --- from collections import defaultdict import numpy def compare(problems, use_brute): # comparison on Dataset 1 # maps each solver to a list of all tardiness values it achieves for the problems in the given dataset results = defaultdict(list) for problem in problems: # for each problem in this dataset#uses each of the solvers on this problem if use_brute == True: results['brute-force'].append(brute_force_solver(problem)['tardiness']) results['greedy-deadline'].append(greedy_solver(problem,deadline_heuristic)['tardiness']) results['greedy-weighted_deadline'].append(greedy_solver(problem,weighted_deadline_heuristic)['tardiness']) results['ls-random-deadline'].append(local_search_solver(problem, deadline_heuristic, random_swap, 1000)['tardiness']) results['ls-random-wdeadline'].append(local_search_solver(problem, weighted_deadline_heuristic, random_swap, 1000)['tardiness']) results['ls-adjacent-wdeadline'].append(local_search_solver(problem, weighted_deadline_heuristic, adjacent_swap, 1000)['tardiness']) results['ls-adjacent-deadline'].append(local_search_solver(problem, deadline_heuristic, adjacent_swap, 1000)['tardiness'])for solver in results: # for each solver # prints the solver's mean tardiness values print(solver, numpy.mean(results[solver]))--- SECTION: Output for problems_7, True --- compare(problems_7, True)brute-force 211.49 greedy-deadline 308.14 greedy-weighted_deadline 255.61 ls-random-wdeadline 212.35 ls-random-deadline 212.43 ls-adjacent-wdeadline 220.62 ls-adjacent-deadline 224.36--- SECTION: Output for problems_30, False --- compare(problems_30, False)greedy-deadline 10126.18 greedy-weighted_deadline 8527.61 ls-random-wdeadline 6647.73 ls-random-deadline 6650.99 ls-adjacent-wdeadline 6666.47 ls-adjacent-deadline 6664.672025 - 1447

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 5 بطاقة لهذه الصفحة

ما هو الغرض الأساسي من دالة ()compare؟

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

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

تلميح: ما هي النتيجة النهائية التي تسعى الدالة للحصول عليها من مقارنة الخوارزميات؟

ما هو دور المعامل المنطقي use_brute في دالة ()compare؟

الإجابة: يحدد ما إذا كان سيتم تضمين خوارزمية الحل بالقوة المفرطة (brute-force) ضمن المقارنة أم لا.

الشرح: عند تعيين use_brute إلى True، يتم استدعاء brute_force_solver وتضمين نتائجها في المقارنة. عند تعيينه إلى False، يتم استبعادها، مما يسمح بمقارنة الخوارزميات الأخرى فقط.

تلميح: فكر في الاسم نفسه للمعامل. ما هي العملية التي يشير إليها؟

اذكر اثنتين من خوارزميات الحل التي تم استخدامها في دالة ()compare عند use_brute == True.

الإجابة: برنامج brute-force، برنامج greedy-deadline، برنامج greedy-weighted_deadline، برنامج ls-random-deadline، برنامج ls-random-wdeadline، برنامج ls-adjacent-deadline، برنامج ls-adjacent-wdeadline.

الشرح: تستدعي دالة ()compare مجموعة متنوعة من الخوارزميات، بما في ذلك استراتيجيات القوة المفرطة، والخوارزميات الجشعة (greedy) التي تعتمد على المواعيد النهائية أو الأوزان، وخوارزميات البحث المحلي (local search) بأنواع مختلفة من التبادلات (random و adjacent) مع أو بدون أوزان.

تلميح: ابحث في قسم الكود عن الاستدعاءات التي تتم داخل حلقة if use_brute == True:

ماذا تمثل القيم العددية الظاهرة في قسم 'Output for problems_7, True'؟

الإجابة: تمثل متوسط قيم التباطؤ (tardiness) التي حققتها كل خوارزمية حل على مجموعة البيانات problems_7 عندما تم تفعيل استخدام خوارزمية القوة المفرطة (use_brute = True).

الشرح: كل سطر في مخرجات المقارنة يوضح مدى كفاءة خوارزمية معينة. الرقم المنخفض يشير إلى أداء أفضل (تباطؤ أقل). على سبيل المثال، 211.49 لـ brute-force يعني أن متوسط التباطؤ لهذه الخوارزمية على تلك المجموعة من المشكلات كان 211.49.

تلميح: لاحظ كيف ترتبط هذه الأرقام بأسماء الخوارزميات المدرجة في قسم الكود.

بمقارنة مخرجات problems_7 (مع brute-force) و problems_30 (بدون brute-force)، ما هو الاستنتاج العام حول أداء خوارزميات البحث المحلي (ls-) مقارنة بالخوارزميات الجشعة (greedy)؟

الإجابة: في كلتا الحالتين، أظهرت خوارزميات البحث المحلي (ls-random-wdeadline, ls-random-deadline, ls-adjacent-wdeadline, ls-adjacent-deadline) أداءً أفضل (متوسط تباطؤ أقل) من الخوارزميات الجشعة (greedy-deadline, greedy-weighted_deadline).

الشرح: تُظهر البيانات أن استراتيجيات البحث المحلي، حتى مع قيود (مثل استخدام 1000 تكرار)، تميل إلى إيجاد حلول أفضل (تباطؤ أقل) مقارنة بالخوارزميات الجشعة البسيطة، بغض النظر عما إذا كانت خوارزمية القوة المفرطة مستخدمة أم لا.

تلميح: قارن القيم الرقمية المقابلة للخوارزميات التي تبدأ بـ 'ls-' مع تلك التي تبدأ بـ 'greedy' في كلتا المجموعتين من المخرجات.