شجرة النطاق
في علم الحاسوب ، شجرة النطاق هي بنية بيانات شجرية مرتبة تُستخدم لتخزين قائمة من النقاط. تسمح هذه الشجرة بالإبلاغ بكفاءة عن جميع النقاط ضمن نطاق محدد ، وتُستخدم عادةً في بُعدين أو أكثر. قدّم جون لويس بنتلي أشجار النطاق عام ١٩٧٩. [ ١ ] واكتُشفت بنى بيانات مشابهة بشكل مستقل من قِبل لوكر، [ ٢ ] ولي وونغ، [ ٣ ] وويلارد. [ ٤ ] تُعد شجرة النطاق بديلاً لشجرة k -d . وبالمقارنة مع أشجار k -d، توفر أشجار النطاق أوقات استعلام أسرع (باستخدام ترميز Big O ).لكن تخزينها أسوأ من ذلك.، حيث n هو عدد النقاط المخزنة في الشجرة، و d هو بُعد كل نقطة، و k هو عدد النقاط التي تم الإبلاغ عنها بواسطة استعلام معين.
في عام 1990، قام برنارد شازيل بتحسين ذلك إلى وقت الاستعلاموتعقيد المساحة[ 5 ] [ 6 ]
بنية البيانات

شجرة النطاق لمجموعة من النقاط أحادية البعد هي شجرة بحث ثنائية متوازنة على تلك النقاط. تُخزَّن النقاط في أوراق الشجرة؛ حيث تُخزِّن كل عقدة داخلية أكبر قيمة في شجرتها الفرعية اليسرى. أما شجرة النطاق لمجموعة من النقاط في d بُعد، فهي شجرة بحث ثنائية متعددة المستويات مُعرَّفة بشكل تكراري . كل مستوى من مستويات بنية البيانات هو شجرة بحث ثنائية على أحد الأبعاد d . المستوى الأول هو شجرة بحث ثنائية على أول إحداثية من الإحداثيات d . يحتوي كل رأس v في هذه الشجرة على بنية مرتبطة به، وهي عبارة عن شجرة نطاق ( d -1) بُعد على آخر ( d -1) إحداثية من النقاط المُخزَّنة في الشجرة الفرعية لـ v .
العمليات
بناء
شجرة النطاق أحادية البعد على مجموعة من n نقطة هي شجرة بحث ثنائية، والتي يمكن إنشاؤها فييتم بناء أشجار النطاق في الأبعاد الأعلى بشكل متكرر عن طريق إنشاء شجرة بحث ثنائية متوازنة على الإحداثي الأول للنقاط، ثم، لكل رأس v في هذه الشجرة، يتم إنشاء شجرة نطاق ذات ( d -1) بُعد على النقاط الموجودة في الشجرة الفرعية لـ v . يتطلب بناء شجرة نطاق بهذه الطريقةوقت.
يمكن تحسين وقت الإنشاء هذا لأشجار النطاق ثنائية الأبعاد إلى[ 7 ] ليكن S مجموعة من n نقطة ثنائية الأبعاد. إذا احتوت S على نقطة واحدة فقط، فأرجع ورقة تحتوي على تلك النقطة. وإلا، فأنشئ البنية المرتبطة بـ S ، وهي شجرة نطاق أحادية البعد على الإحداثيات y للنقاط في S. ليكن xm هو متوسط الإحداثي x للنقاط. ولتكن S <sub>L</sub> مجموعة النقاط التي إحداثياتها x أقل من أو تساوي xm ، ولتكن S <sub> R </sub> مجموعة النقاط التي إحداثياتها x أكبر من xm . أنشئ بشكل متكرر v<sub> L</sub> ، وهي شجرة نطاق ثنائية الأبعاد على S<sub> L</sub> ، و v<sub> R</sub> ، وهي شجرة نطاق ثنائية الأبعاد على S<sub> R</sub> . أنشئ رأسًا v <sub>L </sub> له الابن الأيسر v <sub> L </sub> والابن الأيمن v<sub> R</sub> . إذا رتبنا النقاط حسب إحداثياتها y في بداية الخوارزمية، وحافظنا على هذا الترتيب عند تقسيم النقاط حسب إحداثياتها x ، فيمكننا إنشاء البنى المرتبطة بكل شجرة فرعية في وقت خطي. هذا يقلل وقت إنشاء شجرة نطاق ثنائية الأبعاد إلىكما أنه يقلل من الوقت اللازم لإنشاء شجرة نطاق ذات أبعاد d إلى.
استعلامات النطاق

يُبلغ استعلام النطاق على شجرة النطاق عن مجموعة النقاط التي تقع ضمن فترة زمنية محددة. وللإبلاغ عن النقاط التي تقع في الفترة [ x1 , x2 ] ، نبدأ بالبحث عن x1 و x2 . عند رأس ما في الشجرة، تتباعد مسارات البحث إلى x1 و x2. لنفترض أن vsplit هو آخر رأس يشترك فيه هذان المساران. لكل رأس v في مسار البحث من vsplit إلى x1 ، إذا كانت القيمة المخزنة عند v أكبر من x1 ، يتم الإبلاغ عن كل نقطة في الشجرة الفرعية اليمنى لـ v . إذا كانت v ورقة، يتم الإبلاغ عن القيمة المخزنة عند v إذا كانت ضمن فترة الاستعلام. وبالمثل ، يتم الإبلاغ عن جميع النقاط المخزنة في الأشجار الفرعية اليسرى للرؤوس ذات القيم الأقل من x2 على طول مسار البحث من vsplit إلى x2 ، ويتم الإبلاغ عن ورقة هذا المسار إذا كانت ضمن فترة الاستعلام.
بما أن شجرة النطاق هي شجرة ثنائية متوازنة، فإن مسارات البحث إلى x1 و x2 لها طوليمكن الإبلاغ عن جميع النقاط المخزنة في الشجرة الفرعية لرأس ما في وقت خطي باستخدام أي خوارزمية لاجتياز الشجرة . وبناءً على ذلك، فإن الوقت اللازم لإجراء استعلام نطاقي هو، حيث k هو عدد النقاط في فترة الاستعلام.
تتشابه استعلامات النطاق في الأبعاد d . فبدلاً من الإبلاغ عن جميع النقاط المخزنة في الأشجار الفرعية لمسارات البحث، يتم إجراء استعلام نطاق ذي ( d -1) بُعد على البنية المرتبطة بكل شجرة فرعية. وفي النهاية، سيتم إجراء استعلام نطاق أحادي البُعد، وسيتم الإبلاغ عن النقاط الصحيحة. بما أن استعلامًا ذا أبعاد d يتكون منبالنسبة للاستعلامات عن نطاق ذي أبعاد ( d -1)، فإن الوقت اللازم لإجراء استعلام عن نطاق ذي أبعاد d هوحيث k هو عدد النقاط في فترة الاستعلام. ويمكن اختزال ذلك إلىباستخدام شكل مختلف من التتالي الجزئي . [ 2 ] [ 4 ] [ 7 ]
انظر أيضاً
مراجع
- ↑ بنتلي، جيه إل (1979). "مسائل البحث القابلة للتحليل" (ملف PDF) . رسائل معالجة المعلومات . 8 (5): 244-251 . doi : 10.1016/0020-0190(79)90117-0 . مؤرشف من الأصل في 24 سبتمبر 2017.
- 1 2 لوكر، جي إس (1978). "بنية بيانات لاستعلامات النطاق المتعامد". الندوة السنوية التاسعة عشرة حول أسس علوم الحاسوب (SFCS 1978) . ص 28-21 . doi : 10.1109/SFCS.1978.1 . S2CID 14970942 .
- ↑ لي، د.ت.؛ وونغ، س.ك. (1980). "الأشجار الخماسية: بنية ملفات لأنظمة قواعد البيانات متعددة الأبعاد". معاملات ACM لأنظمة قواعد البيانات . 5 (3): 339. doi : 10.1145/320613.320618 . S2CID 2547376 .
- 1 2 ويلارد، دان إي. خوارزمية الشجرة الفائقة -ب (تقرير فني). كامبريدج، ماساتشوستس: مختبر أيكن للحاسوب، جامعة هارفارد. TR-03-79.
- ↑ شازيل، برنارد (1990). "الحدود الدنيا للبحث في النطاق المتعامد: الجزء الأول: حالة الإبلاغ" (ملف PDF) . مجلة ACM . 37 (2): 200-212 . doi : 10.1145/77600.77614 . S2CID 8895683 .
- ↑ شازيل، برنارد (1990). "الحدود الدنيا للبحث في النطاق المتعامد: الجزء الثاني. النموذج الحسابي" (ملف PDF) . مجلة ACM . 37 : 439-463 . doi : 10.1145/79147.79149 . S2CID 15935619 .
- 1 2 دي بيرج، مارك؛ تشيونغ، أوتفريد؛ فان كريفيلد، مارك؛ أوفرمارس، مارك (2008). الهندسة الحسابية . دوى : 10.1007/978-3-540-77974-2 . رقم ISBN 978-3-540-77973-5.
روابط خارجية
- أشجار النطاق والقطاعات في CGAL ، مكتبة خوارزميات الهندسة الحسابية.
- المحاضرة الثامنة: أشجار النطاق ، مارك فان كريفيلد. مؤرشفة هنا .
- أشجار النطاق باستخدام PAM ، مكتبة الخرائط المعززة المتوازية.
- تصور شجرة النطاق ثنائية الأبعاد ، تشو كايشوان.
- الأشجار (هياكل البيانات)
- هياكل البيانات الهندسية
