त्रिकोणासन A * (TA *) पाथफाइंग एल्गोरिथम


11

मुझे त्रिभुज A * (TA *) एल्गोरिथ्म को समझने में मदद की ज़रूरत है जो कि Demyen द्वारा 76-81 पेजों पर अपने पेपर कुशल त्रिभुज-आधारित पाथफाइंडिंग में वर्णित है ।

वह वर्णन करता है कि त्रिकोणीयकरण के लिए नियमित रूप से ए * एल्गोरिदम को कैसे अनुकूलित किया जाए, अंतिम नोड तक पहुंचने / विस्तारित होने के बाद भी, संभवतः अन्य इष्टतम मार्गों की खोज करने के लिए। रेगुलर A * तब बंद हो जाता है जब अंतिम नोड का विस्तार होता है, लेकिन त्रिकोणीय ग्राफ़ में उपयोग किए जाने पर यह हमेशा सबसे अच्छा पथ नहीं होता है। यह वास्तव में मैं कर रहा हूँ समस्या है।

समस्या पृष्ठ 78 पर चित्रित की गई है, चित्र 5.4: यहाँ छवि विवरण दर्ज करें

मैं समझता हूं कि कागज में प्रस्तुत जी और एच मूल्यों की गणना कैसे करें (पृष्ठ 80)।

और मुझे लगता है कि खोज रोक स्थिति है:

if (currentNode.fCost > shortestDistanceFound)
{
    // stop
    break;
}

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

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

जवाबों:


3

मैंने इसे लागू नहीं किया है, लेकिन जैसा कि मैंने इसे पढ़ा है, मुझे लगता है कि आप ऐसा कुछ करेंगे:

shortestDistance = infinity
do A* with modified g cost
    if node.fCost > shortestDistance (section 5.5)
        don't open node
    if node.isGoal()
        run funnel algorithm (string pulling)
        update shortestDistance

अंतर यह है कि भले ही आप लक्ष्य के लिए एक रास्ता खोज लें , लेकिन यह जरूरी नहीं कि सबसे छोटा रास्ता हो। लेकिन आप सबसे छोटे रास्ते पर ऊपरी सीमा में सुधार करते रहेंगे, जिसका अर्थ है कि आपको सभी नोड्स खोलने की आवश्यकता नहीं होगी। अंततः आपका खुला सेट खाली होना चाहिए, और आपके द्वारा अब तक का सबसे अच्छा रास्ता सबसे छोटा होना चाहिए।

संशोधित जी लागत जिसका वह वर्णन करता है वह एक बड़े कमज़ोर की तरह लगता है, इसलिए मुझे संदेह है कि यह व्यवहार में कितना अच्छा है।


हम्म, मैं गलत हो सकता है, लेकिन मैं इस बात की व्याख्या कर रहा हूं कि खुली सूची में जोड़ने के लिए शर्त के बजाय रोक स्थिति। निम्नलिखित सूची खुली सूची में जोड़ने के लिए स्थिति की तरह लगती है: "एक साइड नोट के रूप में, एक विशेष राज्य त्रिभुज के लिए खोज राज्य का एक बच्चा उत्पन्न नहीं होगा यदि उस त्रिभुज के अनुरूप एक राज्य पहले से ही उस राज्य का पूर्वज है।" बहिष्कार किया जा सकता है क्योंकि यह कभी भी एक इष्टतम मार्ग को समाप्त नहीं करेगा, केवल एक जो इसके भाग को हटाकर छोटा हो सकता है, जैसा कि थ्योरम 4.3.4 में कहा गया है। "
मॉर्लेसलेस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.