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

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

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

الدرس: تمثيل شجرة باستخدام القاموس في بايثون

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

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

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

نوع المحتوى: تمارين وأسئلة

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

📝 ملخص الصفحة

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

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

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

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

باستخدام القاموس في لغة البايثون اكتب البرنامج المناسب لتمثيل هذه الشجرة، ثم أضف العقدة الأصل والعقد الفرعية. وزارة التعليم Ministry of Education 67 2023 - 1447

✅ حلول أسئلة الكتاب الرسمية

عدد الأسئلة: 1

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

الإجابة: س: باستخدام القاموس في لغة البايثون اكتب البرنامج... يُمثّل القاموس الشجرة بحيث يكون المفتاح = اسم العقدة، والقيمة = قائمة بالعُقد الفرعية (الأبناء). - مثال لتمثيل شجرة (عقدة أصل وأبناء ثم أبناء للأبناء) بصيغة قاموس: - A → [B, C] - - B → [D, E] - - C → [F, G] - - G → [] ، F → [] ، E → [] ، D → [] - - العقدة الأصل: A - العُقد الفرعية للعقدة الأصل: B ، C (ثم تُضاف بقية العُقد الفرعية كما في التمثيل أعلاه).

خطوات الحل:

  1. **الشرح:** لنفهم هذا السؤال. المطلوب هو كتابة برنامج بلغة بايثون يستخدم القاموس (Dictionary) لتمثيل شجرة (Tree). الفكرة هنا هي أن القاموس في بايثون يمكنه تمثيل العلاقات بين العقد في الشجرة، حيث يكون المفتاح (Key) هو اسم العقدة، والقيمة (Value) هي قائمة (List) تحتوي على أسماء العقد الفرعية (الأبناء) المرتبطة بتلك العقدة. لتمثيل شجرة، نبدأ بالعقدة الأصل (الجذر) ونحدد أبناءها، ثم نحدد أبناء كل عقدة فرعية، وهكذا. على سبيل المثال، إذا كانت العقدة الأصل هي 'A' ولها عقدتان فرعيتان هما 'B' و'C'، فإننا نكتب في القاموس: 'A': ['B', 'C']. ثم، إذا كانت العقدة 'B' لها عقدتان فرعيتان هما 'D' و'E'، نكتب: 'B': ['D', 'E']. نستمر بهذه الطريقة حتى نصل إلى العقد التي ليس لها أبناء (العقد الورقية)، حيث نضع لها قائمة فارغة مثل: 'D': []. إذن، لكتابة البرنامج، نقوم بإنشاء قاموس يمثل هذه العلاقات، ثم نضيف العقدة الأصل والعقد الفرعية كما هو موضح في المثال. البرنامج سيكون بسيطاً ويعتمد على تعريف القاموس وتعبئته بالبيانات المناسبة للشجرة المطلوبة.

📝 أسئلة اختبارية

عدد الأسئلة: 1

سؤال 67: باستخدام القاموس في لغة البايثون اكتب البرنامج المناسب لتمثيل هذه الشجرة، ثم أضف العقدة الأصل والعقد الفرعية.

  • أ) tree = {'A': ['B', 'C'], 'B': ['D', 'E'], 'C': ['F', 'G'], 'F': ['H'], 'H': ['I', 'J']}
  • ب) tree = {'A': 'B', 'B': 'D', 'C': 'F', 'F': 'H', 'H': 'I'}
  • ج) tree = [('A', 'B'), ('A', 'C'), ('B', 'D'), ('B', 'E'), ('C', 'F'), ('C', 'G'), ('F', 'H'), ('H', 'I'), ('H', 'J')]
  • د) tree = {'A': {'B': {'D': {}, 'E': {}}, 'C': {'F': {'H': {'I': {}, 'J': {}}}, 'G': {}}}}

الإجابة الصحيحة: tree = { 'A': ['B', 'C'], 'B': ['D', 'E'], 'C': ['F', 'G'], 'F': ['H'], 'H': ['I', 'J'] }

الشرح: يتم تمثيل الشجرة باستخدام قاموس في بايثون حيث تكون المفاتيح هي العقد الأصل والقيم هي قوائم تحتوي على العقد الفرعية. بناءً على المعطيات: A لها فرعان B و C، B لها فرعان D و E، C لها فرعان F و G، F لها فرع H، H لها فرعان I و J.

تلميح: تذكر أن تستخدم قاموساً حيث تكون العقدة الأصل هي المفتاح والعقد الفرعية هي القيمة كقائمة.

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

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

كيف يمكن تمثيل الشجرة باستخدام القاموس في لغة بايثون؟

الإجابة: يمكن تمثيل الشجرة باستخدام القاموس في بايثون عن طريق جعل المفاتيح تمثل العقد (أو العناصر) والقيم تمثل أبناء تلك العقد. يمكن تمثيل الأبناء إما بقائمة من العقد (لتمثيل الأبناء المتعددين) أو بترك القيمة فارغة إذا كانت العقدة ورقية.

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

تلميح: فكر في كيفية ربط كل عقدة بأبنائها في هيكل بيانات يشبه المفتاح والقيمة.

اذكر مثالاً لكيفية تمثيل شجرة بسيطة (عقدة أصل مع عقدتين فرعيتين) باستخدام قاموس بايثون.

الإجابة: لتمثيل شجرة بعقدة أصل 'A' وعقدتين فرعيتين 'B' و 'C'، يمكن استخدام القاموس التالي: `{'A': ['B', 'C'], 'B': [], 'C': []}`. هنا، 'A' هي العقدة الأصل، وقيمتها قائمة بالأبناء ('B', 'C'). 'B' و 'C' هما عقدتان فرعيتان وليس لهما أبناء، لذلك قيمتهما قائمة فارغة.

الشرح: في هذا المثال، 'A' هي العقدة الجذرية. أبناؤها هم 'B' و 'C'. بما أن 'B' و 'C' لا يملكان أبناء، فإن قائمتيهما تكون فارغة، مما يدل على أنهما عقد ورقية.

تلميح: تذكر أن أبناء العقدة الورقية (التي لا تملك أبناء) يتم تمثيلهم بقائمة فارغة.

ماذا لو كانت لدينا شجرة أعمق، حيث العقدة 'B' لديها ابن اسمه 'D'؟ كيف سيتغير تمثيل القاموس؟

الإجابة: إذا كانت العقدة 'B' لديها ابن اسمه 'D'، فسيتغير التمثيل ليصبح: `{'A': ['B', 'C'], 'B': ['D'], 'C': [], 'D': []}`. هنا، تم تحديث قائمة أبناء 'B' لتشمل 'D'، وأضيفت العقدة 'D' كعقدة ورقية بقائمة أبناء فارغة.

الشرح: عند إضافة عقدة جديدة (D) كابن للعقدة B، يتم تحديث قيمة المفتاح 'B' لتصبح قائمة تتضمن 'D'. وبما أن 'D' هي عقدة ورقية في هذا السيناريو، فإن قيمتها كـ 'مفتاح' تكون قائمة فارغة.

تلميح: فكر في إضافة ابن جديد للعقدة 'B' وكيف سيؤثر ذلك على تمثيلها في القاموس.