2016-03-19 9 views
5

मैं googled केवल जी मूल्य का अनुमान गलत तरीके प्राप्त करने के लिए "नेविगेशन जाल पर एक * एल्गोरिथ्म", इसएक प्रारंभ और लक्ष्य को देखते हुए, नेविगेशन जाल में सबसे छोटा रास्ता कैसे ढूंढें?

enter image description here

की तरह या इस enter image description here

नीले रंग की लंबाई संक्षेप द्वारा लाइन सेगमेंट, हमें जी-वैल्यू मिलती है, लेकिन यह अतिरंजित है (जी-वैल्यू को कम करके आंका जाना चाहिए)। यह एल्गोरिदम एक अनुकूलित पथ लौटाएगा, लेकिन सबसे कम होने की गारंटी नहीं है।

नेविगेशन जाल के आधार पर एक दृश्यता ग्राफ खींचने का एकमात्र तरीका है। लेकिन यह बहुत अधिक स्मृति खर्च करेगा।

enter image description here

वहाँ एक नेविगेशन में सबसे छोटा रास्ता जाल गणना करने के लिए किसी भी अन्य तरीके हैं?

+0

मुझे लगता है कि आपको ए * एल्गोरिदम का थोड़ा और अध्ययन करना चाहिए, यह बताएं कि यह क्या धारणा करता है और इसकी क्या गारंटी देता है। इसके साथ, आप अधिक सार्थक प्रश्न पूछने में भी सक्षम होंगे। उदाहरण के लिए, आपके प्रश्न में * * * ए * आउटपुट के बारे में गलत विचार करने की सटीक परिभाषा नहीं है। –

+0

@UlrichEckhardt ए * सही है, लेकिन मैं सीधे * नेविगेशन ग्राफ जाल के लिए ए * एल्गोरिदम लागू नहीं कर सकता। * * सामान्य ग्राफ को नोड्स और किनारों के साथ चाहिए ताकि यह सबसे छोटा रास्ता खोजने के लिए एक डिजस्ट्रा जैसी खोज लागू कर सके। खोज पूरी हो गई है, अब जिस पथ को वापस लौटाया गया है उससे कोई रास्ता छोटा नहीं हो सकता है। लेकिन नेविगेशन जाल सिर्फ नोड्स और किनारों वाला ग्राफ नहीं है, इसमें पास करने योग्य क्षेत्र शामिल हैं, इसलिए मैंने नेविग जाल पर ए * को कैसे लागू कर सकते हैं। – iouvxz

+0

उन लेखों में या तो ज़िग ज़ाग पथ सभी बहुभुज के सेंट्रॉइड या ज़िग ज़ैग पथों के माध्यम से सभी किनारों के मध्य बिंदु के माध्यम से जी-वैल्यू के माध्यम से जा रहे हैं। लेकिन यह गलत है, इस प्रकार के जी-वैल्यू ने दूरी से अधिक दूरी को बढ़ाया वर्तमान बहुभुज (या किनारे) के लिए बिंदु शुरू करें। तो जब खोज पूरी हो जाती है, तो सभी अनचेक पथ अतिरंजित और त्याग दिए जाते हैं। – iouvxz

उत्तर

2

आपके सबसे महत्वपूर्ण पथ के करीब एक छोटा रास्ता पाने के लिए, आपको फिक्स पॉइंट्स का उपयोग करना बंद कर देना चाहिए क्योंकि ए-स्टार नोड्स यानी त्रिभुजों के केंद्र या त्रिकोणों के केंद्र का उपयोग करना बंद कर दें।

अंक को ए-स्टार प्रचार के रूप में स्थानांतरित करने का प्रयास करें। उदाहरण के लिए, एक सितारा जो कर रहे हैं triangles'edge पर नोड्स का उपयोग करें:

  • या तो खंड पिछले एक सितारा नोड और गंतव्य द्वारा गठित के साथ अगले एक सितारा नोड के त्रिकोण के किनारे के चौराहे

  • या चौराहे अगले एक सितारा नोड के त्रिकोण के किनारे पर ऊपर उल्लेख से निकटतम बिंदु

या, अपने ए-स्टार की गणना के रूप में वर्तमान में किया के बाद पथ नोड्स को बदलने के लिए, इसी तरह के उपयोग का प्रयास करें मानदंड।

ध्यान दें कि यह अंतिम पथ (आपके चित्रों पर लाल रेखा के रूप में) को सुचारू बनाएगा। लेकिन यह केवल अतिवृद्धि को कम करने में मदद करेगा, यह आपके द्वारा किए गए सबसे छोटे पथों को खोजने की गारंटी नहीं देता है।

बेहतर, a.k.a फ़नल एल्गोरिदम खींचने वाली स्ट्रिंग का उपयोग करके त्रिकोणों के केंद्र का उपयोग करके अपने ए-स्टार की गणना करने के बाद पथ नोड्स को बदलने का प्रयास करें। यह आपको ए-स्टार के आउटपुट पथ से घिरे त्रिकोणों के माध्यम से सबसे छोटा रास्ता देगा।

+0

मैंने अंततः सी ++ में एक दृश्यता ग्राफ जनरेटर को लागू करने का चयन किया, यह एकमात्र उचित समाधान है। – iouvxz

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