तो मैं इस ढांचे में ग्रीनफुट नामक 2 डी जावा गेम को शीर्ष बना रहा हूं रहा और मैं उन लोगों के लिए एआई पर काम कर रहा हूं जो आप लड़ने वाले हैं। मैं चाहता हूं कि वे दुनिया भर में वास्तविक रूप से घूमने में सक्षम हों, इसलिए मुझे जल्द ही एहसास हो गया कि, कुछ अन्य चीजों के बीच, मुझे किसी तरह के पथ-प्रदर्शक की आवश्यकता होगी।
मैंने दो ए * प्रोटोटाइप बनाए हैं। एक ग्रिड आधारित है और फिर मैंने एक बनाया जो वेपाइंट के साथ काम करता है इसलिए अब मुझे नोड्स के एक ग्राफ के लिए बाधाओं / इमारतों के 2d "मैप" से निकलने के लिए एक तरह से काम करने की आवश्यकता है जिससे मैं एक रास्ता बना सकता हूं। वास्तविक पाथफाइंडिंग ठीक लगती है, बस मेरी खुली और बंद सूचियाँ एक अधिक कुशल डेटा संरचना का उपयोग कर सकती हैं, लेकिन मुझे इसकी आवश्यकता होगी कि अगर और कब आवश्यकता हो।
मैं aiblog.net पर इस पोस्ट में पंक्तिबद्ध सभी कारणों के लिए एक नेविगेशनल जाल का उपयोग करने का इरादा रखता हूं । हालाँकि, मैंने जो समस्या पेश की है वह यह है कि ए * सोचता है कि बहुभुज केंद्रों / किनारों से सबसे छोटा रास्ता आवश्यक नहीं है यदि आप नोड के किसी भी हिस्से से गुजरते हैं तो सबसे छोटा रास्ता नहीं है। एक बेहतर विचार प्राप्त करने के लिए आप स्टैकओवरफ़्लो पर पूछे गए प्रश्न को देख सकते हैं ।
मुझे दृश्यता ग्राफ के विषय में एक अच्छा उत्तर मिला। मैंने तब से पुस्तक ( कम्प्यूटेशनल ज्यामिति: एल्गोरिथम और एप्लिकेशन ) खरीदी है और विषय में आगे पढ़ा है, हालांकि मैं अभी भी एक नेविगेशनल जाल के पक्ष में हूं ( पथ-खोज के बारे में अमित के नोट्स से " प्रबंध जटिलता " देखें) )। (एक साइड नोट के रूप में, हो सकता है कि मैं संभवतः Theta * का उपयोग कई प्रकार के पॉइंट को एक सीधी रेखा में परिवर्तित करने के लिए कर सकता हूँ यदि पहली और आखिरी अस्पष्ट नहीं है। या हर बार जब मैं सीधे देखने के लिए रास्ते से जाँचता हूँ, तो यह देखने के लिए कि क्या मैं सीधे जा सकता हूँ। यह करने के लिए)
तो मूल रूप से मैं जो चाहता हूं वह एक नेविगेशनल जाल है जहां एक बार मैंने इसे फ़नल एल्गोरिथ्म के माध्यम से डाल दिया है (जैसे कि यह एक से डिगिंग डक ) मुझे सच्चा सबसे छोटा रास्ता मिल जाएगा, बजाय इसके कि एक सबसे छोटा रास्ता हो जो नोड से नीचे नोड तक ही हो। लेकिन वास्तविक नहीं दिया गया है कि आप कुछ बहुभुज और नोड्स / किनारों को छोड़ सकते हैं।
ओह, और मैं यह भी जानना चाहता हूं कि आप बहुविवाह से संबंधित जानकारी को कैसे संग्रहीत करने का सुझाव देते हैं। जिस तरह से प्रोटोटाइप के उदाहरण के लिए मैंने बनाया मैं बस एक नोड के रूप में एक वस्तु था और सभी अन्य नोड्स की एक सूची संग्रहीत की थी जो आप उस नोड से यात्रा कर सकते हैं, मैं अनुमान लगा रहा हूं कि बहुभुज के साथ काम नहीं करेगा? और मैं कैसे बताऊं कि क्या एक बहुभुज खुला है / ट्रैवर्सेबल है या यदि यह एक ठोस वस्तु है? मैं कैसे स्टोर करूं जो नोड्स बहुभुज बनाते हैं?
अंत में, रिकॉर्ड के लिए: मैं इसे स्वयं से खरोंच से प्रोग्राम करना चाहता हूं, भले ही पहले से ही अन्य समाधान उपलब्ध हैं और मैं इस गेम के अलावा किसी अन्य चीज में इस कोड का उपयोग करने का इरादा नहीं करता हूं, इसलिए यह कोई फर्क नहीं पड़ता कि यह अनिवार्य रूप से खराब गुणवत्ता का होगा।