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

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

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

الدرس: هيكل بيانات الشجرة في لغة البايثون

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

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

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

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

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

📝 ملخص الصفحة

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

في المثال الأول، يتم إنشاء شجرة بسيطة باستخدام قاموس حيث تمثل المفاتيح عُقد الشجرة، والقيم هي قوائم تحتوي على العُقد المتصلة مباشرة. يُظهر الكود شجرة ذات عقدة جذر 'a' متصلة بـ 'b' و'c'، مع تفاصيل الاتصالات الأخرى حتى العُقد الورقية.

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

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

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

--- SECTION: هيكل بيانات الشجرة في لغة البايثون --- هيكل بيانات الشجرة في لغة البايثون Tree Data Structure in Pythonلا توفر لغة البايثون نوعًا محددًا مسبقًا من البيانات لهيكل بيانات الشجرة. ومع ذلك، تُصمم الأشجار من القوائم والقواميس بسهولة. يوضح الشكل 1.38 تطبيقًا بسيطًا للشجرة باستخدام القاموس.في هذا المثال، ستُنشأ شجرة باستخدام قاموس البايثون. ستتمثل عُقد الشجرة مفاتيح القاموس، وستكون القيمة المقابلة لكل مفتاح هي قائمة تحتوي على العُقد المتصلة بحافة مباشرة من هذه العُقدة.myTree = { "a": ["b", "c"], # node "b": ["d", "e"], "c": [None, "f"], "d": [None, None], "e": [None, None], "f": [None, None], } print(myTree){'a': ['b', 'c'], 'b': ['d', 'e'], 'c': [None, 'f'], 'd': [None, None], 'e': [None, None], 'f': [None, None]}في المثال التالي ستُنشأ شجرة مثل تلك الموضحة في الشكل 1.39:myTree = {"Data Structures":["Linear", "Non-linear"], "Linear":["Stack", "Queue", "Linked List"], "Non-linear":["Tree", "Graph"]}for parent in myTree: print(parent, "has", len(myTree[parent]), "nodes" ) for children in myTree[parent]: print(" ", children)Data structures has 2 nodes Linear Non-linear Linear has 3 nodes Stack Queue Linked List Non-linear has 2 nodes Tree Graph2023 - 1447--- VISUAL CONTEXT --- **DIAGRAM**: شكل 1.38: شجرة قاموس البايثون Description: A hierarchical tree diagram representing a Python dictionary. Node 'a' is the root, connected to 'b' and 'c'. Node 'b' is connected to 'd' and 'e'. Node 'c' is connected to 'f'. Nodes 'd', 'e', and 'f' are leaf nodes. Table Structure: Headers: N/A Rows: Data: Nodes are labeled 'a', 'b', 'c', 'd', 'e', 'f'. Edges represent parent-child relationships. Key Values: a, b, c, d, e, f Context: Illustrates a simple tree data structure and its conceptual representation, which is then implemented using a Python dictionary in the accompanying code example.**DIAGRAM**: شكل 1.39: شجرة هياكل البيانات Description: A hierarchical diagram classifying data structures. The top node is 'Data Structures'. It branches into two main categories: 'Linear' and 'Non-linear'. The 'Linear' category further branches into 'Stack', 'Queue', and 'Linked List'. The 'Non-linear' category further branches into 'Tree' and 'Graph'. The diagram also has labels 'الأصل' (Parent) and 'الفرع' (Branch) pointing to the top and bottom parts of the hierarchy respectively. Table Structure: Headers: N/A Rows: Data: The diagram shows a classification tree of data structures. 'Data Structures' is the root. 'Linear' and 'Non-linear' are its children. 'Stack', 'Queue', 'Linked List' are children of 'Linear'. 'Tree' and 'Graph' are children of 'Non-linear'. Key Values: Data Structures, Linear, Non-linear, Stack, Queue, Linked List, Tree, Graph, الأصل, الفرع Context: Provides a conceptual overview of different data structures and their classification, highlighting where 'Tree' and 'Graph' structures fit within the broader context of non-linear data structures.

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

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

كيف يمكن تمثيل هيكل بيانات الشجرة في لغة البايثون، نظرًا لعدم وجود نوع بيانات مخصص له؟

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

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

تلميح: فكر في كيفية تنظيم البيانات في مجموعات مرتبطة ببعضها البعض في البايثون.

في تمثيل الشجرة باستخدام قاموس البايثون، ماذا تمثل مفاتيح القاموس وماذا تمثل القيم المقابلة لها؟

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

الشرح: هذا التمثيل يسمح بتحديد العلاقة بين العُقدة الأب والعُقد الأبناء بوضوح. المفتاح هو العُقدة الأب، والقائمة هي أبناؤها.

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

ماذا تمثل قيمة `None` في قائمة أبناء العُقدة عند تمثيل الشجرة باستخدام قاموس البايثون؟

الإجابة: تمثل قيمة `None` عدم وجود ابن في ذلك الموضع المحدد. في حالة وجود ابن واحد، قد تظهر `None` قبل الابن الوحيد أو بعده، مشيرة إلى فراغ في أحد الاتجاهات.

الشرح: في تمثيل الأشجار، خاصة عندما يكون هناك ترتيب معين للأبناء (مثل الشجرة الثنائية)، يُستخدم `None` للإشارة إلى غياب ابن في ذلك الموضع.

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

بناءً على المثال الثاني (شكل 1.39)، ما هي العُقدة الجذرية التي تمثل بداية التصنيف؟

الإجابة: العُقدة الجذرية هي 'Data Structures'.

الشرح: في أي شجرة، تمثل العُقدة الجذرية أعلى مستوى في التسلسل الهرمي وأصل جميع العُقد الأخرى.

تلميح: ابحث عن العُقدة التي لا يوجد لها عُقدة أب فوقها وهي نقطة البداية في التصنيف الهرمي.

كيف يمكن تصميم هياكل بيانات الشجرة في لغة البايثون على الرغم من عدم وجود نوع بيانات شجرة مُعرّف مسبقًا؟

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

الشرح: تعتبر القواميس طريقة فعالة لتمثيل العلاقات بين العقد في الشجرة، حيث يسمح المفتاح بالوصول السريع إلى العقد المتصلة.

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

التصنيف: مفهوم جوهري | المستوى: متوسط