मेरे पास एक बाइनरी निर्णय पेड़ है। यह फ्लोट की एक सरणी के रूप में इनपुट लेता है, और प्रत्येक शाखा नोड एक इनपुट इंडेक्स पर विभाजित होता है और अंततः मुझे एक पत्ते पर ले जाता है।क्या मैं इसके लिए एक पेड़ की तुलना में एक तेज डेटा संरचना का उपयोग कर सकता हूं?
मैं इस पेड़ पर बड़ी संख्या में लुकअप कर रहा हूं (प्रदर्शन विश्लेषण के अनुसार लगभग 17% निष्पादन समय (संपादित करें: अन्य क्षेत्रों को अनुकूलित करने के बाद यह लगभग 40% है), और मुझे आश्चर्य है कि क्या मैं/लुकअप की गति में सुधार के लिए एक अलग डेटा संरचना का उपयोग करना चाहिए।
किसी प्रकार की हैश तालिका का उपयोग नहीं किया जा सकता है, क्योंकि इनपुट सीधे पत्ती नोड पर मैप नहीं करते हैं, लेकिन मैं सोच रहा था कि किसी के पास पेड़ के स्थान पर उपयोग की जाने वाली विधियों और डेटा-संरचनाओं के रूप में कोई सुझाव था (या साथ ही?) लुकअप की गति में सुधार करने के लिए।
मेमोरी एक चिंता है, लेकिन गति से चिंता का कम है।
कोड वर्तमान में सी # में लिखा गया है, लेकिन जाहिर है कि किसी भी विधि को लागू किया जा सकता है।
संपादित करें: पोस्ट करने के लिए थोड़ा अधिक कोड है, लेकिन मैं पेड़ के बारे में अधिक जानकारी दूंगा।
पेड़ सूचना लाभ गणनाओं का उपयोग करके उत्पन्न होता है, यह हमेशा 50/50 विभाजन नहीं होता है, विभाजन मूल्य किसी भी फ्लोट मान हो सकता है। उस इनपुट पर संकल्प को बढ़ाने के लिए एक ही इनपुट को कई बार विभाजित किया जा सकता है।
मैं iterator यहाँ के प्रदर्शन के बारे में प्रश्न पोस्ट:
Micro optimisations iterating through a tree in C#
लेकिन मुझे लगता है मैं डेटा संरचना में ही देखने के लिए प्रदर्शन में सुधार करने के लिए आगे की आवश्यकता हो सकती।
मैं यहां जितना संभव हो उतना प्रदर्शन करने का लक्ष्य रख रहा हूं। मैं मशीन सीखने की एक नई विधि पर काम कर रहा हूं, और पेड़ फीडबैक लूप का उपयोग कर खुद बढ़ता है। जिस प्रक्रिया के लिए मैं काम कर रहा हूं, उसके लिए मुझे लगता है कि यह कई महीनों तक चल रहा है, इसलिए यहां कुछ% बचत और भारी है। अंतिम लक्ष्य बहुत अधिक स्मृति का उपयोग किए बिना गति है।
शब्दकोश जो एक नक्शा हो सकता है –
आप कहते हैं कि आपके पास एक बाइनरी पेड़ है और प्रत्येक नोड पर इनपुट एक फ्लोट है - क्या 'इनपुट <0.5' के आधार पर बाल नोड की आपकी पसंद है या क्या कुछ और जटिल चल रहा है ? क्या आप कुछ कोड पोस्ट कर सकते हैं? इसके अलावा: निष्पादन समय का 17% बहुत प्रासंगिक नहीं है - यह बहुत तेज़ हो सकता है! क्या आपके पास कोई लक्ष्य है जिसका लक्ष्य आप लक्षित कर रहे हैं, या उस प्रोफाइलिंग के बारे में अधिक जानकारी जो आप साझा कर सकते हैं? –
धन्यवाद दान, मैंने पेड़ और लक्ष्यों के बारे में कुछ और विवरण जोड़ा है। –