बाधाओं के बढ़ने पर भी A * कुशल है?


30

मैं केवल पथ-खोज के बारे में सीखना शुरू कर रहा हूं और ए * एल्गोरिथ्म में देख रहा हूं और मेरी मुख्य चिंता यह है कि मैंने जिन उदाहरणों को देखा है उनमें से सभी स्थिर बाधाओं को दिखाते हैं जो इसके आसपास गणना करते हैं।

यदि मेरे पास बाधाएं हैं, तो उदाहरण के लिए अन्य पात्रों को कहें, चारों ओर घूमने के साथ-साथ चरित्र को अपने तरीके से ढूंढना होगा, मुझे लगता है कि मुझे एल्गोरिथ्म को प्रत्येक फ्रेम को चलाना होगा, लेकिन मुझे चिंता है कि यह महंगा हो जाएगा हार्डवेयर के लिए प्रत्येक चलते अभिनेता के लिए प्रत्येक फ्रेम को संसाधित करने के लिए।

तो A * अभी भी पर्याप्त उपयोग करने के लिए पर्याप्त है जब भी बाधाएं बढ़ रही हैं, या पथ-खोज का एक और तरीका है जो बाधाओं को अधिक स्पष्टता से संभालता है?

जवाबों:


27

कई एल्गोरिदम हैं जो ए * की तुलना में बहुत तेज़ हैं जब आपको चलती बाधाओं के साथ एक पथ को पुनर्गणना करने की आवश्यकता होती है। "सिंपल रिक्कल्यूशंस" के तहत यहां देखें ।

हालाँकि, आप उनमें से किसी के लिए एक बंद-शेल्फ समाधान खोजने की संभावना नहीं रखते हैं, इसलिए 99% मामलों में वे एक गेम के लिए ओवरकिल हैं। आपका समय एक मौजूदा, पूरी तरह से अनुकूलित ए * समाधान का उपयोग करके बेहतर खर्च किया जाएगा, और गेम में पैथफाइंडिंग को तेज करने के लिए आम मौजूदा ट्रिक्स का उपयोग करना होगा:

  • केवल संक्रामक अंतराल में सबसे अच्छा पथ पुनर्गणना
  • कई इकाइयों के बीच सर्वोत्तम पथ साझा करना ( उदाहरण )
  • एक पदानुक्रमित ग्राफ बनाना ताकि आपको केवल पथ के भाग को पुनर्गणना करना पड़े

आदि आप इन ट्रिक्स के बारे में और अधिक जानकारी इस साइट पर, या अमित के A * पृष्ठों पर पा सकते हैं


10

हाँ। A * अभी भी लगभग हर मामले में जाने का रास्ता है। यह आपकी नोड लागत गणना है जो गतिशील और इसलिए गणना और ट्रैक करने के लिए अधिक जटिल है।

यदि आप पहले से ही जानते हैं कि भविष्य में चलती बाधाएं आपके ए * कहां होंगी तो लागत समारोह में बाधाओं की अस्थायीता को ध्यान में रखा जा सकता है।

उदा: यह नोड 4 टिकों में पहुंच जाएगा, # 3 पर टिक # 6 से कब्जा कर लिया जाएगा, इसलिए इस नोड पर यात्रा की लागत 6 - 4 = +2 है। यह अभी भी सबसे अच्छा रास्ता हो सकता है।

बाधा की यात्रा की दिशा को भी ध्यान में रखना होगा।

यदि आप पहले से नहीं जानते हैं, तो आप बिना किसी बाधा के मान सकते हैं और बाधाएं आने पर पथ को पुनर्गणना कर सकते हैं लेकिन आपको गतिरोध और लाइवलॉक के बारे में कुछ करने की आवश्यकता होगी। (यह लागू होता है यदि आप अनुमान लगा सकते हैं कि बाधाएँ कहाँ होंगी लेकिन यह अपने आप में एक प्रकार का गतिरोध / लाइवलॉक परिहार है और यह आपके उद्देश्य के लिए पर्याप्त हो सकता है।)

एक गतिरोध तब होता है जब दोनों एक दूसरे के हिलने का इंतजार करते हैं और कोई भी हिलता नहीं है।

एक लाइवलॉक तब होता है जब दोनों ( या अधिक <- इस पर विचार करना महत्वपूर्ण है) एक ही दिशा में दूसरे से बचने के लिए आगे बढ़ते हैं और अंत में आगे नहीं बढ़ने के साथ आगे पीछे होते हैं।

लाइवलॉक को हल करना बहुत जटिल हो सकता है और यह पूरी तरह से आपके गेम के टकराव के नियमों और यांत्रिकी पर निर्भर करता है (जैसे: क्या उन्हें बाधा से लड़ना और नष्ट करना चाहिए?)।

यह अक्सर आपकी चलती वस्तुओं को नोड / पथ आरक्षण के लिए वापस आता है (जब वे पथ बदलते हैं या मर जाते हैं तो रद्द करना न भूलें) ताकि अन्य चलती हुई वस्तुएं आगे की योजना बना सकें।

एक बार आपके पास यह जानकारी होने के बाद आप इंटरसेप्शन की योजना भी बना सकते हैं।


19
ओह माय गॉड, "लाइवलॉक" - आपने वर्णन किया है कि भयानक बाएं-दाएं चकमा देने वाली बात मैं अंत में हर समय हॉलवे में करता हूं।
एथन द ब्रेव

2
एक सरल लाइव / गतिरोध समाधान उपलब्ध विकल्पों के बीच बेतरतीब ढंग से लेने के लिए है (जैसे कि 50% गति नहीं करने का मौका और बाएं चलने का 50% मौका)। जब तक प्रत्येक अभिनेता बेतरतीब ढंग से चुनता है, तब तक एक गैर-शून्य मौका है कि ताला हल हो जाएगा।
ड्रेको

@ Draco18s और जब तक कोई रास्ता नहीं देता है, तब तक आगे-पीछे आपके प्रवाह के आकार में तेजी से वृद्धि होती है (मैंने अभी तक वर्णन किया है कि कैसे ईथरनेट टकराव को हल किया जाता है!)
Cort Ammon - Reinstate Monica

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