قائمة انتظار الأولوية في بنية البيانات: كل ما تحتاج إلى معرفته

نشرت: 2021-04-07

جدول المحتويات

مقدمة

تعد قوائم الانتظار ذات الأولوية في هياكل البيانات شكلاً مهمًا من أشكال ADT (أنواع البيانات المجردة). يتم تخصيص أولوية لكل عنصر ، والتي تكون بمثابة خاصية لتعريفها وترتيبها.

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

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

ترتيب الأكوام والصفوف

يتبع المكدس نهج LIFO (Last In First Out) لترتيب التخزين ، بينما تتبع قائمة الانتظار ترتيب FIFO (First In First Out). هذا عامل مهم للتمييز بين بنيتي البيانات الخطية. يتم تحديد تطبيقاتهم بناءً على نهج LIFO / FIFO الخاص بهم ، حيث يعتمدون على استخدامهم الحسابي الفريد.

لمعرفة المزيد حول علم البيانات وأمثلة لهياكل البيانات ، سجّل في دبلومة PG في البيانات الضخمة ، التي تستضيفها upGrad.com .

بالنسبة لقائمة الانتظار ، تحدد FIFO أنه عند إضافة عناصر متعددة إلى النظام ، فإن العنصر المضاف الأول سيكون أول عنصر يتم الوصول إليه / إزالته.

5 العمليات الأساسية التي يمكن إجراؤها في قائمة انتظار

1. قائمة الانتظار: يتم تنفيذ هذه العملية عندما نريد إضافة عنصر إلى قائمة الانتظار.

2. Dequeue: يستخدم هذا العامل لإزالة عنصر من قائمة الانتظار.

3. IsEmpty: تُستخدم هذه العملية للتحقق مما إذا كانت قائمة الانتظار فارغة أم لا ، ولا يمكن إجراء المزيد من عمليات إزالة اللوائح.

4. IsFull: يتحقق هذا المشغل مما إذا كانت قائمة الانتظار ممتلئة ولا يمكنه التعامل مع أي إضافات أخرى لقائمة الانتظار.

5. نظرة خاطفة: يقوم عامل النظرة باستدعاء / عرض قيمة البيانات المتوقعة / العنصر من قائمة الانتظار دون إزالته من التسلسل المخصص له.

تعرف على سبب أهمية علم البيانات ويضيف قيمة إلى الأعمال من خلال هذه المدونة الإعلامية من upGrad.com.

قائمة انتظار الأولوية في بنية البيانات

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

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

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

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

لمعرفة المزيد حول المجال الناشئ لعلوم البيانات وتطبيقاته في الصناعة التحويلية ، تحقق من هذه المدونة التفصيلية من upGrad.com.

العمليات المدعومة في قائمة انتظار الأولوية

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

1. Is_empty : عملية is_empty تتحقق مما إذا كانت قائمة الانتظار تحتوي على أي عنصر في الوقت الحالي.

2. Insert_with_priority: تضيف هذه العملية عنصرًا إلى قائمة الانتظار ، جنبًا إلى جنب مع قيمة الأولوية التي يجب ربطها بها.

3. Pull_highest_priority_element: تزيل هذه العملية العنصر ذي الأولوية القصوى من قائمة الانتظار أثناء إرجاع قيمة هذا العنصر.

4. نظرة خاطفة: تُستخدم عملية النظرة الخاطفة "find-max" أو "find-min" اعتمادًا على النتائج المتوقعة. هذه العملية لا تزيل عنصر max / min وتعيده فقط.

فائدة استخدام الأكوام في قائمة انتظار الأولوية في بنية البيانات

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

للتعرّف بشكل متعمق على قائمة الانتظار ذات الأولوية في بنية البيانات والعديد من المفاهيم المهمة الأخرى المتعلقة بمجال البرمجة ، سجّل في دورة تدريبية عبر الإنترنت في upGrad .

قائمة انتظار الأولوية وعناصر الفرز

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

بعد ذلك ، إذا أزلنا العناصر بالتتابع ، فستكون النتيجة ترتيبًا مصنفًا للعناصر. Heapsort و Smoothsort و Selection Sort و Insertion Sort و Tree Sort هي أسماء بعض خوارزميات الفرز التي تشترك في ارتباط مكافئ لقائمة انتظار الأولوية في هياكل البيانات.

تطبيقات قوائم انتظار الأولوية

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

  • إدارة عرض النطاق الترددي
  • محاكاة الأحداث المنفصلة
  • خوارزمية ديكسترا
  • ترميز هوفمان
  • أفضل خوارزمية بحث
  • خوارزمية ROAM المثلث
  • خوارزمية Prim للشجرة الممتدة الدنيا

خاتمة

اعتبارًا من اليوم ، يرتبط حوالي 5 مليارات مستهلك بالبيانات بشكل مباشر وغير مباشر. بحلول عام 2025 ، سيتم ربط أكثر من 6 مليارات شخص بالبيانات الضخمة. تتوقع IDC زيادة قدرها 10 أضعاف في البيانات ومشروعات مطالب عالية لعلماء البيانات. تعد قائمة انتظار الأولوية في بنية البيانات مفهومًا مهمًا للمبرمجين وعلماء البيانات نظرًا لارتباطهم الوثيق وتطبيقهم بهياكل بيانات كومة الذاكرة المؤقتة.

إذا كنت مهتمًا بالتعرف على علوم البيانات ، فراجع دبلوم PG في IIIT-B & upGrad في علوم البيانات والذي تم إنشاؤه للمهنيين العاملين ويقدم أكثر من 10 دراسات حالة ومشاريع ، وورش عمل عملية عملية ، وإرشاد مع خبراء الصناعة ، 1- على - 1 مع موجهين في الصناعة ، وأكثر من 400 ساعة من التعلم والمساعدة في العمل مع الشركات الكبرى.

يمكن أن يؤدي التسجيل في دورة ماجستير دولية عبر الإنترنت في علوم الكمبيوتر من جامعة ليفربول جون مورس ، أو دورة PGD في دورة تطوير برامج Full Stack و DevOps وما إلى ذلك ، إلى تحسين فرص العمل لديك كمبرمج.

تعلم دورات علوم البيانات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

وصف تطبيقات أولوية قائمة الانتظار؟

يتم تطبيق قائمة انتظار الأولوية في العديد من الخوارزميات بالإضافة إلى العديد من التطبيقات الواقعية. يتم وصف بعض هذه أدناه:
1. خوارزمية هوفمان: تستخدم شجرة هوفمان التي تم إنشاؤها في خوارزمية هوفمان لضغط البيانات قائمة انتظار ذات أولوية لتنفيذ الشجرة.
2. خوارزمية Prim : تستخدم هذه الخوارزمية قائمة انتظار ذات أولوية لتسريع عملية الحد الأدنى من الوظيفة بالضبط.
3. خوارزمية Dijkstra: تستخدم هذه الخوارزمية كومة أو قائمة انتظار ذات أولوية لاستخراج القيمة الدنيا. قائمة انتظار الأولوية تجعل عملية الحصول على الحد الأدنى فعالة للغاية.
4. نظام التشغيل: يتم استخدام قائمة انتظار الأولوية في العديد من عمليات أنظمة التشغيل مثل موازنة الحمل ومعالجة الانقطاع.

التفريق بين Stack و queue؟

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

كيف يمكن تنفيذ قائمة انتظار الأولوية باستخدام مصفوفة؟

لتنفيذ قائمة انتظار ذات أولوية باستخدام مصفوفة ، يتم إنشاء هيكل لتخزين قيم وأولوية العنصر ثم يتم إنشاء مصفوفة تلك البنية لتخزين العناصر. يتم تضمين العمليات التالية في هذا التنفيذ:
enqueue () - تُعرف أيضًا باسم عملية الإدراج ، تُستخدم هذه الوظيفة لإدراج العناصر في قائمة الانتظار.
peek () - ستجتاز هذه الوظيفة المصفوفة لإرجاع العنصر ذي الأولوية القصوى. إذا وجد عنصرين لهما نفس الأولوية ، فإنه يُرجع عنصر القيمة الأعلى بينهما.
dequeue () - تُستخدم الدالة dequeue () لتحويل جميع العناصر ، وموضعًا واحدًا على يسار العنصر الذي يتم إرجاعه بواسطة وظيفة peek () ، وتقليل حجم قائمة الانتظار.