एक गेम के लिए मैं एक ऐसी स्थिति कर रहा हूं जहां मेरे पास – नंबरों की सूची है [7, 4, 9, 1, 15, 2 ] (इस के लिए A
नाम दिया गया) – और संख्याओं की एक और सूची – कहें [11, 18, 14, 8, 3] (नाम B
) – मुझे प्रदान किया गया। लक्ष्य A
में संख्याओं के सभी संयोजनों को ढूंढना है जो B
में किसी संख्या तक जोड़ते हैं।एक संग्रह में संख्याओं का सेट ढूंढें जो किसी अन्य संख्या में
- 1 + 2 = 3
- 1 + 7 = 8
- 2 + 9 = 11
- 4 + 7 = 11
- 1 + 2 + 4 + 7 = 14: उदाहरण के लिए
- 1 + 2 + 15 = 18
- 2 + 7 + 9 = 18
... और इतने पर। (इस के प्रयोजनों के लिए, 1 + 2
2 + 1
के समान है।)
इस तरह छोटे सूचियों के लिए, यह सिर्फ करने के लिए तुच्छ है, संयोजन जानवर-बल, लेकिन मैं इन हजारों की संख्या में करने के लिए हजारों देखकर की संभावना का सामना करना पड़ रहा है संख्याएं और एप्लिकेशन के जीवनकाल में इस दिनचर्या का बार-बार उपयोग करेंगे। क्या 100% कवरेज के साथ उचित समय में इसे पूरा करने के लिए कोई भी सुरुचिपूर्ण एल्गोरिदम उपलब्ध है? यह असफल रहा, क्या कोई सभ्य हेरिस्टिक है जो मुझे मिल सकता है जो मुझे उचित समय में संयोजनों का "अच्छा पर्याप्त" सेट दे सकता है?
मैं छद्म कोड में या किसी भी साधारण रूप से लोकप्रिय और पठनीय भाषा में एक एल्गोरिदम की तलाश में हूं ("और" वहां ....;) या यहां तक कि केवल एक अंग्रेजी विवरण भी है कि यह कैसे कार्यान्वित करने के बारे में होगा तरह की खोज जोड़ने के लिए
संपादित:
अब तक प्रदान की अच्छी जानकारी के बहुत सारे। धन्यवाद भाई! अब के लिए संक्षेप में:
- समस्या एनपी-पूर्ण है इसलिए उचित समय में 100% सटीकता प्राप्त करने के लिए ब्रूट फोर्स से कम कोई रास्ता नहीं है।
- समस्या को subset sum या knapsack समस्याओं के रूप में देखा जा सकता है। दोनों के लिए प्रसिद्ध हेरिस्टिक हैं जो इस समस्या के अनुकूल हो सकते हैं।
विचारों को आते रहें! और फिर धन्यवाद!
वहाँ elments की एक ऊपरी सीमा या एक नंबर आकार है? यदि आप कम रखना चाहते हैं तो बहुत लंबे इंतजार किए बिना इसकी गणना करना संभव है। – Thariama
कुछ ह्युरिस्टिक का उपयोग करना संभव होना चाहिए यदि कुछ बाधाएं लीवरेज की जा सकती हैं। उदाहरण के लिए, ए और बी निरंतर सरणी के आकार और/या सदस्य हैं? या हो सकता है कि उस संख्या की सीमा जिसकी आपको सामना करना पड़ सकता है सीमित है? – tathagata
@tathagata: संख्या 30 से अधिक नहीं होगी और न ही नीचे जायेगी 1. यह एक बाधा होगी। –