2013-06-27 11 views
7

मान लें कि मेरे पास 2-आयामी अंतरिक्ष में एक ऑब्जेक्ट है, और बिंदुओं का एक सेट है जिसे मुझे उस ऑब्जेक्ट को देखने की आवश्यकता है। अंक किसी भी समय जोड़ा जा सकता है, लेकिन हटाया नहीं गया है।2-आयामी अंतरिक्ष में सबसे छोटा पथ और सॉर्टिंग पॉइंट

मैं क्या चाहता हूँ जहाँ मेरे वस्तु O (एलजी (एन)) समय में है करने के लिए अगले निकटतम बिंदु निर्धारित करने के लिए सक्षम होने के लिए है, तो यह करने के लिए जाना है, तो यह निर्धारित निकटतम, आदि ..

एक साधारण प्राथमिकता कतार इस के लिए काम नहीं करती है क्योंकि ऑब्जेक्ट स्थिति बदल रहा है, इसलिए जब भी यह चलता है तो कतार को फिर से व्यवस्थित करने की आवश्यकता होगी। मैं किसी भी तरह से बीएसटी में अंक को सॉर्ट करने की कल्पना कर रहा था, लेकिन मुझे यह सुनिश्चित नहीं है कि (x, y) के संबंध में कैसे क्रमबद्ध किया जाए या यदि यह भी संभव हो।

ऐसा लगता है कि मैं इसे महसूस किए बिना traveling salesman को हल करने का प्रयास कर सकता हूं, यदि हां, तो मैं हाहा माफी माँगता हूं।

उत्तर

6

एक विकल्प अंतरिक्ष में सभी बिंदुओं को स्टोर करने के लिए एक क्वाड्री या के-डी पेड़ जैसे अंतरिक्ष विभाजन पेड़ का उपयोग करना होगा। ये डेटा स्ट्रक्चर कुशलता से (आमतौर पर सबलाइनर समय में) फॉर्म के समर्थन प्रश्न "पी को इंगित करने के निकटतम बिंदु क्या हैं?" इसके बाद आप निम्न कार्य कर सकते हैं:

  1. अंतरिक्ष में बिंदुओं के लिए एक स्पेस विभाजन पेड़ बनाएं।
  2. अपने शुरुआती बिंदु के निकट बिंदु बिंदु खोजने के लिए पेड़ का उपयोग करें।
  3. निम्नलिखित दोहराएं:
    1. बिंदु पी पर जाएं।
    2. पेड़ से पी निकालें।
    3. अपने वर्तमान स्थान के निकटतम बिंदु होने के लिए पी सेट करें।

आशा है कि इससे मदद मिलती है!

+0

वह एक चलती वस्तु चाहता है। – Bytemain

+0

@Pppdna वह एक चलती वस्तु चाहता है। वह ऑब्जेक्ट रखने वाले किसी भी बिंदु पर क्या होता है कुशलतापूर्वक गणना करने के लिए समर्थन प्राप्त करके इसे प्राप्त कर सकता है। – btilly

+0

हां। लेकिन यह बदलते समय पेड़ में डालने के लिए चल रहा है और महंगा है। इसके अलावा कुछ भी है। काला और सफेद अक्सर वही होता है। – Bytemain

संबंधित मुद्दे