2012-01-06 19 views
6

मुझे अपनी पाठ्यपुस्तक में यह समस्या है: एन वस्तुओं के समूह को देखते हुए, प्रत्येक एक अलग मान V (i) के साथ, आइटम को 3 समूहों में विभाजित करने का सबसे अच्छा तरीका क्या है ताकि उच्चतम मूल्य वाले समूह को न्यूनतम किया जा सके? इस सबसे बड़े समूह का मूल्य दें।वस्तुओं के समूह को 3 अलग-अलग समूहों में विभाजित करने के लिए एल्गोरिदम क्या है?

मुझे पता है कि इस समस्या के 2 ढेर संस्करण को कैसे करें: इसे केवल समस्या पर पीछे की ओर एपगोरिदम चलाने की आवश्यकता है। हालांकि, मैं इस समस्या को हल करने के तरीके के बारे में बहुत परेशान हूं। क्या कोई मुझे कोई संकेत दे सकता है?

उत्तर: सुंदर ज्यादा 0-1 नैपसैक के रूप में एक ही बात है, हालांकि 2 डी

+0

चूंकि यह आया और गायब हो गया, यहां लालची विफलता {100, 51, 49, 40, 30, 20, 10} का एक उदाहरण दिया गया है। इष्टतम उत्तर सही विभाजन है, लालच से छोटे समूह को सबसे बड़ा असाइन किए गए तत्व को लागू करना नहीं है। – ccoakley

+0

मेरे पास एक ही पाठ्यपुस्तक है। ब्रायन डीन ने मुझे यह दिया;) – joshim5

उत्तर

1

कठिन होमवर्क समस्या। यह अनिवार्य रूप से 3-विभाजन समस्या का अनुकूलन संस्करण है।

http://en.wikipedia.org/wiki/3-partition_problem

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

अद्यतन: मैं क्षमा चाहता हूं। मैंने तुम्हें गुमराह किया है। 3-विभाजन समस्या इनपुट को 3 के सेट में विभाजित करती है, न कि 3 सेट। मैंने जो कुछ भी कहा वह अभी भी लागू होता है, लेकिन नवीनीकृत आशा के साथ कि आपका संस्करण दृढ़ता से पूर्ण नहीं है।

+0

मैंने समस्या में कुछ जानकारी जोड़ दी है। –

+0

@RichieLi ईमानदार प्रश्न: समस्या को खराब न करने के लिए आप मेरे लिए कितना विस्तार चाहते हैं? यानी वांछित पुनरावृत्ति संबंध बहुत अधिक है (नहीं कि मेरे पास है, मुझे इसे खुद से बाहर करना होगा)? – ccoakley

+0

हू, मैं इसे खुद से बाहर करने की कोशिश करूंगा। यह शाम को देय है, इसलिए अगर मुझे और मदद की ज़रूरत है तो मैं वापस आऊंगा। –

0

मुझे "बेस्ट" गणितीय बोलने के बारे में पता नहीं है, लेकिन एक स्पष्ट दृष्टिकोण समूह के आबादी को प्रत्येक समूह में एक आइटम के साथ शुरू करना होगा। फिर, जब तक आपके पास अंतिम समूहों की वांछित संख्या की तुलना में अधिक समूह होते हैं, तो निम्न समूहों को निम्नतम मानों के साथ निकालें और उन्हें एक नए समूह में संयोजित करें जिसे आप संग्रह में वापस जोड़ते हैं। यह हफमैन संपीड़न के पेड़ों के निर्माण के समान है।

उदाहरण:

1 3 7 9 10 
becomes 
4(1+3) 7 9 10 
becomes 
9 10 11(1+3+7) 
+0

हमने अभी तक इसके बारे में नहीं सीखा है, इसलिए मुझे नहीं लगता कि मुझे इस समस्या पर इसका उपयोग करना चाहिए। –

+1

नाइट्स चुनना: लालची दृष्टिकोण हफमैन मामले (निश्चित वर्णमाला के परिवर्तनीय लंबाई एन्कोडिंग के लिए) में इष्टतम है। यह केवल विभाजन के लिए उचित रूप से निष्पादित करता है यदि समस्या में संख्या अच्छी तरह से वितरित की जाती है (जहां मैं "अच्छी तरह से" शब्द से अधिक सटीक नहीं हो सकता)। यह देखते हुए कि प्रश्न "गतिशील प्रोग्रामिंग" टैग किया गया था, मुझे लगता है कि असाइनमेंट का उद्देश्य लालची तकनीक का उपयोग नहीं करना था। – ccoakley

0

Let च [मैं] [जे] [k] अर्थ है कि यह पहले सेट में मूल्य j और मूल्य कश्मीर दूसरे सेट में संभव है, के साथ पहले मैं आइटम करता हूं।

तो हमारे पास f[i][j][k] = f[i-1][j-v[i]][k] or f[i-1][j][k-v[i]] है।

और शुरुआत में हमारे पास f[0][0][0] = True है।

प्रत्येक f[i][j][k] = True के लिए, अपना उत्तर अपडेट करें कि आप को को कैसे परिभाषित करते हैं, इस पर निर्भर करता है।

+0

लेकिन ith आइटम वैकल्पिक रूप से तीसरे सेट में जा सकता है, इसलिए मुझे लगता है कि यह 'f [i] [j] [k] = f [i-1] [jv [i]] [k] या f [i -1] [जे] [केवी [i]] या एफ [i-1] [जे] [के] '। –

+0

इसके अलावा, कुछ I, j, k जहां समाधान [i] [j] [k] = True के समाधान पर विचार करते समय, इसे केवल वर्तनी करने के लिए, आप s [i] - j का उपयोग करके तीसरे सेट के वजन की गणना करेंगे - के, जहां एस [i] पहले i आइटम्स के वजन का योग है (शुरुआत में रैखिक समय में प्रीकंप्यूटेड)। –

+0

@j_random_hacker हाँ, आप सही हैं। मेरी गलती – Topro

संबंधित मुद्दे

 संबंधित मुद्दे