एक्सेल: संख्याओं का एक सबसेट खोजें, जो किसी दिए गए कुल में जोड़ते हैं?


10

मेरे पास संख्याओं का एक स्तंभ है (इसे A1: A100 कहते हैं) और मुझे उनमें से एक उपसमूह खोजने की आवश्यकता है जो एक निश्चित कुल योग है।


सामान्य ज्ञान: यह एक एनपी-पूर्ण समस्या का एक उदाहरण है: en.wikipedia.org/wiki/Subset_sum_problem
डेव एल।

जवाबों:


25

यह सॉल्वर ऐड-इन * के साथ संभव है। एक्सेल 2007 और 2010 में मेरे लिए निम्न चरणों ने काम किया।

  1. परिणाम को पकड़ने के लिए एक सेल नामित करें (इस उदाहरण के लिए C1) - यह लक्ष्य सेल है, और एक स्तंभ जो एक्सेल खरोंच-काम के लिए उपयोग कर सकता है (बी 1: बी 100 इस उदाहरण के लिए)
  2. लक्ष्य सेल में, सूत्र = "SUMPRODUCT (A1: A100, B1: B100)" (कोई उद्धरण नहीं) दर्ज करें। इससे A1 * B1 + A2 * B2 + ... आदि की गणना होगी
  3. सॉल्वर खोलें (डेटा टैब, विश्लेषण समूह)
  4. लक्ष्य सेल स्पष्ट होना चाहिए (इस उदाहरण के लिए $ C $ 1)
  5. 'समान के लिए:' का मान चुनें: 'और' वांछित मान 'प्रविष्ट करें
  6. 'सेलिंग चेंजिंग सेल' में "$ B $ 1: $ B $ 100" दर्ज करें (कोई उद्धरण नहीं है, और इन मानों को 0 अपने आप में प्रारंभ करना आवश्यक हो सकता है)
  7. कोशिकाओं में एक बाधा जोड़ें जिन्हें बदला जा सकता है। पुल-डाउन में, 'बिन' (बाइनरी) का चयन करें। यह इन कोशिकाओं के मान को 0 तक सीमित करता है (योग से संबंधित A कोशिका को हटाकर) या 1 (योग में संबंधित A कक्ष को जोड़कर)।
  8. 'समाधान' पर क्लिक करें और प्रतीक्षा करें। जिन संख्याओं को आप खोज रहे हैं, उन सबसेट का एक भाग B कॉलम में 1 होगा

उदाहरण


यदि सॉल्वर को एक लंबा समय लग रहा है, तो आप उन पंक्तियों को हटाकर मदद कर सकते हैं जो स्पष्ट रूप से काम नहीं करेंगे (कुल डॉलर में है, और केवल एक पंक्ति में नॉनजरो सेंट है)


बोनस: आप उन कोशिकाओं को स्वचालित रूप से हाइलाइट कर सकते हैं जिन्हें आप उन कक्षों में सशर्त स्वरूपण जोड़कर देख रहे हैं। उन सभी कक्षों का चयन करें जिन्हें आप प्रारूपित करना चाहते हैं और (होम टैब) >> (शैलियाँ समूह) >> सशर्त स्वरूपण >> नया नियम चुनें 'कौन-सी कक्ष स्वरूपित करें' यह निर्धारित करने के लिए एक सूत्र का उपयोग करें। सूत्र में, '= $ B1 = 1' (कोई उद्धरण नहीं) दर्ज करें जो कि बी कॉलम में संबंधित पंक्ति 1 होने पर सत्य का मूल्यांकन करेगा। प्रारूप के लिए, आप जो चाहें जोड़ सकते हैं (बोल्ड, इटैलिक, ग्रीन फिल, आदि)।

महत्वपूर्ण पंक्तियों को खोजने का एक और आसान तरीका कॉलम बी जेड-> ए को सॉर्ट करना है, और सभी 1 शीर्ष पर आ जाएंगे।


* इन चरणों के साथ सॉल्वर ऐड-इन स्थापित किया जा सकता है

  1. Microsoft Office बटन पर क्लिक करें और फिर Excel विकल्प पर क्लिक करें।
  2. ऐड-इन्स पर क्लिक करें और फिर मैनेज बॉक्स में, एक्सेल ऐड-इन्स चुनें।
  3. Go पर क्लिक करें।
  4. ऐड-इन्स उपलब्ध बॉक्स में, सॉल्वर ऐड-इन चेक बॉक्स का चयन करें और फिर ठीक पर क्लिक करें। (यदि ऐड-इन उपलब्ध बॉक्स में सॉल्वर ऐड-इन सूचीबद्ध नहीं है, तो ऐड-इन का पता लगाने के लिए ब्राउज़ पर क्लिक करें।)
  5. यदि आपको संकेत मिलता है कि सॉल्वर ऐड-इन वर्तमान में आपके कंप्यूटर पर स्थापित नहीं है, तो इसे स्थापित करने के लिए हाँ पर क्लिक करें।

1
एक्सेल 2013 में आपको विकल्प मेनू से "इंटेगर इंटेन्गर बाधाओं को अनदेखा" करने की आवश्यकता है। अन्यथा आप 0 और 1 के लिए गैर INT मान प्राप्त करते हैं
उमर शाहीन जूल

1
इस कार्य को ठीक से करने के लिए: 1. सेल C1 में सूत्र को समरूपता (केवल योग नहीं) होना चाहिए। कॉलम बी में कोशिकाओं को सभी में शून्य इनपुट होना चाहिए।

धन्यवाद! मेरे लिए, पुराने चरण अभी भी काम कर रहे हैं, लेकिन मुझे sumproduct बेहतर लगता है क्योंकि यह सरणी सूत्रों की सुविधा पर निर्भर नहीं करता है।
नैट पार्सन्स

वैसे भी सभी संयोजनों को खोजने के लिए ... हालांकि सॉल्वर द्वारा पाया जाने वाला एक समाधान है .. दूसरे समाधानों को कैसे खोजना है ??? मेरी सरणी यहाँ है: v = [1100, 1105, 11830, 14790, 2325, 2455, 2555, 2935, 3050, 3150, 3150, 3185, 3370, 3475, 350, 3530, 3590, 3680, 3780, 3745, 885, 9624] योग = 43029 ... solution1 = [350, 1100, 2325, 2555, 2555, 2935, 3150, 3745, 9624, 14790], solution2 = [350, 885, 1100, 1105, 2325, 2455, 2555, 3530, 3590, 3680 , 9624, 11830]
ihightower

2

एक्सेल ऐड-इन सममच में एक कम लागत है , जो उन संख्याओं के सबसेट को उजागर करेगा जो लक्ष्य राशि तक जोड़ते हैं।

यहाँ छवि विवरण दर्ज करें


1
नमस्ते AIsoft, अच्छा लगता है। शायद अगली बार आप कुछ और जानकारी जोड़ सकते हैं।
निक्सन

@pnuts क्या मुझसे गलती हुई? मुझे समझ में नहीं आ रहा है कि आपके पास AUD $ 30 का क्या मतलब है
nixda

@pnuts आह ठीक है, यह एक अच्छी बात है।
निक्‍का

6
खुद के लिए नोट: AUD $ 30 = 30 ऑस्ट्रेलियाई अमेरिकी डॉलर। एक निश्चित सेल के साथ एक्सेल सेल [AUD30] के लिए इसका संदर्भ नहीं है ....: D
nixda

1
मूल्य टैग एक दोष है, जैसा कि स्पष्ट निर्देशों की कमी है। उत्पाद की वेबसाइट से 1 वाक्य + 1 चित्र से अधिक कुछ भी, वास्तव में।
नैट पार्सन्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.