سؤال

أنا أقوم ببناء نقاط جدول طاولة MySQL في أبعاد N، كل بعد يتم فهرستها. نظرا لأي نقطة في نظام N N-VIDEL، أود أن أكون قادرا على إخراج جميع النقاط الأخرى من أجل المسافة الخاصة بهم من النقطة المختارة.

سيكون الحل البسيط لحساب المسافات من كل نقطة باستخدام نظرية Pythagorean ... SQRT (X ^ 2 + y ^ 2) = z. لقد كنت أسعى إلى طريقة أكثر كفاءة. مطلوب أمر تقريبي فقط، لذلك أنا منفتح الذهن.

شكرا.

-غش

هل كانت مفيدة؟

المحلول

جنبا إلى جنب مع ما تم إعطاءه، يمكنك أيضا التفكير في "Binning" النقاط الخاصة بك - أي (على الأقل عقليا) ارسم شبكة حول "خريطة"، وتتبع النقاط المستندة إلى المربع الذي يسقط فيه. في الأساس، تبدأ بالنقاط في نفس الساحة، ثم تلك الموجودة في "حلقة" تحيط بمراحة النقطة المختارة، ثم الحلقة التالية إلى الخارج، وهلم جرا. اعتمادا على حجم الشبكة التي تستخدمها، يمكنك جعل هذا بدقة أو تقريبية كما تريد. بالطبع، توجد شبكة ثنائية الأبعاد للنقاط 2D - إذا كان لديك المزيد من الأبعاد، فسيتعين عليك زيادة أبعاد الشبكة لتتناسب معها.

نصائح أخرى

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top