Hacker News

مقدمة تفاعلية للأشجار الرباعية

تعرف على كيفية تشغيل Quadtrees للبحث المكاني في الخرائط والألعاب وتتبع الأسطول. دليل تفاعلي لبنية البيانات الأساسية هذه للمطورين المعاصرين.

2 دقيقة قراءة

Mewayz Team

Editorial Team

Hacker News

لماذا تعتبر Quadtrees مهمة أكثر مما تعتقد

في كل مرة تقوم فيها بالتكبير/التصغير على خريطة رقمية، أو الاستعلام عن المطاعم القريبة، أو مشاهدة أداة تعقب الأسطول في الوقت الفعلي وهي تقوم بتحديث العشرات من أيقونات المركبات دون أن يتوقف متصفحك عن العمل، هناك فرصة جيدة لأن تقوم الشجرة الرباعية بالرفع الثقيل خلف الكواليس. تعد Quadtrees واحدة من هياكل البيانات الأنيقة التي لم يسمع عنها معظم الناس أبدًا، ومع ذلك فهي تعمل بهدوء على تشغيل بعض الأنظمة الأكثر أهمية للأداء في البرامج الحديثة - بدءًا من اكتشاف تصادم ألعاب الفيديو وحتى أنظمة المعلومات الجغرافية التي تعالج ملايين الاستعلامات المكانية في الثانية. إن فهم كيفية عملهم لا يجعلك مطورًا أفضل فحسب؛ إنه يغير بشكل أساسي طريقة تفكيرك في التنظيم والبحث من خلال البيانات المكانية. سواء كنت تقوم بإنشاء منصة لوجستية للتسليم، أو لوحة معلومات تحليلية تعتمد على الموقع، أو تحاول ببساطة عرض 50000 نقطة بيانات على لوحة قماشية دون تعطل المتصفح، فإن Quadtrees تقدم حلاً بديهيًا وفعالاً بشكل ملحوظ.

ما هو بالضبط Quadtree؟

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

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

💡 هل تعلم؟

Mewayz تحل محل 8+ أدوات أعمال في منصة واحدة

CRM · الفواتير · الموارد البشرية · المشاريع · الحجوزات · التجارة الإلكترونية · نقطة البيع · التحليلات. خطة مجانية للأبد متاحة.

ابدأ مجانًا →

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

كيفية عمل الإدراج والاستعلام

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

الاستعلام عن النطاق - العثور على جميع النقاط داخل منطقة مستطيلة معينة - هو المكان الذي تتألق فيه الأشجار الرباعية حقًا. بدلاً من التحقق من كل نقطة في مجموعة البيانات الخاصة بك (عملية O(n))، تبدأ من الجذر وتطرح سؤالاً بسيطًا على كل عقدة: هل تتقاطع حدود هذه العقدة مع مستطيل البحث الخاص بي؟ إذا لم يكن الأمر كذلك، فيمكنك تقليم الشجرة الفرعية بأكملها - مما قد يؤدي إلى إزالة آلاف النقاط من الاعتبار في مقارنة واحدة. إذا كان هناك تقاطع، فإنك تتكرر في الأطفال المعنيين. تتم إضافة النقاط الموجودة في العقد الطرفية التي تقع ضمن مستطيل البحث إلى مجموعة النتائج.

فكر في مثال عملي: لديك مجموعة بيانات

Ready to Simplify Your Operations?

Whether you need CRM, invoicing, HR, or all 207 modules — Mewayz has you covered. 138K+ businesses already made the switch.

Get Started Free →

جرب Mewayz مجانًا

منصة شاملة لإدارة العلاقات والعملاء، والفواتير، والمشاريع، والموارد البشرية، والمزيد. لا حاجة لبطاقة ائتمان.

ابدأ في إدارة عملك بشكل أكثر ذكاءً اليوم.

انضم إلى 30,000+ شركة. خطة مجانية للأبد · لا حاجة لبطاقة ائتمان.

وجدت هذا مفيدا؟ أنشرها.

هل أنت مستعد لوضع هذا موضع التنفيذ؟

انضم إلى 30,000+ شركة تستخدم ميويز. خطة مجانية دائمًا — لا حاجة لبطاقة ائتمان.

ابدأ التجربة المجانية →

هل أنت مستعد لاتخاذ إجراء؟

ابدأ تجربة Mewayz المجانية اليوم

منصة أعمال شاملة. لا حاجة لبطاقة ائتمان.

ابدأ مجانًا →

تجربة مجانية 14 يومًا · لا توجد بطاقة ائتمان · إلغاء في أي وقت