التجميع الأولي
في برمجة الحاسوب ، يُعدّ التكتل الأولي ظاهرة تُسبب تدهورًا في أداء جداول التجزئة ذات الاستكشاف الخطي . تنص هذه الظاهرة على أنه عند إضافة عناصر إلى جدول تجزئة ذي استكشاف خطي، فإنها تميل إلى التكتل معًا في سلاسل طويلة (أي مناطق متصلة طويلة في جدول التجزئة لا تحتوي على خانات فارغة). إذا كان جدول التجزئة عند عامل تحميل قدرهلبعض المعلماتثم الطول المتوقع للتسلسل الذي يحتوي على عنصر معينيكونوهذا يؤدي إلى استغراق عمليات الإضافة والاستعلامات السلبية الوقت المتوقعفي جدول تجزئة ذي فحص خطي.
أسباب التكتل الأولي
للتكتل الأولي سببان:
- الفائز يستمر بالفوز: كلما طالت سلسلة العناصر، زادت احتمالية تراكم عناصر إضافية فيها. وهذا يُنشئ حلقة تغذية راجعة إيجابية تُساهم في تأثير التكتل. مع ذلك، لا يُؤدي هذا وحده إلى الانفجار التربيعي. [ 1 ] [ 2 ]
- ربط السلاسل: قد لا يؤدي إدخال عنصر واحد إلى زيادة طول السلسلة التي ينتمي إليها بمقدار عنصر واحد فحسب، بل قد يؤدي أيضًا إلى ربط سلسلتين طويلتين نسبيًا. وهذا ما يسبب التضخم التربيعي في طول السلسلة المتوقع. [ 1 ]
هناك طريقة أخرى لفهم التجميع الأولي وهي فحص الانحراف المعياري لعدد العناصر التي تُجزأ إلى منطقة معينة داخل جدول التجزئة. [ 2 ] لنفترض منطقة فرعية من جدول التجزئة بحجمالعدد المتوقع للعناصر التي يتم تجزئة بياناتها في المنطقة هومن ناحية أخرى، فإن الانحراف المعياري لعدد هذه العناصر هوويترتب على ذلك أنه باحتمال، سيتجاوز عدد العناصر التي يتم تجزئتها في المنطقة حجمهامن المنطقة. وهذا يعني بشكل بديهي أن المناطق ذات الحجمغالباً ما يحدث تجاوز في المناطق الأكبر حجماً، بينما لا يحدث ذلك عادةً. تُستخدم هذه الفكرة البديهية كنقطة انطلاق للتحليلات الرسمية للتكتل الأولي. [ 2 ] [ 3 ] [ 4 ]
التأثير على الأداء
يؤدي التجميع الأساسي إلى تدهور الأداء لكل من عمليات الإدخال والاستعلامات في جدول التجزئة ذي البحث الخطي. يجب أن تنتقل عمليات الإدخال إلى نهاية التشغيل، وبالتالي تستغرق الوقت المتوقع.[ 1 ] يجب أن تصل الاستعلامات السلبية (أي الاستعلامات التي تبحث عن عنصر تبين أنه غير موجود) إلى نهاية عملية التنفيذ، وبالتالي تستغرق أيضًا الوقت المتوقع .[ 1 ] يمكن أن تنتهي الاستعلامات الإيجابية بمجرد العثور على العنصر المطلوب. ونتيجة لذلك، فإن الوقت المتوقع للاستعلام عن عنصر عشوائي في جدول التجزئة هو[ 1 ] ومع ذلك ، تستغرق الاستعلامات الإيجابية للعناصر المُدرجة حديثًا (مثل عنصر تم إدراجه للتو) الوقت المتوقع[ 1 ]
تنطبق هذه الحدود أيضًا على البحث الخطي مع الحذف المؤجل (أي استخدام علامات الحذف)، طالما يتم إعادة بناء جدول التجزئة (ومسح علامات الحذف) بشكل شبه متكرر. يكفي إجراء إعادة البناء هذه مرة واحدة على الأقل كلالإضافات. [ 2 ]
المفاهيم الخاطئة الشائعة
تصف العديد من الكتب الدراسية تأثير "الفائز يستمر في الفوز" (حيث كلما طالت السلسلة، زادت احتمالية تراكم عناصر إضافية فيها) باعتباره السبب الوحيد للتكتل الأولي. [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] ومع ذلك، وكما أشار كنوت، [ 1 ] فإن هذا ليس السبب الرئيسي للتكتل الأولي.
تذكر بعض الكتب الدراسية أن الوقت المتوقع للحصول على رد إيجابي هو[ 11 ] [ 12 ]، مع الاستشهاد عادةً بكنوث. [ 1 ] ينطبق هذا على الاستعلام عن عنصر عشوائي . مع ذلك، قد تستغرق بعض الاستعلامات الإيجابية أوقات تشغيل متوقعة أطول بكثير. على سبيل المثال، إذا قام شخص ما بإدراج عنصر ثم استعلم عن هذا العنصر مباشرةً، فسيستغرق الاستعلام نفس الوقت الذي استغرقه الإدراج، وهوفي انتظار ذلك.
تقنيات لتجنب التكتل الأولي
يُعدّ البحث الخطي المرتب [ 13 ] (والذي يُشار إليه غالبًا باسم تجزئة روبن هود [ 14 ] ) أسلوبًا لتقليل تأثير التجميع الأولي على الاستعلامات. يقوم البحث الخطي المرتب بترتيب العناصر داخل كل عملية تشغيل وفقًا لتجزئتها. وبالتالي، يمكن إنهاء الاستعلام بمجرد مصادفة أي عنصر تكون تجزئته أكبر من تجزئته للعنصر المطلوب الاستعلام عنه. ينتج عن ذلك أن تستغرق الاستعلامات الإيجابية والسلبية الوقت المتوقع..
التجزئة المقبرة هي نوع من أنواع البحث الخطي المرتب، تُزيل التأثيرات التقاربية للتجميع الأولي لجميع العمليات. [ 2 ] تترك التجزئة المقبرة فجوات استراتيجية داخل عمليات التشغيل، يمكن لعمليات الإدخال اللاحقة الاستفادة منها. تُضاف هذه الفجوات، التي يمكن اعتبارها بمثابة شواهد قبور (مثل تلك التي تُنشئها عمليات الحذف الكسولة )، إلى الجدول أثناء عمليات إعادة البناء شبه المنتظمة. تُسرّع هذه الفجوات عمليات الإدخال التي تتم حتى حدوث عملية إعادة البناء شبه المنتظمة التالية. تستغرق كل عملية في جدول التجزئة المقبرة الوقت المتوقع..
توصي العديد من المصادر باستخدام الاستكشاف التربيعي كبديل للاستكشاف الخطي الذي يتجنب تجريبياً آثار التجميع الأولي.
مراجع
- 1 2 3 4 5 6 7 8 كنوت، دونالد إرفين (1997). فن برمجة الحاسوب ، المجلد 3، الفرز والبحث . ريدينغ، ماساتشوستس: أديسون-ويسلي. الصفحات 527-528 . ISBN 0-201-89683-4. OCLC 36241708 .
- 1 2 3 4 5 بندر، مايكل أ.؛ كوزماول، برادلي س.؛ كوزماول، ويليام (فبراير 2022). "إعادة النظر في الاستكشاف الخطي: شواهد القبور تُشير إلى زوال التجميع الأولي" . المؤتمر السنوي الثاني والستون لمؤسسة مهندسي الكهرباء والإلكترونيات (IEEE) حول أسس علوم الحاسوب (FOCS) لعام 2021. IEEE. الصفحات 1171-1182 . doi : 10.1109/focs52979.2021.00115 . ISBN 978-1-6654-2055-6. S2CID 235731820 .
- ↑ باج، آنا؛ باج، راسموس؛ روزيتش، ميلان (11 يونيو 2007). "الاستكشاف الخطي مع الاستقلال الثابت" . وقائع الندوة السنوية التاسعة والثلاثين لجمعية ACM حول نظرية الحوسبة . نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 318-327 . doi : 10.1145/1250790.1250839 . ISBN 9781595936318. S2CID 7523004 .
- ↑ ثورب، ميكيل؛ تشانغ، ين (يناير 2012). "التجزئة المستقلة الخماسية القائمة على الجداول مع تطبيقات في الاستكشاف الخطي وتقدير العزم الثاني" . مجلة SIAM للحوسبة . 41 (2): 293-331 . doi : 10.1137/100800774 . ISSN 0097-5397 .
- ↑ كورمن، توماس هـ. (2022). مقدمة في الخوارزميات . تشارلز إريك ليسرسون، رونالد ل. ريفست، كليفورد شتاين ( الطبعة الرابعة). كامبريدج، ماساتشوستس. ISBN 978-0-262-04630-5. OCLC 1264174621 .
{{cite book}}: CS1 maint: موقع الناشر مفقود ( رابط ) - ↑ دروزديك، آدم (1995). هياكل البيانات في لغة سي . شركة بي دبليو إس للنشر. رقم ISBN 0-534-93495-1. OCLC 31077222 .
- ↑ كروس، روبرت ل. (1987). هياكل البيانات وتصميم البرامج ( الطبعة الثانية). إنجلوود كليفس، نيوجيرسي: برنتيس هول. ISBN 0-13-195884-4. OCLC 13823328 .
- ↑ ماكميلان، مايكل (2014). هياكل البيانات والخوارزميات باستخدام جافا سكريبت . سيباستوبول، كاليفورنيا: أورايلي. ISBN 978-1-4493-6493-9. OCLC 876268837 .
- ↑ سميث، بيتر، 1 فبراير (2004). هياكل البيانات التطبيقية باستخدام لغة C++ . سودبري، ماساتشوستس: جونز وبارتليت للنشر. ISBN 0-7637-2562-5. OCLC 53138521 .
{{cite book}}: صيانة CS1: أسماء متعددة: قائمة المؤلفين ( رابط ) صيانة CS1: أسماء رقمية: قائمة المؤلفين ( رابط ) - ↑ تريمبلاي، جان بول (1976). مقدمة في هياكل البيانات مع تطبيقات . بي جي سورنسون. نيويورك: ماكجرو هيل. ISBN 0-07-065150-7. OCLC 1858301 .
- 1 2 دليل هياكل البيانات وتطبيقاتها . [Sl]: CRC PRESS. 2020. ISBN 978-0-367-57200-6. OCLC 1156995269 .
- ↑ سيدجويك، روبرت (1998). الخوارزميات في لغة سي ( الطبعة الثالثة). ريدينغ، ماساتشوستس. رقم ISBN 0-201-31452-5. OCLC 37141168 .
{{cite book}}: CS1 maint: موقع الناشر مفقود ( رابط ) - ↑ أمبل، كنوت (1974). "جداول التجزئة المرتبة" . مجلة الكمبيوتر . 17 (2): 135-142 . doi : 10.1093/comjnl/17.2.135 .
- ↑ سيليس، بيدرو، بير-أكي لارسون، وج. إيان مونرو. "تجزئة روبن هود". الندوة السنوية السادسة والعشرون حول أسس علوم الحاسوب (sfcs 1985) . IEEE، 1985.
- التجزئة
