एओ * एल्गोरिथ्म कैसे लागू करें?


16

मैंने देखा है कि जब हम खोज एल्गोरिदम को लागू करते हैं तो विभिन्न डेटा संरचनाएं उपयोग की जाती हैं। उदाहरण के लिए, हम A * एल्गोरिथ्म को लागू करने के लिए गहराई-पहली खोज और न्यूनतम-गति को लागू करने के लिए चौड़ाई पहली खोज, ढेर को लागू करने के लिए कतारों का उपयोग करते हैं । इन मामलों में, हमें खोज ट्री को स्पष्ट रूप से बनाने की आवश्यकता नहीं है।

लेकिन मैं एओ * एल्गोरिथ्म की खोज प्रक्रिया का अनुकरण करने के लिए एक सरल डेटा संरचना नहीं पा सकता हूं । मैं जानना चाहूंगा कि क्या खोज वृक्ष का निर्माण स्पष्ट रूप से एओ * एल्गोरिथ्म को लागू करने का एकमात्र तरीका है? क्या कोई मुझे एक कुशल कार्यान्वयन प्रदान कर सकता है?


3
स्वागत हे! कृपया याद रखें कि आपके द्वारा उपयोग की जाने वाली गैर-मानक सामग्री के संदर्भ शामिल हैं। जैसा कि AO * का कोई विकिपीडिया लेख नहीं है, एक लिंक निश्चित रूप से क्रम में है। मुझे आशा है कि मुझे एक अच्छा मिला, कृपया जांचें।
राफेल

1
क्या यह सिर्फ एक ग्राफ नहीं है (एक फ़ंक्शन के साथ जो किसी को "अगले" नोड में स्थानांतरित करने की अनुमति देता है)?
११:

यह मदद करेगा यदि कोई व्यक्ति केवल एओ * एल्गोरिथम से अलग हो जाए तो कैसे स्केच किया जाता है। लिंक से बाहर काफी आंकड़ा नहीं कर सका। कार्यान्वयन के लिए, पेड़ों के लिए कोई भी संरचना उचित लगती है .... यह एक पेड़ का अधिकार है?
vzn 17

जवाबों:


1

इस लेख के बारे में हर बार जब आप AO * एल्गोरिथ्म में एक नोड का विस्तार करते हैं, तो आपको अपने सभी पूर्ववर्तियों की अनुमानित लागत को अपडेट करने के लिए पीछे की ओर जाना होगा।

जब आप नोड्स को समाहित करने के लिए रैखिक डेटा संरचना का उपयोग करते हैं, तो आपको डेटा तत्वों को क्रमिक रूप से पार करना होगा और केवल एक डेटा तत्व को सीधे लिया जा सकता है (स्टैक, कतार, प्राथमिकता कतार ...)।

एओ * में हर बार एक नोड को इसकी अनुमानित लागत के आधार पर विस्तार के लिए लिया जाता है, एल्गोरिथ्म उन सभी नोड्स पर निर्भर करता है जो इसके पूर्ववर्ती हैं (अपनी अनुमानित लागत को अद्यतन करने के लिए)। इसका मतलब है कि कभी-कभी आपको इसकी अनुमानित लागत के आधार पर और कभी-कभी इसके उत्तराधिकारी के आधार पर तत्व लेना चाहिए। ऐसा कोई क्रम नहीं है जो सामान्य स्थिति में इन दोनों स्थितियों को पूरा कर सके। संभवतः "नेस्टेड" रैखिक डेटा संरचनाओं का उपयोग करने का एक तरीका है, लेकिन यह सिर्फ एक पेड़ की संरचना की नकल करना चाहिए, और इसके बजाय खोज पेड़ का निर्माण करना बेहतर होगा।


0

मैं अभी उस विवरण से दूर जा रहा हूं, जिससे आप जुड़े हैं, लेकिन एक बीएसटी के बारे में क्या? आप अनसोल्ड नोड्स को संतुलित करने के लिए इसका निर्माण करने में सक्षम हो सकते हैं। इससे आपको चरण 2 पर समय की बचत हो सकती है, और ट्रैवर्सल्स की संख्या के आधार पर समग्र समय को कम रखने में मदद मिलेगी। बेशक, यदि आपने अपने पेड़ को अनसॉल्वड नोड्स के अनुसार संतुलित / सॉर्ट किया है, तो आप संभवतः कम से कम एक अधिक सरलीकृत डेटा संरचना से बेहतर होंगे, संभवतः लॉगरिदमिक समय के आसपास / आसपास।

http://en.wikipedia.org/wiki/Self-balancing_binary_search_tree


2
तथा क्या आप ऐसा कर सकते हैं?
राफेल

यह मेरे लिए इतना स्पष्ट नहीं है कि BST का उपयोग कैसे किया जाएगा क्योंकि BST में प्रत्येक नोड के लिए एक संख्यात्मक सूचकांक होता है और उनका उपयोग किया जाता है। संख्यात्मक सूचकांक क्या उपयोग किया जाता है?
vzn 17
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.