📚 معلومات الصفحة
الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1
الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم
نوع المحتوى: example
مستوى الصعوبة: متوسط
📝 ملخص الصفحة
تقدم هذه الصفحة مثالاً برمجياً لاختبار دالة تقوم بإنشاء مشكلة توزيع المهارات بين العمال. تبدأ الصفحة بعرض كود برمجي بلغة Python يقوم بإنشاء قائمة عالمية من المهارات (s1, s2, s3، إلخ) ثم ينشئ قاموساً يربط كل عامل بمجموعة مهاراته المختارة عشوائياً.
يتم تحديد عدد المهارات لكل عامل بشكل عشوائي بين 1 والحد الأقصى للمهارات لكل عامل، ثم يتم اختيار المهارات المطلوبة للفريق بشكل عشوائي من القائمة العالمية. الدالة ترجع قاموساً يحتوي على مهارات العمال والمهارات المطلوبة.
يتم بعد ذلك اختبار هذه الدالة بمعطيات محددة: عشر مهارات إجمالية، وستة عمال، وخمس مهارات كحد أقصى لكل عامل. بسبب الطبيعة العشوائية للدالة، يتم الحصول على نسخة مختلفة من المشكلة في كل مرة يتم فيها تشغيل الكود.
يحتوي القسم الأخير على رسم توضيحي (شكل 5.2) يوضح معطيات المشكلة: عشر مهارات إجمالية، وخمس مهارات مطلوبة، وخمس مهارات كحد أقصى لكل عامل، وستة عمال. هذا الرسم يساعد في فهم معطيات الإدخال لمشكلة توزيع المهارات وتغطيتها.
📋 المحتوى المنظم
📖 محتوى تعليمي مفصّل
نوع: محتوى تعليمي
# creates the global list of skills s1, s2, s3, ...
skills = ['s' + str(i) for i in range(1, skill_number+1)]
worker_skills = dict() # dictionary that maps each worker to their set of skills
for i in range(1, worker_number+1): # for each worker
# makes a worker id (w1, w2, w3, ...)
worker_id = 'w' + str(i)
# randomly decides the number of skills that this worker should have (at least 1)
my_skill_number = random.randint(1, max_skills_per_worker)
# samples the decided number of skills
my_skills = set(random.sample(skills, my_skill_number))
# remembers the skill sampled for this worker
worker_skills[worker_id] = my_skills
# randomly samples the set of required skills that the team has to cover
required_skills = set(random.sample(skills, required_skill_number))
# returns the worker and required skills
return {'worker_skills': worker_skills, 'required_skills': required_skills}
نوع: محتوى تعليمي
ستقوم الآن باختبار الدالة الواردة سابقًا من خلال إنشاء نسخة من مشكلة معطياتها كالتالي: عشر مهارات إجمالية، وستة عمال، وتتطلب خمس مهارات كحد أقصى لكل عامل.
شكل 5.2: رسم توضيحي للمثال الخاص بالمشكلة
نوع: FIGURE_REFERENCE
شكل 5.2: رسم توضيحي للمثال الخاص بالمشكلة
نوع: محتوى تعليمي
بسبب الطبيعة العشوائية للدالة، ستحصل على نسخة مختلفة من المشكلة في كل مرة تقوم فيها بتشغيل هذا المقطع البرمجي.
نوع: METADATA
وزارة التعليم
Ministry of Education
2023 - 1447
نوع: METADATA
256
🔍 عناصر مرئية
رسم توضيحي للمثال الخاص بالمشكلة
A diagram illustrating the problem setup for a programming example. It shows three main components: total skills, required skills, and workers.
📄 النص الكامل للصفحة
# creates the global list of skills s1, s2, s3, ...
skills = ['s' + str(i) for i in range(1, skill_number+1)]worker_skills = dict() # dictionary that maps each worker to their set of skills for i in range(1, worker_number+1): # for each worker# makes a worker id (w1, w2, w3, ...)
worker_id = 'w' + str(i)# randomly decides the number of skills that this worker should have (at least 1)
my_skill_number = random.randint(1, max_skills_per_worker)# samples the decided number of skills my_skills = set(random.sample(skills, my_skill_number))# remembers the skill sampled for this worker worker_skills[worker_id] = my_skills# randomly samples the set of required skills that the team has to cover required_skills = set(random.sample(skills, required_skill_number))# returns the worker and required skills return {'worker_skills': worker_skills, 'required_skills': required_skills}ستقوم الآن باختبار الدالة الواردة سابقًا من خلال إنشاء نسخة من مشكلة معطياتها كالتالي: عشر مهارات إجمالية، وستة عمال، وتتطلب خمس مهارات كحد أقصى لكل عامل.--- SECTION: شكل 5.2: رسم توضيحي للمثال الخاص بالمشكلة --- شكل 5.2: رسم توضيحي للمثال الخاص بالمشكلة بسبب الطبيعة العشوائية للدالة، ستحصل على نسخة مختلفة من المشكلة في كل مرة تقوم فيها بتشغيل هذا المقطع البرمجي.2023 - 1447--- VISUAL CONTEXT ---
**DIAGRAM**: رسم توضيحي للمثال الخاص بالمشكلة
Description: A diagram illustrating the problem setup for a programming example. It shows three main components: total skills, required skills, and workers.
Key Values: x10 تحتاج المشكلة إلى عشر مهارات إجمالية, x5 مهارات مطلوبة, x5 بحد أقصى خمس مهارات لكل عامل, x6 عمال
Context: This diagram visually represents the parameters for the problem described in the preceding text and Python code, specifically the total number of skills, the number of required skills, the maximum skills per worker, and the total number of workers. It helps to understand the input parameters for the skill assignment and coverage problem.
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 4 بطاقة لهذه الصفحة
ما هو الهدف الرئيسي من استخدام هيكل بيانات القاموس (dictionary) في البرمجة؟
الإجابة: الهدف الرئيسي هو تخزين البيانات في أزواج (مفتاح، قيمة) مما يتيح الوصول السريع إلى القيم باستخدام مفاتيحها الفريدة.
الشرح: القاموس هو هيكل بيانات يسمح بتخزين العناصر كأزواج، حيث يمثل المفتاح معرفًا فريدًا للعنصر، والقيمة هي البيانات المرتبطة بهذا المفتاح. هذا التنظيم مثالي للبحث السريع عن المعلومات.
تلميح: فكر في طريقة تنظيم البيانات لتسهيل استرجاعها.
في سياق البرمجة، ما هي العلاقة بين "المفتاح" و "القيمة" في هيكل بيانات القاموس؟
الإجابة: المفتاح هو معرف فريد يستخدم للوصول إلى القيمة المرتبطة به داخل القاموس.
الشرح: يشبه المفتاح في القاموس اسم الشخص في دليل الهاتف، حيث يساعدك في العثور على المعلومات المطلوبة (القيمة)، وهي رقم الهاتف في هذا المثال.
تلميح: تخيل أنك تبحث عن شيء في دليل هاتف، ما الذي تستخدمه للعثور على رقم الشخص؟
إذا كان لديك قاموس يمثل معلومات الطلاب، ماذا يمكن أن يكون "المفتاح" وماذا يمكن أن تكون "القيمة"؟
الإجابة: يمكن أن يكون "المفتاح" هو رقم هوية الطالب (لأنه فريد)، ويمكن أن تكون "القيمة" هي بيانات الطالب الكاملة (الاسم، الدرجات، إلخ).
الشرح: رقم الهوية للطالب يعتبر مفتاحاً ممتازاً لأنه يميز كل طالب بشكل فردي. القيمة المرتبطة به ستكون جميع التفاصيل الأخرى المتعلقة بهذا الطالب.
تلميح: فكر في معلومة واحدة تميز كل طالب عن الآخر بشكل فريد.
ما هي الميزة الأساسية لاستخدام القواميس مقارنة بقوائم البيانات العادية (lists) في بعض الحالات؟
الإجابة: تسمح القواميس بالوصول المباشر إلى العناصر باستخدام مفاتيحها، مما يجعل عملية البحث عن قيمة معينة أسرع بكثير مقارنة بالبحث الخطي في القوائم.
الشرح: البحث في قائمة يتطلب أحياناً المرور على جميع العناصر حتى تجد العنصر المطلوب. أما في القاموس، فيمكن الوصول مباشرة إلى القيمة بمجرد معرفة مفتاحها، مما يعطيه ميزة سرعة.
تلميح: قارن بين كيفية البحث عن عنصر محدد في قائمة منظمة وكيفية البحث عنه في هيكل بيانات يعتمد على "أسماء" أو "عناوين".