شجرة الكرات

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

وصف غير رسمي

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

تُحدد كل عقدة في الشجرة أصغر كرة تحتوي على جميع نقاط البيانات في شجرتها الفرعية. وهذا يُنتج الخاصية المفيدة التالية: بالنسبة لنقطة اختبار معينة t خارج الكرة، فإن المسافة إلى أي نقطة في كرة B في الشجرة أكبر من أو تساوي المسافة من t إلى سطح الكرة. بالصيغة الرسمية: [ 2 ]

دب(ت)={الأعلى(|ت-B.pivot|-نصف قطر B،دب.الوالد)،لو بRooتالأعلى(|ت-B.pivot|-نصف قطر B،0)،لو ب=Rooت{\displaystyle D^{B}(t)={\begin{cases}\max(|t-{\textit {B.pivot}}|-{\textit {B.radius}},D^{\textit {B.parent}}),&{\text{if }}B\neq Root\\\max(|t-{\textit {B.pivot}}|-{\textit {B.radius}},0),&{\text{if }}B=Root\\\end{cases}}}

أيندب(ت){\displaystyle D^{B}(t)}هي أقصر مسافة ممكنة من أي نقطة في الكرة B إلى نقطة ما t .

ترتبط أشجار الكرة بشجرة M ، لكنها تدعم فقط الانقسامات الثنائية، بينما في شجرة M ينقسم كل مستوىم{\displaystyle m}ل2م{\displaystyle 2m}يؤدي طي الأشجار إلى بنية شجرية أقل عمقًا، وبالتالي يتطلب حسابات مسافة أقل، مما ينتج عنه عادةً استعلامات أسرع. علاوة على ذلك، يمكن تخزين أشجار M بشكل أفضل على القرص ، حيث يتم تنظيمها في صفحات . كما تحتفظ شجرة M بالمسافات من العقدة الأصلية محسوبة مسبقًا لتسريع الاستعلامات.

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

بناء

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

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

خوارزمية بناء k -d

يُطلق على أبسط هذه الإجراءات اسم " خوارزمية بناء k -d"، قياسًا على عملية بناء أشجار k -d . هذه خوارزمية غير متصلة بالإنترنت ، أي أنها تعمل على مجموعة البيانات بأكملها دفعة واحدة. تُبنى الشجرة من الأعلى إلى الأسفل بتقسيم نقاط البيانات بشكل متكرر إلى مجموعتين. تُختار نقاط التقسيم على طول البُعد الوحيد الذي يحتوي على أكبر تباين في النقاط، مع تقسيم المجموعات بناءً على القيمة الوسيطة لجميع النقاط على طول هذا البُعد. يتطلب إيجاد نقطة التقسيم لكل عقدة داخلية وقتًا خطيًا بالنسبة لعدد العينات الموجودة في تلك العقدة، مما ينتج عنه خوارزمية ذات تعقيد زمنييا(نسجلن){\displaystyle O(n\,\log \,n)}، حيث n هو عدد نقاط البيانات.

الشفرة الزائفة

الدالة construct_balltree تأخذ المدخلات التالية: D ، وهي عبارة عن مصفوفة من نقاط البيانات. وتخرج الدالة: B ، وهو جذر شجرة الكرة التي تم إنشاؤها. إذا بقيت نقطة واحدة، فأنشئ ورقة B تحتوي على تلك النقطة في ثم أعد B. وإلا ، فليكن c هو بُعد أكبر انتشار. لنفترض أن p هي النقطة المركزية المختارة مع مراعاة c ليكن L و R مجموعتي النقاط الواقعة على يسار ويمين الوسيط على طول البعد c. أنشئ B مع طفلين: B.pivot := p ، B.child1 := construct_balltree(L)، B.child2 := construct_balltree(R). ليكن B.radius أقصى مسافة من p بين الأبناء، ثم أعد B. نهاية الدالة.

يُعدّ تسريع استعلامات البحث عن أقرب جار أحد أهم تطبيقات أشجار الكرة ، حيث يهدف البحث إلى إيجاد أقرب k نقطة في الشجرة إلى نقطة اختبار معينة باستخدام مقياس مسافة محدد (مثل المسافة الإقليدية ). تستغل خوارزمية بحث بسيطة، تُسمى أحيانًا KNS1، خاصية المسافة في شجرة الكرة. على وجه الخصوص، إذا كانت الخوارزمية تبحث في بنية البيانات باستخدام نقطة اختبار t ، وقد رصدت بالفعل نقطة p الأقرب إلى t من بين النقاط التي صادفتها حتى الآن، فيمكن تجاهل أي شجرة فرعية تكون كرتها أبعد عن t من p في بقية عملية البحث.

وصف

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

  1. إذا كانت المسافة من نقطة الاختبار t إلى العقدة الحالية B أكبر من أبعد نقطة في Q ، فتجاهل B وأرجع Q.
  2. إذا كانت B عقدة طرفية، فافحص كل نقطة مُدرجة في B وقم بتحديث قائمة الجوار الأقرب وفقًا لذلك. ثم أعد القائمة المُحدثة.
  3. إذا كانت B عقدة داخلية، فاستدعِ الخوارزمية بشكل متكرر على فرعي B ، وابحث أولاً عن الفرع الذي يكون مركزه أقرب إلى t . أعد قائمة الانتظار بعد أن يقوم كل استدعاء من هذه الاستدعاءات بتحديثها بدوره.

إن إجراء البحث المتكرر بالترتيب الموضح في النقطة 3 أعلاه يزيد من احتمالية حذف الفرع الآخر بالكامل أثناء البحث.

الشفرة الزائفة

دالة البحث عن أقرب جار هي المدخلات التالية: t، النقطة المستهدفة للاستعلام k، عدد أقرب الجيران لـ t الذين سيتم البحث عنهم Q، طابور ذو أولوية قصوى يحتوي على k نقطة على الأكثر ب، عقدة، أو كرة، في الشجرة الناتج: Q، التي تحتوي على أقرب k جار من داخل B إذا كان الفرق بين المسافة (t، B.pivot) ونصف قطر B أكبر من أو يساوي المسافة (t، Q.first) ، فأرجع Q دون تغيير. أما إذا كانت B عقدة طرفية، فلكل نقطة p في B ، إذا كانت المسافة (t، p) أقل من المسافة (t، Q.first) ، أضف p إلى Q إذا كان حجم (Q) أكبر من k ، قم بإزالة أبعد جار من Q نهاية الشرط نهاية الشرط كرر وإلا ليكن child1 هو العقدة الفرعية الأقرب إلى t لنفترض أن child2 هي العقدة الفرعية الأبعد عن t knn_search(t, k, Q, child1) knn_search(t, k, Q, child2) end if return Q end function [ 2 ]

أداء

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

مراجع

  1. 1 2 3 أوموهوندرو، ستيفن م. (1989) "خمس خوارزميات لبناء شجرة الكرة"
  2. 1 2 3 ليو، ت.؛ مور، أ.؛ وغراي، أ. (2006). "خوارزميات جديدة لتصنيف غير بارامتري عالي الأبعاد بكفاءة" (ملف PDF) . مجلة أبحاث تعلم الآلة . 7 : 1135-1158 . مؤرشف من الأصل (ملف PDF) بتاريخ 3 مارس 2016. تم الاطلاع عليه بتاريخ 8 مايو 2014 .
  3. كومار، ن.؛ تشانغ، ل.؛ نايار، س. (2008). "ما هي خوارزمية الجيران الأقرب الجيدة لإيجاد الرقع المتشابهة في الصور؟". رؤية الحاسوب - المؤتمر الأوروبي لرؤية الحاسوب 2008 (ملف PDF) . سلسلة محاضرات في علوم الحاسوب. المجلد 5303. ص 364. CiteSeerX 10.1.1.360.7582 . doi : 10.1007/978-3-540-88688-4_27 . ISBN    978-3-540-88685-3.
  4. كبرياء، أ.م.؛ فرانك، إ. (2007). "مقارنة تجريبية لخوارزميات الجوار الأقرب الدقيقة". اكتشاف المعرفة في قواعد البيانات: PKDD 2007 (ملف PDF) . سلسلة محاضرات في علوم الحاسوب. المجلد 4702. ص 140. doi : 10.1007/978-3-540-74976-9_16 . ISBN   978-3-540-74975-2.