इसलिए हाल ही में मैंने इस प्रोग्रामिंग समस्या पर हमला किया जो मुझे जटिलता कम नहीं कर सका (मेरा वर्तमान कोड ओ (एन^2) में चलता है)।2 अलग-अलग सरणी में तत्वों के सभी जोड़ों को तुरंत कैसे प्राप्त करें
अनिवार्य रूप से, मेरे पास चार अलग-अलग सूचियां हैं (मैं पाइथन बीटीडब्लू का उपयोग कर रहा हूं) सकारात्मक और नकारात्मक दोनों, सूचियों ए, बी, सी, डी। अब, इनमें से प्रत्येक सूची में 1000 पूर्णांक हैं, और इन पूर्णांक -25000 से 25000 समावेशी तक है। अब, इन सूचियों में से प्रत्येक से मान लें कि हम एक पूर्णांक चुनते हैं, ए, बी, सी, डी कहते हैं। मैं इन ए, बी, सी, डी को खोजने का सबसे तेज़ तरीका चाहूंगा कि एक + बी = - (सी + डी)।
वर्तमान में, मेरी विधि ए, बी, और सी, डी के प्रत्येक संभावित संयोजन के माध्यम से फिर से स्थापित करने पर निर्भर करती है, यह निर्धारित करने की कोशिश कर रही है कि सेट में कोई तत्व सेट (ए + बी) सेट में मौजूद है - (सी + घ)। यह, ज़ाहिर है, यह अव्यवहारिक है क्योंकि यह ओ (एन^2) समय में चलता है, और भी बड़ी सूची आकार (1000) पर विचार करता है।
इसलिए मैं सोच रहा था कि कोई भी अधिक कुशल तरीके से सोच सकता है (अधिमानतः ओ (एन लॉग एन) या छोटा), यदि संभव हो तो पाइथन में कोडित।
क्षमा करें अगर यह भ्रमित है। यदि आपके कोई प्रश्न हैं तो कृपया मुझे सूचित करें, मैं और स्पष्टीकरण प्रदान करने की कोशिश करूंगा।
संपादित करें:
यह समस्या एक बड़ी समस्या का हिस्सा है। बड़ी समस्या बताती है कि यदि हमारे पास प्रत्येक में अधिकतम 1000 पूर्णांक वाले संख्याओं के 4 अनुक्रम हैं, तो ए, बी, सी, डी कहें, ए, बी, सी, डी जैसे कि + बी + सी + डी = 0 खोजें।
मैंने उपरोक्त प्रश्न पूछा क्योंकि एक + बी + सी + डी = 0 का तात्पर्य है कि एक + बी = - (सी + डी), जो मैंने सोचा था कि समस्या को हल करने का सबसे तेज़ तरीका होगा। अगर कोई भी तेज़ तरीका सोच सकता है, तो कृपया इसे मेरे साथ साझा करें।
अग्रिम धन्यवाद! :)
क्या आप उस परिस्थिति पर लागू होने वाले सभी संयोजनों की तलाश में हैं? – Whud
हां, ऐसा है। यह आश्वासन दिया जाता है कि कम से कम 1 ऐसा संयोजन होगा। –
सबसे बुरे मामले में, जब सी = -ए और डी = -बी, आपके पास Θ (n^2) समाधान होंगे, इसलिए आपके एल्गोरिदम को उस आउटपुट का उत्पादन करने के लिए कम से कम n^2 चरणों की आवश्यकता होगी। – Bolo