Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> प्रोग्रामिंग

भिन्नात्मक बस्ता समस्या


वस्तुओं की एक सूची दी गई है, प्रत्येक वस्तु का अपना मूल्य और वजन है। वस्तुओं को एक थैले में रखा जा सकता है जिसकी अधिकतम वजन सीमा डब्ल्यू है। समस्या यह है कि वजन डब्ल्यू से कम या उसके बराबर है, और मूल्य अधिकतम है।

Knapsack समस्या दो प्रकार की होती है।

  • 0 - 1 बस्ता
  • आंशिक थैला

0 - 1 नैपसेक के लिए, वस्तुओं को छोटे टुकड़ों में विभाजित नहीं किया जा सकता है, और भिन्नात्मक थैले के लिए, वस्तुओं को छोटे टुकड़ों में तोड़ा जा सकता है।

यहाँ हम भिन्नात्मक बस्ता समस्या पर चर्चा करेंगे।

इस एल्गोरिथम की समय जटिलता O(n Log n) है।

इनपुट और आउटपुट

इनपुट:अधिकतम वजन =50. मूल्य और वजन के साथ वस्तुओं की सूची।{(60, 10), (100, 20), (120, 30)}आउटपुट:अधिकतम मूल्य:240 वजन 20 की वस्तुओं को लेकर और 30

एल्गोरिदम

<पूर्व>आंशिक नॅप्सैक (वजन, आइटम सूची, एन)

इनपुट - बैग का अधिकतम वजन, वस्तुओं की सूची और वस्तुओं की संख्या

आउटपुट: अधिकतम मूल्य प्राप्त किया।

 मूल्य और वजन के राशन के आधार पर आइटम सूची को क्रमबद्ध करना शुरू करें वर्तमान वजन:=0 knapsackVal:=0 सूची में सभी वस्तुओं के लिए मैं करता हूं यदि वर्तमान वजन + आइटम का वजन [i] <वजन फिर वर्तमान वजन:=वर्तमान वजन + वजन आइटम का [i] knapsackVal :=knapsackVal + आइटम का मान [i] अन्य शेष :=वज़न - currentWeight knapsackVal "=knapsackVal + आइटम का मान [i] * (आइटम का शेष/वजन [i]) लूप को तोड़ना समाप्त हो गया है। /पूर्व> 

उदाहरण

#include #include<एल्गोरिदम> नेमस्पेस का उपयोग करना; स्ट्रक्चर आइटम {इंट वैल्यू, वेट;}; बूल सीएमपी (स्ट्रक्चर आइटम ए, स्ट्रक्चर आइटम बी) {//आइटम ए और आइटम बी की तुलना के आधार पर करें मूल्य और वजन का राशन दुगना अनुपात =(दोगुना)a.मूल्य / a.वजन; डबल बीराटियो =(डबल) बी.वैल्यू / बी.वेट; रिटर्न aRatio> bRatio;} डबल फ्रैक्शनल नॅप्सैक (इंट वेट, आइटम आइटम लिस्ट [], इंट एन) {सॉर्ट (आइटम लिस्ट, आइटमलिस्ट + एन, सीएमपी); // तुलना फ़ंक्शन का उपयोग करके आइटम सूची को सॉर्ट करें int currWeight =0; // knapsack डबल knapsackVal =0.0 में वर्तमान वजन; के लिए (int i =0; i  

आउटपुट

अधिकतम मान:240

  1. एम-रंग समस्या

    इस समस्या में एक अप्रत्यक्ष ग्राफ दिया गया है। एम रंग भी प्रदान किए गए हैं। समस्या यह पता लगाने की है कि क्या m अलग-अलग रंगों के साथ नोड्स असाइन करना संभव है, जैसे कि ग्राफ़ के दो आसन्न कोने एक ही रंग के नहीं हैं। यदि समाधान मौजूद है, तो प्रदर्शित करें कि कौन सा रंग किस शीर्ष पर दिया गया है। शीर्ष

  1. वर्टेक्स कवर समस्या

    अप्रत्यक्ष ग्राफ़ के लिए, शीर्ष आवरण शीर्षों का एक उपसमुच्चय होता है, जहां ग्राफ़ के प्रत्येक किनारे (u, v) के लिए या तो u या v सेट में होता है। बाइनरी ट्री का उपयोग करके, हम आसानी से वर्टेक्स कवर की समस्या को हल कर सकते हैं। इस समस्या को दो उप-समस्याओं में विभाजित किया जा सकता है। जब जड़ शीर्ष आव

  1. 0-1 नैपसैक समस्या के लिए पायथन कार्यक्रम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें n वस्तुओं के वजन और मूल्य दिए गए हैं, हमें इन वस्तुओं को अधिकतम क्षमता w तक क्षमता W के बैग में रखना होगा। हमें अधिकतम संख्या में आइटम ले जाने और उसका मूल्य वापस करने की आवश्यकता है। आइए अब नीचे दिए गए कार्यान्व