बहुत से लोग बैकपैक को पैक करने के तथाकथित कार्य को जानते हैं।
मुझे आपको संक्षेप में याद दिलाना है: वस्तुओं के ढेर से आपको इस तरह का चयन करने की आवश्यकता है कि बैकपैक नेत्रगोलक के लिए crammed है और इसे अभी भी निकाल दिया जा सकता है।
अधिक औपचारिक रूप से बोलते हुए, इस सेट से आवश्यक है कि संख्याओं के जोड़े A (i) b (i) का चयन करें ताकि संख्याओं का योग पूर्व निर्धारित S से अधिक न हो, और संख्याओं का योग अधिकतम हो। Σa (n)) S, Σb (n) = मैक्स।
स्रोत सेट:
| | | | | | | | | | | Σ |
एक | 3 | 14 | 25 | 26 | 32 | 2 | 28 | 23 | 1 | 9 | 163 |
ख | 11 | 12 | 5 | 30 | 31 | 25 | 19 | 27 | 32 | 33 | 225 |
अंतिम कॉलम सभी वस्तुओं के कुल वजन और उनकी कुल लागत को दर्शाता है। सेट S (वहन क्षमता) Sa से अधिक नहीं होनी चाहिए, अन्यथा समाधान तुच्छ है - हम सब कुछ ले सकते हैं। इन सीमाओं को देखते हुए, कुल लागत ,b का उपयोग करके, हम यह मूल्यांकन कर सकते हैं कि परिणामी समाधान की कुल लागत निरपेक्ष अधिकतम से कितनी भिन्न है।
इस समस्या को हल करने के कई तरीके हैं, उन्हें विकिपीडिया में वर्णित किया गया है।
हम "लालची" एल्गोरिथ्म में रुचि रखते हैं।
इसमें प्रत्येक जोड़ी के मान d = a / b की गणना की जाती है, जिसके द्वारा जोड़े को क्रमबद्ध किया जाता है और फिर चुना जाता है।
मान सेट d:
| | | | | | | | | | | Σ |
एक | 3 | 14 | 25 | 26 | 32 | 2 | 28 | 23 | 1 | 9 | 163 |
ख | 11 | 12 | 5 | 30 | 31 | 25 | 19 | 27 | 32 | 33 | 225 |
घ | 3.67 | 0.86 | 0.2 | 1.15 | 0.97 | 12.5 | 0.68 | 1.17 | 32.0 | 3.67 | |
D सेट द्वारा सॉर्ट किया गया
| | | | | | | | | | | Σ |
एक | 1 | 2 | 3 | 9 | 23 | 26 | 32 | 14 | 28 | 25 | 163 |
ख | 32 | 25 | 11 | 33 | 27 | 30 | 31 | 12 | 19 | 5 | 225 |
घ | 32.0 | 12.5 | 3.67 | 3.67 | 1.17 | 1.15 | 0.97 | 0.86 | 0.68 | 0.20 | |
आइए S = 60 पर एक समाधान खोजने की कोशिश करते हैं।
| | | | | | | | | | | Σ |
एक | 1 | 2 | 3 | 9 | 23 | 26 | 32 | 14 | 28 | 25 | 163 |
ख | 32 | 25 | 11 | 33 | 27 | 30 | 31 | 12 | 19 | 5 | 225 |
घ | 32.0 | 12.5 | 3.67 | 3.67 | 1.17 | 1.15 | 0.97 | 0.86 | 0.68 | 0.20 | |
पहले पांच आइटम हमें fivea = 38, =b = 128 देंगे। अगला आइटम फिट नहीं है। इसके साथ, ita = 64।
पहले पाँच वस्तुओं को बिछाने के बाद जो छेद छोड़ा गया उसका आकार निकला: 60-38 = 22। यदि आप सेट को अंत तक देखते हैं, तो एक और वस्तु है जो इस छेद में रखी गई है।
| | | | | | | | | | | Σ |
एक | 1 | 2 | 3 | 9 | 23 | 26 | 32 | 14 | 28 | 25 | 163 |
ख | 32 | 25 | 11 | 33 | 27 | 30 | 31 | 12 | 19 | 5 | 225 |
घ | 32.0 | 12.5 | 3.67 | 3.67 | 1.17 | 1.15 | 0.97 | 0.86 | 0.68 | 0.20 | |
कुल: .a = 52, Σb = 140।
दुर्भाग्य से, यह एक इष्टतम समाधान नहीं है।
यदि हम आइटम को 23-27 से 26-30 के साथ प्रतिस्थापित करते हैं,
| | | | | | | | | | | Σ |
एक | 1 | 2 | 3 | 9 | 23 | 26 | 32 | 14 | 28 | 25 | 163 |
ख | 32 | 25 | 11 | 33 | 27 | 30 | 31 | 12 | 19 | 5 | 225 |
घ | 32.0 | 12.5 | 3.67 | 3.67 | 1.17 | 1.15 | 0.97 | 0.86 | 0.68 | 0.20 | |
फिर thena = 55, =b = 143, जो पहले से ही एक इष्टतम समाधान है।
सीमित मामले पर विचार करें। हमारे पास दो आइटम हैं जिन्हें व्यक्तिगत रूप से एक बैकपैक में रखा गया है, लेकिन एक साथ नहीं। एक प्राकृतिक समाधान एक अधिक महंगी वस्तु लेना होगा, इसके अधिक वजन के बावजूद। जाहिर है, स्टैक्ड आइटम की कीमत में वजन की तुलना में अधिक प्राथमिकता होती है।
डी के मूल्य का एक छोटा पुनर्मूल्यांकन हमें उस दिशा में प्राथमिकता को स्थानांतरित करने की अनुमति देता है जिसकी हमें आवश्यकता है।
सरल अनुपात के बजाय d = b / a, d = b
2 / a और फिर भी d से क्रमबद्ध करें।
D = b
2 / a सेट द्वारा सॉर्ट किया गया
| | | | | | | | | | | Σ |
एक | 1 | 2 | 9 | 3 | 26 | 23 | 32 | 14 | 28 | 25 | 163 |
ख | 32 | 25 | 33 | 11 | 30 | 27 | 31 | 12 | 19 | 5 | 225 |
घ | 1024 | 312.5 | 121 | 40.33 | 34.6 | 31.7 | 30.0 | 10.3 | 12.9 | 1.0 | |
उसी एस = 60 के लिए
| | | | | | | | | | | Σ |
एक | 1 | 2 | 9 | 3 | 26 | 23 | 32 | 14 | 28 | 25 | 163 |
ख | 32 | 25 | 33 | 11 | 30 | 27 | 31 | 12 | 19 | 5 | 225 |
घ | 1024 | 312.5 | 121 | 40.33 | 34.6 | 31.7 | 30.0 | 10.3 | 12.9 | 1.0 | |
Σa = 55, =b = 143। हम तुरंत इष्टतम समाधान के लिए आते हैं।
इस प्रकार, बैकपैक बिछाने का कार्य रैखिक समय में हल किया गया है और पूर्ण एनपी नहीं है।