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

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

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

الدرس: حل مشكلة تكوين الفريق بأسلوب القوة المفرطة

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

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

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

نوع المحتوى: example

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

📝 ملخص الصفحة

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

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

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

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

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

نوع: محتوى تعليمي

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

نوع: محتوى تعليمي

def brute_force_solver(problem): worker_skills = problem['worker_skills'] required_skills = problem['required_skills'] worker_ids = list(worker_skills.keys()) # gets the ids of all the workers worker_num = len(worker_ids) # total number of workers all_possible_teams = [] # remembers all possible teams best_team = None # remembers the best (smallest) team found so far #for each possible team size (singles, pairs, triplets, ...) for team_size in range(1, worker_num+1): # creates all possible teams of this size teams = combinations(worker_ids, team_size) for team in teams: # for each team of this size skill_union = set() # union of skills covered by all members of this for worker_id in team: # for each team member # adds their skills to the union skill_union.update(worker_skills[worker_id]) # if all the required skills are included in the union if required_skills.issubset(skill_union): # if this is the first team that covers all required skills # or this team is smaller than the best one or if best_team == None or len(team) < len(best_team): best_team = team # makes this team the best one return best_team # returns the best solution

نوع: محتوى تعليمي

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

نوع: محتوى تعليمي

# uses the brute-force solver to find the best team for the sample problem best_team = brute_force_solver(sample_problem) print(best_team)

نوع: محتوى تعليمي

('w2', 'w3', 'w4')

نوع: METADATA

وزارة التعليم Ministry of Education 2025 - 1447

نوع: METADATA

258

🔍 عناصر مرئية

شعار وزارة التعليم

شعار وزارة التعليم السعودية، يتكون من شكل هندسي أخضر يمثل مجموعة من النقاط المتجمعة، وتحته نص 'وزارة التعليم' باللغة العربية و 'Ministry of Education' باللغة الإنجليزية، بالإضافة إلى السنوات '2025 - 1447'.

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

بعد ذلك، يمكن إنشاء الدالة التالية لحل مشكلة تكوين الفريق بأسلوب القوة المفرطة. وهذه الخوارزمية تأخذ بعين الاعتبار جميع أحجام الفرق الممكنة، وتنشىء الفرق بناءً على الأعداد الممكنة، ثم تحصر الفرق التي تستوفي كل المهارات المطلوبة وتحدد الفريق الأقل عددًا.def brute_force_solver(problem):worker_skills = problem['worker_skills'] required_skills = problem['required_skills']worker_ids = list(worker_skills.keys()) # gets the ids of all the workers worker_num = len(worker_ids) # total number of workers all_possible_teams = [] # remembers all possible teams best_team = None # remembers the best (smallest) team found so far#for each possible team size (singles, pairs, triplets, ...) for team_size in range(1, worker_num+1):# creates all possible teams of this size teams = combinations(worker_ids, team_size) for team in teams: # for each team of this size skill_union = set() # union of skills covered by all members of this for worker_id in team: # for each team member # adds their skills to the union skill_union.update(worker_skills[worker_id])# if all the required skills are included in the union if required_skills.issubset(skill_union):# if this is the first team that covers all required skills # or this team is smaller than the best one or if best_team == None or len(team) < len(best_team): best_team = team # makes this team the best one return best_team # returns the best solutionمن الممكن ألا يكون هناك حل لنسخة المشكلة الواردة. فإذا كانت مجموعة المهارات المطلوبة تشمل مهارة لا يمتلكها أي عامل من العمال المتواجدين، فلن تجد طريقة لإنشاء فريق يغطي كل المهارات، وفي مثل هذه الحالات ستظهر الخوارزمية المذكورة سابقًا النتيجة بعدم وجود حل. يمكنك الآن استخدام المقطع البرمجي التالي لاختبار خوارزمية الحل بالقوة المفرطة وفقًا للمثال الذي تم إنشاؤه سابقًا:# uses the brute-force solver to find the best team for the sample problem best_team = brute_force_solver(sample_problem) print(best_team)('w2', 'w3', 'w4')2025 - 1447--- VISUAL CONTEXT ---Table Structure: Headers: N/A Context: Indicates the official source or publisher of the textbook.

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

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

ما هي وظيفة الدالة `brute_force_solver` في سياق حل مشكلة تكوين الفريق؟

الإجابة: تقوم الدالة `brute_force_solver` بإنشاء جميع الفرق الممكنة بأحجامها المختلفة، ثم تقوم بتصفية الفرق التي تستوفي جميع المهارات المطلوبة، وتحدد في النهاية الفريق الأقل عددًا كحل أمثل.

الشرح: تتبع الخوارزمية أسلوب القوة المفرطة (brute force) حيث تختبر كل الاحتمالات الممكنة لتكوين الفرق، ثم تقارن بينها لاختيار الأنسب.

تلميح: فكر في العملية التي تتبعها الخوارزمية للوصول إلى الحل الأفضل.

ماذا يعني أن تكون مجموعة المهارات المطلوبة تشمل مهارة لا يمتلكها أي عامل؟

الإجابة: يعني أنه لن يكون هناك حل ممكن للمشكلة، ولن تتمكن الخوارزمية من تكوين فريق يلبي جميع المهارات المطلوبة.

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

تلميح: ما هو الاستنتاج المنطقي إذا كانت هناك مهارة أساسية غير متوفرة لدى أي شخص؟

ما هي الميزة الأساسية للنهج المتبع في الدالة `brute_force_solver` عند حل مشكلة تكوين الفريق؟

الإجابة: تعتمد على تجربة جميع التشكيلات الممكنة للفرق، مما يضمن إيجاد الحل الأمثل (أصغر فريق) إذا كان موجودًا.

الشرح: بما أن الخوارزمية تختبر كل الاحتمالات، فإنها لا تفوت أي تشكيلة ممكنة، وبالتالي تضمن العثور على الفريق الأصغر الذي يلبي الشروط.

تلميح: ما هو الضمان الذي تقدمه هذه الطريقة فيما يتعلق بالحل الذي تجده؟

اشرح الخطوات التي تقوم بها الدالة `brute_force_solver` لتحديد الفريق الأقل عددًا.

الإجابة: تبدأ الدالة بتجربة فرق بحجم 1، ثم 2، وهكذا. لكل حجم فريق، تنشئ جميع التركيبات الممكنة. إذا استوفت إحدى هذه التركيبات جميع المهارات المطلوبة، تصبح هي الفريق الأفضل حتى الآن. تستمر العملية حتى يتم العثور على أصغر فريق يحقق الشرط.

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

تلميح: تخيل أنك تبحث عن أصغر مجموعة من الأشخاص لتحقيق هدف ما، كيف ستبدأ بحثك؟