الدرس الثالث (١)
انظر إلى الشكل ١.٣٣، في الجانب الأيمن هياكل البيانات الخطية ترتب العناصر في مسار واحد، مثل سطر يربط نقطة بنقطة بعدها مباشرة. أما في الجانب الأيسر، هياكل البيانات غير الخطية فتسمح بربط العنصر بأكثر من عنصر في الوقت نفسه، مثل تفرع شجرة. تتبع جدول ١.٩ للمقارنة بوضوح: هياكل البيانات الخطية سهلة التنفيذ وتستعرض العناصر في مسار واحد، بينما هياكل البيانات غير الخطية تتيح ربط عناصر البيانات بالعديد من العناصر الأخرى، ولا تستعرض العناصر في مسار واحد، وتتميز بمعقد التنفيذ.
تقوم هياكل البيانات غير الخطية على تنظيم البيانات بشكل لا يسير في خط مستقيم، بل يسمح بربط العنصر بأكثر من عنصر في الوقت نفسه. أبرز أمثلتها الأشجار والمخططات التي تستخدم في تنظيم الملفات والشبكات وقواعد البيانات. فكر في هيكل المجلدات في حاسوبك، حيث ينفتح المجلد الرئيسي على مجلدات فرعية عدة، وكل مجلد فرعي يتفرع بدوره إلى ملفات أخرى، فهذا تنظيم شجري واضح.
الفكرة الأساسية
هياكل البيانات غير الخطية هي طريقة لتخزين وترتيب المعلومات بحيث لا تتبع مساراً خطياً متسلسلاً، بل ترتبط العقد فيها ببعضها بطرق شبكية أو هرمية تسمح بربط العنصر الواحد بأكثر من عنصر في آن واحد.
الشرح
تنقسم هياكل البيانات غير الخطية إلى نوعين رئيسيين: الأشجار والمخططات. في الأشجار مثل هيكل الشجرة، تبدأ البيانات من عقدة رئيسية تسمى الجذر، وتتفرع منها عقد أخرى تسمى الفروع، وتنتهي بعقد ليس لها فروع تسمى الأوراق. أما المخططات فهي هيكل عام يشمل العقد والخطوط التي تصل بينها وتسمى الحواف، وتكون إما موجهة باتجاه واحد أو غير موجهة. يتم تمثيل هذه الهياكل في لغة البايثون باستخدام القواميس، حيث يمثل المفتاح العقدة وتمثل القيمة قائمة العقد المتصلة بها مباشرة.
مثال محلول خطوة بخطوة
لنفترض أننا نريد بناء شجرة بسيطة في لغة البايثون كما في شكل القاموس:
- ننشئ متغيراً باسم myTree ونضع فيه قاموساً.
- نضع المفتاح "a" وتكون قيمته قائمة تحتوي على العقدتين المتصلتين به هما "b" و "c":
myTree = {"a": ["b", "c"]} - نضيف باقي العقد لكل مفتاح لتحديد الفروع:
"b": ["d", "e"]"c": [None, "f"] - عند تنفيذ الأمر طباعة القاموس
print(myTree)، ستظهر لك النتائج مرتبة بحيث ترى كل عقدة ومفتاحها وما يرتبط به من فروع.
أخطاء شائعة
- الخلط بين العقدة الأصل والعقدة الفرعية عند كتابة العلاقات في قاموس البايثون.
- نسيان وضع قيمة فارغة مثل None للعقد التي لا تمتلك فروعاً طفلة مثل الأوراق.
- الاعتقاد بأن كل المخططات تعتبر أشاراً، والصحيح أن كل الأشجار مخططات وليست كل المخططات أشجاراً.
سؤالان للتدريب مع الإجابة
السؤال الأول: ما هي العقدة الوحيدة في الشجرة التي ليس لها أصل وتأتي في المستوى الأول؟ الإجابة: الجذر أو Root. السؤال الثاني: ما الفرق الأساسي بين المخطط الموجه والمخطط غير الموجه من حيث الحواف؟ الإجابة: المخطط الموجه يحتوي على حواف ذات اتجاه واحد، بينما المخطط غير الموجه تحتوي حوافه على علاقة ثنائية الاتجاه دون اتجاه محدد.