مرجع
آخر الزيارات

رتل (حوسبة)

615 كلمة•0 مشاهدة•🗒️ منذ 11 يوماً
باختصار: يشير مصطلح الرتل في علوم الحاسب بأنه بنية معطيات مجردة مكونة من مجموعة تحتوي على عدد من العناصر التي يتم الحفاظ على ترتيبها وفق قانون محدد، تسمح هذه المجموعة للمستعمل بإجراء مجموعة من العمليات على العناصر بما فيها إضافة عنصر جديد إلى مؤخرة…. تتناول المقالة 3 أقسام، منها «اللائحة المتصلة»، «تحقيق الرتل» و«تحقيق الرتل في لغات البرمجة».
المحتويات
  1. اللائحة المتصلة
  2. تحقيق الرتل
  3. تحقيق الرتل في لغات البرمجة
رتل (حوسبة)

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

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

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

اللائحة المتصلة

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

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

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

تحقيق الرتل

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

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

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

تحقيق الرتل في لغات البرمجة

  • انظر كذلك
  • نظرية الرتل
  • المكدس

وعلى صعيد آخر، توفر مكتبة القوالب المعيارية الخاصة بلغة سي++ القالب والذي يمكن استخدامه فقط مع عمليات الإدراج والسحب. كما توفر مكتبة لغة جافا ابتداءً من الإصدار J2SE5.0 الواجهة التي تعرض طرق الرتل (الإدراج والإزالة)، يحقق هذه الواجهة الصف والصف (ابتداءً من الإصدار J2SE 1.6). توفر لغة بي إتش بي الصف لهذا الغرض.

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

ما رأيك في هذه المقالة؟

📝 هل في هذه المقالة خطأ؟

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