طابور برودال
في علوم الحاسوب ، يعتبر طابور برودال بنية طابور كومة / أولوية ذات حدود زمنية منخفضة للغاية في أسوأ الحالات :لإضافة عنصر، استخدم البحث عن الحد الأدنى، ودمج قائمتي انتظار، وتقليل المفتاح.تُستخدم هذه الطريقة لحذف الحد الأدنى والحذف العام. وهي أول نوع من أنواع أكوام البيانات التي تحقق هذه الحدود دون اللجوء إلى استهلاك تكاليف التشغيل. سُميت طوابير برودال نسبةً إلى مخترعها جيرث ستولتينغ برودال. [ 1 ]
على الرغم من امتلاكها حدودًا تقاربية أفضل من هياكل قوائم الانتظار ذات الأولوية الأخرى، إلا أنها، على حد تعبير برودال نفسه، "معقدة للغاية" و"غير قابلة للتطبيق عمليًا". [ 1 ] يصف برودال وأوكاساكي نسخة مستمرة ( وظيفية بحتة ) من قوائم انتظار برودال. [ 2 ]
تعريف
طابور برودال هو مجموعة من شجرتينووخمسة أدلة . يمكن الاطلاع على تعريف بنية بيانات الدليل في القسم التالي. بالنسبة لكلا الشجرتين، لكل عقدة رتبة ، وهذه الرتبة مفيدة للعمليات اللاحقة وتتوافق بشكل بديهي مع لوغاريتم حجم الشجرة الفرعية المتجذرة في العقدة. نلاحظعدد أبناء العقدةمع الرتبةسنستخدم أيضًالجذر الشجرةولجذر الشجرةفي كل لحظة معينة، يجب أن تستوفي كل شجرة فرعية متفرعة من عقدة ما هذه الثوابت الخمسة (والتي سيُطلق عليها لاحقًاالثوابت):
- : لوإذا كانت ورقة شجر، فإذن،
- :،
- : لو، ثم،
- :نؤكد على ذلك،
- :أو.
هنايضمن لنا ذلك أن حجم الشجرة الفرعية المتفرعة من عقدة ما يكون على الأقل أسيًا لرتبة تلك العقدة. بالإضافة إلى ذلك،يحدد هذا عدد الأبناء من كل رتبة لعقدة معينة، وهذا يعني أن جميع العقد لها رتبة ودرجات في.
في طابور برودال، لن تكون قيمة كل عقدة أكبر من قيمة عقدتها الأب، وتُسمى العقد التي تُخالف هذا الشرط بالعقد المخالفة . مع ذلك، نرغب في الحفاظ على عدد العقد المخالفة صغيرًا نسبيًا. لتتبع العقد المخالفة، نُنشئ مجموعتين لكل عقدة.ومن العقد الأكبر منبشكل بديهي،هل العقد أكبر منبرتبة عالية (بحيثلو)، وهي العقد ذات الرتبة الصغيرة (تُنفَّذ هذه المجموعات باستخدام قائمة مرتبطة ثنائياً، مما يعني أنها مرتبة . وعلى وجه الخصوص، تُضاف جميع العقد المخالفة إلىتُضاف في مقدمة القائمة، وتُضاف جميع العقد المخالفة إلىيتم إدراجها بجوار عقدة من نفس الرتبة. نسمحيشير إلى عدد العقد فيمن الرتبةالوتُحقق القوائم هذه الثوابت الخمسة (سنُسميهاالثوابت):
- :
- : لوثم
- : لوثم توجد عقدةبحيث
- :
- : عن طريق الإشارة إلىلدينا:لثابت معين.
بما أن جميع العقد لها رتبة فيالو، الجميعوهي بالحجم.
لدينا أيضًا بعض الثوابت لجذور الأشجارو:و(يسمى)الثوابت).
- :،
- :،
- : لو، ثم.
اليُخبرنا الثابت أساسًا أنه إذا قمنا بزيادة رتبةواحد، لدينا على الأكثرانتهاكات "كبيرة" جديدة (هنا تعني كلمة كبيرة امتلاك رتبة عالية) دون انتهاكثابت. من ناحية أخرى،يخبرنا الثابت أن جميع الانتهاكات فيإذا كانت "صغيرة"، فإن هذا الشرط الثابت صحيح وفقًا لتعريفالحفاظ على الثوابتوالأمر ليس بسيطاً، وللحفاظ على هذه الأمور سنستخدمعملية يمكن تنفيذها باستخدام دليل كما هو موضح في القسم التالي. في كل مرة سنستدعيفي هذه العملية، سنقوم بشكل أساسي بما يلي :
- أضف المخالفة الجديدة إلىأووذلك بحسب درجة تلك المخالفة.
- لتجنبوولتجنب تضخمها بشكل مفرط، نقوم تدريجياً بنوعين من التحولات:
- نقل أبناءللزيادة رتبة
- تقليل عدد المخالفات فيباستبدال انتهاكين للرتبةإلى انتهاك واحد للرتبة
بنية بيانات الدليل
يستند هذا التعريف إلى التعريف الوارد في ورقة برودال. [ 3 ]
نفترض أن لدينا سلسلة من المتغيراتونريد التأكد من ذلكبالنسبة لعتبة معينةالعملية الوحيدة المسموح بها هيمما يقللبزيادة لا تقل عن 2 وتزيدعلى الأكثر بمقدار 1. يمكننا أن نفترض دون فقدان للعمومية أنيقللبمقدار 2 ويزدادبواسطة 1.
إذا كانإذا زاد بمقدار واحد، فإن هدف الدليل هو إخبارنا بالمؤشرات التي يتم استخدامها.للتقديموذلك احتراماً للحد الأدنى. يُسمح للمرشد فقط بـمكالمات إلىدالة لكل زيادة.
يستطيع الدليل الوصول إلى تسلسل آخربحيثوطالما بعد زيادةلدينالسنا بحاجة إلى طلب المساعدة من مرشدنا السياحي لأنهو "بعيد" أسفللكن، إذاقبل الزيادة، ثم لدينابعد التغيير.
لتبسيط الشرح، يمكننا أن نفترض أن، لهذا السببسيقوم الدليل بإنشاء كتل بالتسلسل التالي :من الشكلحيث نسمح بعدم وجوديُحافظ الدليل على الثابت القائل بأن كل عنصر ليس ضمن كتلة هو إماأوعلى سبيل المثال، إليك الكتل اللازمة لتسلسل من.
يتكون الدليل من 3 مصفوفات :
- مصفوفة من
- مصفوفة من
- مصفوفة من المؤشرات حيث جميعوالتيإذا كانت القيم الموجودة في نفس الكتلة تشير إلى نفس خلية الذاكرة التي تحتوي على قيمة.إذا لم يكن ضمن كتلة،يشير إلى خلية ذاكرة تحتوي على.
وفقًا لهذا التعريف، يتمتع الدليل بخاصيتين مهمتين :
- لكل عنصر في كتلة، يمكننا إيجاد العنصر الأيسر من الكتلة في الزمن.
- يمكننا تدمير كتلة في الوقت المناسبعن طريق التعيينإلى خلية الذاكرة التي يشير إليها كل عنصر من عناصر الكتلة.
وبهذه الطريقة، يستطيع الدليل تحديد المؤشرات التي يجبفي الوقت المناسبإليك مثال :
لإعادة إنشاء الكتل، تشير مؤشرات 1 و0 المضافة إلى الكتلة الأولى الآن إلى نفس الخلية التي تشير إليها جميع العناصر الأخرى من الكتلة الأولى، ويتم تغيير قيمة خلية الكتلة الثانية إلىفي المثال السابق، اثنان فقطكانت هناك حاجة إلى عمليات، وهذا هو الحال في جميع الحالات. لذلك، لا يحتاج الطابور إلا إلىعمليات لإعادة تأسيس العقار.
عمليات طابور برودال
لتنفيذ عمليات قائمة الانتظار ذات الأولوية المختلفة ، نحتاج أولاً إلى وصف بعض التحويلات الأساسية للأشجار.
التحولات
ربط الأشجار
لربط الأشجار، نحتاج إلى ثلاث عقدذات رتبة متساوية. يمكننا حساب الحد الأدنى لهذه العقد الثلاث بمقارنتين. نفترض هنا أنهذا هو الحد الأدنى، لكن العملية متشابهة للجميع.يمكننا الآن إنشاء العقدوالابنان الأيسران لـورفع رتبةواحداً تلو الآخر. وهذا يحافظ على كل شيءوالثوابت.
فصل الأشجار
لولديه بالضبط اثنين أو ثلاثة أبناء من ذوي المكانة الرفيعةيمكننا إزالة هؤلاء الأبناء ويحصل على رتبة أكبر أبنائه الجدد بالإضافة إلى واحد. منفي هذه الحالة، نعلم أنسيتم الحفاظ على الثابت. بعد ذلك، كلوتبقى الثوابت مُحققة. إذاإذا كان للشجرة أربعة أبناء أو أكثر، فيمكننا ببساطة حذف اثنين منهم وتبقى جميع الثوابت صحيحة. لذلك، فإن فصل شجرة من الرتبةسيؤدي ذلك دائمًا إلى شجرتين أو ثلاث شجرات من الرتبة(من بين الطفلين أو الثلاثة الذين تم استبعادهم) وشجرة إضافية واحدة من الرتبة على الأكثر.
الحفاظ على أبناء الجذر
عندما نضيف ونزيل أبناء الجذر، فإننا نريد الاحتفاظ بـصحيح وثابت. لهذا الغرض، نستخدم 4 أدلة، اثنان لكل جذر.و. أن يكون لديه إمكانية الوصول المستمر إلى ابننقوم بإنشاء مصفوفة قابلة للتوسيع من المؤشرات تحتوي على لكل رتبةدليل إلى ابنمن الرتبةسيحافظ أحد المرشدين على الشرط الذيوالآخر يؤكدكلاهما لـأبناءمن رتبةوتُعامل بشكل منفصل وبطريقة مباشرة للحفاظ على عددها بين 2 و7. وهو ما يعادلسيحتوي المتغير في تعريف الدليل على القيم التاليةللحصول على دليل الحد الأعلى وللحد الأدنى.
في هذا السياق، عندما نضيف طفلاً من رتبةإلى الجذر، نزيدواحداً تلو الآخر، ثم قم بتطبيقالعمليات. الـتتألف العملية هنا من ربط ثلاث أشجار من الرتبةمما يؤدي إلى إنشاء طفل جديد من الرتبةلذلك، نقوم بتقليلبمقدار ثلاثة وزيادةبواحد. إذا أدت هذه الزيادة إلى وجود عدد كبير جدًا من أبناء الطبقة العلياأونربط بعض هؤلاء الأبناء ببعضهم البعض، وربما نرفع من رتبةإذا قمنا بزيادة رتبة، علينا زيادة طول المصفوفة القابلة للتمديد التي تديرها الأدلة.
قطع العلاقة بين الابن ومتشابهة جدًا، باستثناء هنا...تتوافق هذه العملية مع عملية فصل الشجرة.
للجذرالوضع يكاد يكون متشابهاً. ومع ذلك، بما أنيضمن لنا ذلكبما أن العنصر هو الحد الأدنى، فإننا نعلم أننا لن نخلق أي انتهاك من خلال ربط أو فصل العناصر الفرعية لـلا ينطبق الأمر نفسه علىربط الأبناء لا يُنشئ انتهاكات جديدة، لكن فصل الأبناء قد يُنشئ ما يصل إلى ثلاثة انتهاكات جديدة. الشجرة المتبقية بعد الفصل تُصبح ابنًا لـإذا كان ترتيبه أقل منوإلا فإنه يصبح ابنًا لـالانتهاكات الجديدة التي احتلت مرتبة أعلى منتُضاف إلىللحفاظ على الثوابت علىمجموعة (أيوعلينا أن نضمن أن رتبةسيتم زيادتها، وذلكيتم اختيار هذه الثوابت كبيرة بما يكفي.
الحد من المخالفات
يهدف هذا التحول إلى تقليل إجمالي عدد الانتهاكات المحتملة، أي تقليل.
نفترض أن لدينا انتهاكين محتملينومن نفس الرتبةثم لدينا عدة حالات:
- إذا تبين أن إحدى العقد لا تشكل انتهاكًا، فإننا ببساطة نزيلها من مجموعة الانتهاكات المقابلة لها.
- وإلا، فإن كلا العقدتين تُعتبران مخالفتين. بسببنعلم أن كلاوأن يكون لديك أخ واحد على الأقل. ثم:
- لووإذا لم يكونوا إخوة، فيمكننا أن نفترض دون فقدان العمومية أنثم يمكننا تبديل الأشجار الفرعية المتجذرة فيولا يمكن أن ينخفض عدد المخالفات إلا خلال عملية التبديل هذه.
- آخر،وهم إخوة لعقدة سنسميها.
- لوله أكثر من أخ واحد من ذوي الرتب العاليةيمكننا ببساطة قطع الاتصالواجعلها عقدة غير منتهكة لـكما هو موضح في القسم الفرعي السابق.
- آخر،وهم الأبناء الوحيدون ذوو المكانةل..
- لويمكننا قطع كليهماوالعقد منواجعلها عقدًا غير منتهكة لـكما هو موضح في القسم الفرعي السابق
- آخر،سنقطع الاتصال، الرتبة الجديدة لـسيكون واحدًا زائد رتبة ابنه الأيسر، نستبدلبواسطة ابن فيمن الرتبةوالتي يمكن قطعها كما هو موضح في القسم الفرعي السابق. إذا كان البديل لـيصبح عقدة منتهكة للرتبةنضيفه إلىوأخيراً نقوم بـأبناء جددكما هو موضح أعلاه.
تجنب الكثير من الانتهاكات
مجموعات المخالفات الوحيدة التي سنضيف إليها مخالفات هيوكما هو موضح أعلاه، يتم الحفاظ على الثوابت في تلك المجموعات باستخدام أدلة. عندما نضيف انتهاكًا إلىلدينا حالتان:
- إذا كان هناك ستة انتهاكات بالضبط من الرتبة المحددة، وكان هناك عقدتان منتهكتان على الأقل ليستا من أبناء، نطبقالعمليات المذكورة في الدليل.
- إذا كان هناك أكثر من 4 انتهاكات، فإن أبناءقمنا بحذف المخالفات الإضافية ووضعنا روابطها أدناه.هذا يزيل المخالفة التي أنشأتها هذه العقد ولا يؤثر على الدليل الذي يحافظ على أبناء.
لكل عملية يتم تنفيذها في قائمة الانتظار ذات الأولوية، نقوم بزيادة رتبةبواحد على الأقل عن طريق تحريك عدد ثابت من أبناءل(شريطة أنزيادة رتبةيسمح لنا بإضافة المخالفات إلىمع الحفاظ على جميع ثوابتنا. إذاويمكننا أن نقطع أكبر أبناء، قم بربطها بـثم اصنعابنوهذا يحقق جميع الشروط. وإلا، فإننا نقطع ابنًا لـمن الرتبةافصل هذا الابن وأضف الأشجار الناتجة إلى. لونعلم أنهي العقدة ذات الرتبة الأكبر، لذلك نعلم أنه لا يمكن إنشاء انتهاكات كبيرة.
عمليات قائمة الانتظار ذات الأولوية
إنشاء قائمة الانتظار
لا يُعيد سوى شجرتين فارغتين.
فايند مين
عمليات الإرجاع.
أدخل
إنها مجرد حالة خاصة منأينهي قائمة انتظار تحتوي فقط علىو.
اندماج
يتضمن ذلك أربع أشجار (اثنتان لكل طابور). الشجرة التي لها أصغر جذر تصبح هي الجديدةإذا كانت هذه الشجرة هي أيضًا الشجرة ذات الرتبة القصوى، فيمكننا إضافة جميع الأشجار الأخرى أدناه كما هو موضح سابقًا. في هذه الحالة، لا يتم إنشاء أي عقدة مخالفة، وبالتالي لا يتم إجراء أي تحويل على العقد المخالفة. وإلا، تصبح الشجرة ذات الرتبة القصوى هي الشجرة الجديدة.تُضاف الشجرة والأشجار الأخرى أدناه كما هو موضح في قسم "الحفاظ على أبناء الجذر". إذا كانت بعض الأشجار لها نفس رتبة هذه الشجرة الجديدةيمكننا فصلها قبل إضافتها. ويتم التعامل مع المخالفات الناتجة كما هو موضح في قسم "تجنب كثرة المخالفات".
مفتاح التناقص
يستبدل عنصربواسطة(مع). لو، نقوم بتبديل العقدتين، وإلا فإننا نتعامل مع الانتهاك الجديد المحتمل كما هو موضح في قسم "تجنب الكثير من الانتهاكات".
حذف الحد الأدنى
يُسمح له بأخذ أسوأ وقت ممكنأولاً، نقوم بتفريغها بالكاملبنقل جميع أبناءلثم اصنعابن من الرتبة صفر. ثم،يتم حذفه، وهذا يترك لنا على الأكثرالأشجار المستقلة. ثم يتم إيجاد الحد الأدنى الجديد من خلال النظر إلى المجموعات المخالفة للجذر القديم والنظر إلى جميع جذور الأشجار الجديدة. إذا لم يكن العنصر الأدنى جذرًا، فيمكننا استبدال جذر من شجرة من نفس الرتبة به. هذا يُنشئ انتهاكًا واحدًا على الأكثر. بعد ذلك، نجعل الأشجار المستقلة أبناءً للعنصر الأدنى الجديد من خلال تنفيذعمليات الربط وفك الربط. وهذا يعيد إنشاءوالثوابت. من خلال دمجومجموعات الجذر الجديد بالإضافة إلىومجموعات الجذر القديم معًا، نحصل على مجموعة انتهاكات جديدة واحدة بحجمعن طريق القيام على الأكثرمن خلال التحويلات التي تقلل من الانتهاكات، يمكننا جعل مجموعة الانتهاكات تحتوي على عنصر واحد على الأكثر من كل رتبة. ستكون هذه المجموعة هي مجموعتنا الجديدة.مجموعة والجديدالمجموعة فارغة. هذا يعيد إنشاءالثوابت. علينا أيضًا تهيئة دليل جديد للجذر الجديد.
يمسح
هنا،يشير إلى أصغر عنصر ممكن.يمكن تنفيذ ذلك ببساطة عن طريق استدعاءثم يتبع ذلك.
تفاصيل التنفيذ
في هذا القسم، نلخص بعض تفاصيل التنفيذ لهيكل بيانات قائمة انتظار برودال.
في كل شجرة، كل عقدة عبارة عن سجل يحتوي على الحقول التالية:
- العنصر المرتبط بالعقدة (قيمته)،
- رتبة العقدة،
- مؤشرات إلى العقدة الشقيقة اليسرى واليمنى،
- مؤشر إلى العقدة الأب،
- مؤشر إلى الابن الأيسر،
- مؤشرات إلى العنصر الأول من العقدةومجموعات،
- مؤشرات إلى العنصر التالي والعنصر السابق في مجموعة المخالفات التي ينتمي إليها العقدة. إذا كانت هذه العقدة هي العقدة الأولى في مجموعة المخالفاتأوينتمي إلى، يشير المؤشر السابق إلى.
- مجموعة من المؤشرات لأبناءمن الرتبة(مع)
- مصفوفة مماثلة لـ،
- مصفوفة من المؤشرات إلى العقد فيمن الرتبة(مع).
وأخيرًا، لدينا 5 أدلة: ثلاثة للحفاظ على الحدود العليا لـ،وواثنين للحفاظ على الحدود الدنيا لـو.
نظرًا لكثرة المؤشرات والمجموعات التي يجب تتبعها، يُعدّ تنفيذ طابور برودال أمرًا بالغ الصعوبة. ولهذا السبب، يُوصف بأنه كائن نظري بحت يهدف إلى تقليل التعقيد الزمني في خوارزميات مثل خوارزمية ديكسترا . مع ذلك، تمّ تنفيذ طابور برودال بلغة سكالا ( يمكن العثور على مستودع GitHub هنا: https://github.com/ruippeixotog/functional-brodal-queues ). في ورقته البحثية، يذكر جيرث ستولتينغ برودال أن: "من القضايا المهمة التي تتطلب مزيدًا من العمل تبسيط البنية لجعلها قابلة للتطبيق عمليًا". [ 3 ]
ملخص أوقات التشغيل
فيما يلي تعقيدات زمنية [ 4 ] لهياكل بيانات الكومة المختلفة. يشير الاختصار am. إلى أن التعقيد المذكور هو التعقيد المُستهلك، وإلا فهو تعقيد أسوأ حالة. لمعرفة معنى " O ( f )" و" Θ ( f )"، راجع ترميز Big O. تفترض أسماء العمليات وجود كومة دنيا.
| عملية | البحث عن الحد الأدنى | حذف الحد الأدنى | مفتاح التناقص | أدخل | اندماج | make-heap [ a ] |
|---|---|---|---|---|---|---|
| ثنائي [ 4 ] | Θ (1) | Θ (log n ) | Θ (log n ) | Θ (log n ) | Θ ( n ) | Θ ( n ) |
| الانحراف [ 5 ] | Θ (1) | O (log n ) am. | O (log n ) am. | O (log n ) am. | O (log n ) am. | Θ ( n ) am. |
| يساري [ 6 ] | Θ (1) | Θ (log n ) | Θ (log n ) | Θ (log n ) | Θ (log n ) | Θ ( n ) |
| ذات الحدين [ 4 ] [ 8 ] | Θ (1) | Θ (log n ) | Θ (log n ) | Θ (1) صباحًا. | Θ (log n ) [ b ] | Θ ( n ) |
| التوزيع الثنائي المائل [ 9 ] | Θ (1) | Θ (log n ) | Θ (log n ) | Θ (1) | Θ (log n ) [ b ] | Θ ( n ) |
| 2-3 كومة [ 11 ] | Θ (1) | O (log n ) am. | Θ (1) | Θ (1) صباحًا. | O (log n ) [ b ] | Θ ( n ) |
| الانحراف من الأسفل إلى الأعلى [ 5 ] | Θ (1) | O (log n ) am. | O (log n ) am. | Θ (1) صباحًا. | Θ (1) صباحًا. | Θ ( n ) am. |
| الاقتران [ 12 ] | Θ (1) | O (log n ) am. | o (log n ) am. [ c ] | Θ (1) | Θ (1) | Θ ( n ) |
| الاقتران بالرتب [ 15 ] | Θ (1) | O (log n ) am. | Θ (1) صباحًا. | Θ (1) | Θ (1) | Θ ( n ) |
| فيبوناتشي [ 4 ] [ 16 ] | Θ (1) | O (log n ) am. | Θ (1) صباحًا. | Θ (1) | Θ (1) | Θ ( n ) |
| فيبوناتشي الصارم [ 17 ] [ د ] | Θ (1) | Θ (log n ) | Θ (1) | Θ (1) | Θ (1) | Θ ( n ) |
| برودال [ 18 ] [ د ] | Θ (1) | Θ (log n ) | Θ (1) | Θ (1) | Θ (1) | Θ ( n ) [ 19 ] |
- ↑ عملية بناء الكومة هي عملية إنشاء كومة من سلسلة من n عنصرًا غير مُرتبة. يمكن إنجازها فيزمن Θ ( n ) بينما تعمل خوارزمية دمج العناصر في زمن O (log n ) (حيث يمكن توزيع كلا التعقيدين). [ 5 ] [ 6 ] وتحقق خوارزمية أخرى زمن Θ ( n ) للكومات الثنائية. [ 7 ]
- بالنسبة للأكوام المستمرة (التي لا تدعم تقليل المفتاح )، يُقلل تحويل عام تكلفة دمج العناصر إلى تكلفة إدراجها ، بينما تكون التكلفة الجديدة لحذف الحد الأدنى هي مجموع التكاليف القديمة لحذف الحد الأدنى ودمج العناصر . [ 10 ] هنا، يجعل هذا التحويل دمج العناصر يعمل في زمن Θ (1) (مُستهلك، إذا كانت تكلفة الإدراج كذلك)، بينما لا يزال حذف الحد الأدنى يعمل في زمن O (log n ). عند تطبيقه على أكوام ذات توزيع ثنائي منحرف، ينتج عنه طوابير برودال-أوكاساكي، وهي أكوام مستمرة ذات تعقيدات مثلى في أسوأ الحالات. [ 9 ]
- ↑ الحد الأدنى لـ[ 13 ] الحد الأعلى لـ[ 14 ]
- تُحقق طوابير برودال وأكوام فيبوناتشي الصارمة أفضل تعقيد في أسوأ الحالات للأكوام. وقد وُصفت في البداية بأنها هياكل بيانات إجرائية. أما طابور برودال-أوكاساكي فهو هيكل بيانات مستمر يحقق نفس المستوى الأمثل، باستثناء أنهلا يدعم خاصية تقليل المفتاح .
جيرث ستولتينغ برودال
جيرث ستولتينج برودال أستاذ بجامعة آرهوس بالدنمارك . [ 20 ] اشتهر بقائمة انتظار برودال.
مراجع
- 1 2 جيرث ستولتينغ برودال (1996). قوائم الانتظار ذات الأولوية الفعالة في أسوأ الحالات. وقائع الندوة السابعة لجمعية آلات الحوسبة وجمعية الرياضيات التطبيقية والصناعية حول الخوارزميات المنفصلة، الصفحات 52-58
- ↑ جيرث ستولتينغ برودال وكريس أوكاساكي (1996). قوائم الانتظار ذات الأولوية الوظيفية البحتة المثلى . مجلة البرمجة الوظيفية.
- 1 2 برودال، جيرث ستولتينج (1996). “قوائم الانتظار ذات الأولوية ذات الكفاءة الأسوأ” (PDF) .
{{cite web}}: CS1 maint: url-status ( link ) - 1 2 3 4 كورمين، توماس هـ . ليسرسون، تشارلز إي . ريفست، رونالد ل. (1990). مقدمة في الخوارزميات ( الطبعة الأولى). مطبعة معهد ماساتشوستس للتكنولوجيا وماكجرو هيل. رقم ISBN 0-262-03141-8.
- 1 2 3 سليتور، دانيال دومينيك ؛ تارجان، روبرت إندري (فبراير 1986). "الأكوام ذاتية التعديل" . مجلة SIAM للحوسبة . 15 (1): 52-69 . CiteSeerX 10.1.1.93.6678 . doi : 10.1137/0215004 . ISSN 0097-5397 .
- 1 2 تارجان، روبرت (1983). "3.3. أكوام اليسار". هياكل البيانات وخوارزميات الشبكات . ص 38-42 . doi : 10.1137/1.9781611970265 . ISBN 978-0-89871-187-5.
- ↑ هايوارد، رايان؛ ماكديارميد، كولين (1991). "تحليل الحالة المتوسطة لبناء الكومة عن طريق الإدخال المتكرر" (ملف PDF) . مجلة الخوارزميات . 12 : 126-153 . CiteSeerX 10.1.1.353.7888 . doi : 10.1016/0196-6774(91)90027-v . مؤرشف من الأصل (ملف PDF) بتاريخ 2016-02-05 . تم الاطلاع عليه بتاريخ 2016-01-28 .
- ↑ "الكومة ذات الحدين | موسوعة الرياضيات والعلوم الرائعة" . brilliant.org . تم الاطلاع عليه بتاريخ 30-09-2019 .
- 1 2 برودال، جيرث ستولتينغ؛ أوكاساكي، كريس (نوفمبر 1996)، "طوابير الأولوية الوظيفية البحتة المثلى"، مجلة البرمجة الوظيفية ، 6 (6): 839-857 ، doi : 10.1017/s095679680000201x
- ↑ أوكاساكي، كريس (1998). "10.2. التجريد الهيكلي". هياكل البيانات الوظيفية البحتة ( الطبعة الأولى). الصفحات 158-162 . ISBN 9780521631242.
- ↑ تاكاوكا، تاداو (1999)، نظرية الأكوام 2-3 (ملف PDF) ، ص 12
- ↑ إياكونو، جون (2000)، "تحسين الحدود العليا لأكوام الاقتران"، وقائع ورشة العمل الإسكندنافية السابعة حول نظرية الخوارزميات (ملف PDF) ، سلسلة محاضرات في علوم الحاسوب، المجلد 1851، دار نشر سبرينغر، الصفحات 63-77 ، arXiv : 1110.4428 ، CiteSeerX 10.1.1.748.7812 ، doi : 10.1007/3-540-44985-X_5 ، ISBN 3-540-67690-2
- ↑ فريدمان، مايكل لورانس (يوليو 1999). "حول كفاءة أكوام الاقتران وهياكل البيانات ذات الصلة" (ملف PDF) . مجلة رابطة آلات الحوسبة . 46 (4): 473-501 . doi : 10.1145/320211.320214 .
- ↑ بيتي، سيث (2005). نحو تحليل نهائي لأكوام الاقتران (ملف PDF) . وقائع ندوة FOCS '05 السنوية السادسة والأربعين لمؤسسة IEEE حول أسس علوم الحاسوب. الصفحات 174-183 . CiteSeerX 10.1.1.549.471 . doi : 10.1109/SFCS.2005.75 . ISBN 0-7695-2468-0.
- ^ هيوبلر، بيرنهارد. سين، سيدهارتا؛ تارجان ، روبرت إي. (نوفمبر 2011). "أكوام الاقتران بالرتبة" (PDF) . سيام ج. الحوسبة . 40 (6): 1463–1485 . دوى : 10.1137/100785351 .
- ↑ فريدمان، مايكل لورانس ؛ تارجان، روبرت إي. (يوليو 1987). "أكوام فيبوناتشي واستخداماتها في خوارزميات تحسين الشبكات المحسّنة" (ملف PDF) . مجلة رابطة آلات الحوسبة . 34 (3): 596-615 . CiteSeerX 10.1.1.309.8927 . doi : 10.1145/28869.28874 .
- ↑ برودال، جيرث ستولتينغ ؛ لاغوجيانيس، جورج؛ تارجان، روبرت إي. (2012). أكوام فيبوناتشي الصارمة (ملف PDF) . وقائع الندوة الرابعة والأربعين حول نظرية الحوسبة - STOC '12. الصفحات 1177-1184 . CiteSeerX 10.1.1.233.1740 . doi : 10.1145/2213977.2214082 . ISBN 978-1-4503-1245-5.
- ↑ برودال، جيرث س. ( 1996)، "طوابير الأولوية الفعالة في أسوأ الحالات" (ملف PDF) ، وقائع الندوة السنوية السابعة لجمعية ACM-SIAM حول الخوارزميات المنفصلة ، الصفحات 52-58
- ↑ غودريتش، مايكل ت .؛ تاماسيا، روبرتو (2004). "7.3.6. بناء الكومة من الأسفل إلى الأعلى". هياكل البيانات والخوارزميات في جافا ( الطبعة الثالثة). ص 338-341 . ISBN 0-471-46983-1.
- ^ "الموقع الإلكتروني لجيرث ستولتينج برودال، في جامعة آرهوس" . تم الاسترجاع 18 فبراير 2016 .
- أكوام (هياكل البيانات)
