ما المقصود بهيكل البيانات؟

رسم توضيحي بياني للبيانات

المؤلفون

Gregg Lindemulder

Matthew Kosinski

Staff Editor

IBM Think

ما المقصود بهيكل البيانات؟

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

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

على سبيل المثال، ضَع في اعتبارك فريق مبيعات يريد تتبُّع أرقام المبيعات اليومية. وبدلًا من تسجيل كل نقطة بيانات على حدة، يمكن للفريق تخزين هذه البيانات في نوع من بنية البيانات يُعرَف باسم "المصفوفة". (للمزيد من المعلومات، راجِع "أنواع هياكل البيانات").

في Python، قد تبدو المصفوفة بهذا الشكل:

daily_sales = [500, 800, 600, 1200, 950]

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

يعتمد مبرمجو الكمبيوتر على هياكل البيانات لبناء تطبيقات فعالة. في مجالات علوم الكمبيوتر وعلم البيانات، تُعَد هياكل البيانات ضرورية لأنظمة التشغيل وقواعد البيانات ومواقع الويب والرسومات والتحليلات وسلسلة الكتل والتعلم الآلي (ML) والمزيد.

نظرًا لأن هياكل البيانات أساسية لكتابة تعليمات برمجية فعَّالة، فهي غالبًا ما تكون من بين الدروس الأولى التي يتم تدريسها للمبتدئين في البرمجة. كما أنها موضوع شائع لأسئلة المقابلة للمرشحين لوظائف برمجة الكمبيوتر.

تصميم ثلاثي الأبعاد لكرات تتدحرج على مسار

أحدث الأخبار والرؤى حول الذكاء الاصطناعي 


تتوفر معارف وأخبار منسقة بمهارة حول الذكاء الاصطناعي والسحابة وغيرها في نشرة Think الإخبارية الأسبوعية. 

لماذا تُعَد هياكل البيانات مهمة؟

تُعَد هياكل البيانات مهمة لأنها تسهِّل على أجهزة الكمبيوتر معالجة مجموعات كبيرة ومعقدة من المعلومات. من خلال تنظيم عناصر البيانات منطقيًا، تزيد هياكل البيانات من كفاءة كود الكمبيوتر وتجعل الكود أسهل في الفهم.

هياكل وخوارزميات البيانات (DSA)

يستخدم المبرمجون هياكل البيانات لتحسين سرعة وقوة الخوارزميات، وهي مجموعات من التعليمات لإكمال مهمة الحوسبة. في برمجة الكمبيوتر، يُعرَف هذا المزيج باسم "DSA" وهو اختصار "هياكل وخوارزميات البيانات". يساعد DSA المبرمجين على معالجة التحديات المتمثلة في تعقيد الوقت وتعقيد المكان.

تعقيد الوقت هو مقياس للمدة التي تستغرقها الخوارزمية لإكمال مهمة بناءً على كمية المدخلات. تعقيد المكان هو مقياس لمدى الذاكرة التي تستخدمها الخوارزمية بناءً على كمية المدخلات.

باستخدام نظام القياس الرياضي Big O، يستطيع المبرمجون قياس تعقيد المكان والوقت. ويمكنهم بعد ذلك تحديد هياكل البيانات والخوارزميات التي توفِّر أسرع وقت تشغيل وأكثر كفاءة في المساحة لمهمة معينة.

البرمجة الديناميكية

تؤدي هياكل البيانات أيضًا دورًا مهمًا في البرمجة الديناميكية، وهي تقنية لحل المشكلات المعقدة بسرعة.

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

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

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

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

هياكل البيانات الخطية مقابل هياكل البيانات غير الخطية

تنقسم هياكل البيانات إلى فئتين رئيسيتين: الخطية وغير الخطية.

هياكل البيانات الخطية

في هيكل البيانات الخطي، يتم ترتيب البيانات في خط، مع وضع كل عنصر بيانات؛ واحدًا تلو الآخر بالتسلسل. هذا الترتيب يجعل من السهل اجتياز العناصر والوصول إليها بالترتيب.

تُعَد هياكل البيانات الخطية واضحة وسهلة التنفيذ. تتضمن هياكل البيانات الشائعة في هذه الفئة المصفوفات والقوائم المرتبطة وقوائم الانتظار.

هياكل البيانات غير الخطية

في هيكل البيانات غير الخطي، يكون المنطق التنظيمي شيئًا آخر غير الترتيب الخطي المتسلسل. على سبيل المثال، يمكن ترتيب نقاط البيانات بشكل هرمي أو ربطها في شبكة.

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

أنواع هياكل البيانات

هناك عدة أنواع من هياكل البيانات التي قد يستخدمها المبرمجون اعتمادًا على الأنظمة التي يقومون ببنائها وما يحتاجون إلى القيام به بالبيانات. تشمل هياكل البيانات الشائعة ما يلي:

  • المصفوفات
  • قوائم الانتظار
  • المكدسات
  • القوائم المرتبطة
  • الأشجار
  • الرسوم البيانية
  • التجزئة 

المصفوفات

تُعَد المصفوفات من أبسط وأكثر أنواع هياكل البيانات استخدامًا. وهي تخزِّن عناصر البيانات من نفس النوع في مواقع الذاكرة المجاورة. يُتيح هذا الهيكل إمكانية تحديد موقع العناصر من نفس النوع والوصول إليها بسهولة.

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

مثال: قد تبدو مصفوفة لمتوسط درجات رضا العملاء في مركز الاتصال كل يوم على هذا النحو:

average_customer_score = [4, 3.5, 3.7, 4.1, 3.4, 4.9]

قوائم الانتظار

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

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

مثال: قد يتم وضع العملاء الذين ينتظرون التحدث إلى ممثل مركز الاتصال في قائمة انتظار كهذه:

queue = [customer 1, customer 2, customer 3]

عندما يكون الممثل متاحًا، فإنه يتصل تلقائيا بالعميل الأول في قائمة الانتظار، والذي تتم إزالته بعد ذلك من القائمة. الآن، تبدو قائمة الانتظار كما يلي:

queue = [customer 2, customer 3]

المكدسات

على غرار قوائم الانتظار، تُجري بنية البيانات القائمة على المجموعات العمليات بترتيب محدد مسبقًا. لكن بدلًا من FIFO، تستخدم المجموعات تنسيق "LIFO"، أي "الأخير دخولًا، الأول خروجًا". سيكون آخر عنصر بيانات تتم إضافته هو أول عنصر بيانات تتم إزالته.

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

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

recent_actions = [typing ‘.’, space, typing ‘T’]

عندما يضغط المستخدم على زر "التراجع"، يتم التراجع عن أحدث إجراء في المجموعة - "كتابة T". الآن ، تبدو المجموعة كما يلي:

recent_actions = [typing ‘.’, space]

القوائم المرتبطة

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

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

مثال: قد تبدو نسخة مبسَّطة لقائمة مبسَّطة من مقاطع الفيديو المرتبطة في مشغِّل الوسائط بهذا الشكل:

Video 1 – Video 2 – Video 3

يشير كل كائن في القائمة إلى الكائن التالي، لذلك عند انتهاء الفيديو 1، سيتم توجيه مشغِّل الوسائط لبدء تشغيل الفيديو 2. 

الأشجار

يُعَد هيكل البيانات الشجرة، المعروف أحيانًا باسم شجرة البادئة، مفيدًا لإنشاء علاقات هرمية بين عناصر البيانات. توجد عقدة أصل واحدة في الجزء العلوي من هيكل الشجرة، مع تفرّع العقد الفرعية الفرعية على مستويات لاحقة تحتها.

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

الاستخدامات: تُستخدم الأشجار غالبًا لتمثيل التسلسلات الهرمية في الخرائط التنظيمية وأنظمة الملفات وأنظمة أسماء النطاقات وفهرسة قواعد البيانات وشجرة القرار في تطبيقات التعلم الآلي.

مثال:

شجرة تمثِّل مخططًا تنظيميًا
مثال على كيفية تمثيل هيكل بيانات الشجرة للعلاقات الهرمية في مؤسسة.

الرسوم البيانية

ينظِّم هيكل البيانات الرسم البياني العلاقات بين الكائنات المختلفة باستخدام الرؤوس والحواف. الرؤوس هي نقاط بيانات "ممثلة" بالنقاط، والحواف هي خطوط تربط الرؤوس.

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

الاستخدامات: غالبًا ما تُستخدم هياكل البيانات من نوع الرسم البياني مع خوارزميات البحث التي تبحث عن البيانات ضمن شبكات معقدة من العلاقات. من الأمثلة الشائعة البحث بالعرض (Breadth-First Search)، الذي يستعرض البيانات مستوى تلو الآخر، والبحث بالعمق (Depth-First Search)، الذي يتعمق عبر مستويات متعددة من البيانات للوصول إلى المعلومات.

مثال:

مثال على هيكل البيانات من نوع الرسم البياني
مثال على هيكل البيانات من نوع الرسم البياني

التجزئة

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

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

الاستخدامات: يمكن أن تساعد هياكل بيانات التجزئة على استرجاع البيانات بسرعة من دفاتر الهاتف والقواميس وأدلة الموظفين. يمكن استخدامها أيضًا لفهرسة قواعد البيانات وتخزين كلمات المرور وأنظمة تكنولوجيا المعلومات لموازنة التحميل.

مثال: قد تبدو نسخة مبسَّطة من جدول التجزئة الذي ينظِّم قائمة جهات الاتصال في الهاتف الذكي على هذا النحو:

مثال مبسَّط لجدول التجزئة

تقوم دالة التجزئة بتعيين كل مفتاح إلى الفهرس المناسب. لذل ، عندما يُدخل المستخدم مفتاحًا (اسم جهة اتصال)، يعمل جدول التجزئة على إرجاع القيمة المقترنة في نفس الفهرس (رقم جهة الاتصال).

حالات استخدام هياكل البيانات

تُعد هياكل البيانات أساسية في تصميم تطبيقات البرمجيات لأنها تنفِّذ الأشكال الملموسة للأنواع المجردة من البيانات.

النوع المجرد من البيانات هو نموذج رياضي يصنِّف كيفية تصرّف نوع البيانات والعمليات التي يمكن تنفيذها عليه. على سبيل المثال، يحدد النوع المجرد للبيانات الخاص بقائمة الانتظار سلوك قائمة الانتظار (وفق مبدأ FIFO). يوفر هيكل بيانات قائمة الانتظار طريقة لتنظيم البيانات في شكل قائمة انتظار، بحيث يطبِّق البرنامج مبدأ "أول ما يدخل، أول ما يخرج" (FIFO) على تلك البيانات.

يتضمن العديد من لغات البرمجة، مثل Python وJava وJavaScript، هياكل بيانات مدمجة تساعد المطورين على العمل بكفاءة أكبر.

تتضمن حالات الاستخدام الشائعة لهياكل البيانات في برامج الكمبيوتر ما يلي:

  • تخزين البيانات وتنظيمها
  • الفهرسة
  • تبادل البيانات
  • البحث
  • قابلية التوسع
أكاديمية الذكاء الاصطناعي

هل تعد إدارة البيانات هي سر الذكاء الاصطناعي التوليدي؟

استكشف سبب أهمية البيانات عالية الجودة للاستخدام الناجح للذكاء الاصطناعي التوليدي.

تخزين البيانات وتنظيمها

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

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

الفهرسة

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

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

تبادل البيانات

تعمل هياكل البيانات على تنظيم البيانات بحيث يمكن مشاركتها بسهولة بين التطبيقات. على سبيل المثال، يستخدم العديد من التطبيقات قوائم الانتظار لإدارة الحزم وإرسالها عبر بروتوكولات مثل TCP/IP. تساعد قوائم الانتظار على في ضمان إرسال الحزم واستلامها بالترتيب الذي تم إنشاؤها به. 

البحث

من خلال تنظيم البيانات بطريقة تجعلها أبسط للفهم من قِبَل التطبيقات والمستخدمين النهائيين، تسهِّل هياكل البيانات البحث عن البيانات وتحديد مواقعها.

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

قابلية التوسع

تدعم هياكل البيانات قابلية توسُّع النظام من خلال مساعدة برامج الكمبيوتر على معالجة مجموعات البيانات الكبيرة، وحل المشكلات المعقدة واستخدام الموارد بكفاءة أكبر.

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

حلول ذات صلة
برمجيات وحلول إدارة البيانات

صمم استراتيجية بيانات تقضي على صوامع البيانات، وتقلل من التعقيدات وتحسّن جودة البيانات للحصول على تجارب استثنائية للعملاء والموظفين.

استكشف حلول إدارة البيانات
IBM watsonx.data

يتيح لك watsonx.data توسيع نطاق التحليلات والذكاء الاصطناعي باستخدام جميع بياناتك، أينما كانت، من خلال مخزن بيانات مفتوح وهجين ومُدار.

اكتشف watsonx.data
خدمات الاستشارات في مجال البيانات والتحليلات

استفِد من قيمة بيانات المؤسسة باستخدام IBM Consulting، من خلال بناء مؤسسة تعتمد على الرؤى التي تقدِّم ميزة للأعمال.

اكتشف خدمات التحليلات
اتخِذ الخطوة التالية

صمم استراتيجية بيانات تقضي على صوامع البيانات، وتقلل من التعقيدات وتحسّن جودة البيانات للحصول على تجارب استثنائية للعملاء والموظفين.

استكشف حلول إدارة البيانات اكتشف watsonx.data