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

0/1 बस्ता शाखा का उपयोग कर और सी/सी++ में बाध्य?

विचार इस तथ्य को लागू करने का है कि लालची दृष्टिकोण भिन्नात्मक बस्ता समस्या का सबसे अच्छा समाधान प्रदान करता है।

यह जांचने के लिए कि कोई विशेष नोड हमें बेहतर समाधान दे सकता है या नहीं, हम लालची दृष्टिकोण को लागू करने वाले इष्टतम समाधान (नोड के माध्यम से) की गणना करते हैं। यदि लालची दृष्टिकोण द्वारा परिकलित समाधान स्वयं अब तक के सर्वोत्तम समाधान से अधिक है, तो हम नोड के माध्यम से बेहतर समाधान प्राप्त नहीं कर सकते हैं।

पूरा एल्गोरिथम नीचे दिया गया है -

  • मूल्य प्रति यूनिट वजन के अनुपात के घटते क्रम के अनुसार सभी वस्तुओं को क्रमबद्ध करें ताकि एक ऊपरी सीमा की गणना लालची दृष्टिकोण को लागू करने के लिए की जा सके।

  • अधिकतम लाभ शुरू करें, जैसे कि maxProfit =0

  • एक खाली कतार, Q, बनाई जाती है।

  • डिसीजन ट्री का एक डमी नोड बनाया जाता है और इसे Q. में सम्मिलित या एनक्यू किया जाता है। डमी नोड का लाभ और वजन 0.

  • Q के खाली या खाली न होने पर निम्नलिखित करें।

    • Q से एक आइटम बनाया जाता है। निकाले गए आइटम को यू होने दें।

    • अगले स्तर के नोड के लाभ की गणना करें। यदि लाभ maxProfit से अधिक है, तो maxProfit को संशोधित करें।

    • अगले स्तर के नोड की बाध्यता की गणना करें। यदि बाउंड मैक्सप्रॉफिट से अधिक है, तो अगले स्तर के नोड को Q में जोड़ें।

    • उस मामले पर विचार करें जब अगले स्तर के नोड का इलाज नहीं किया जाता है या समाधान के हिस्से के रूप में नहीं माना जाता है और अगले स्तर के नोड के साथ कतार में एक नोड जोड़ें, लेकिन अगले स्तर के नोड्स का इलाज या विचार किए बिना वजन और लाभ।

नीचे दिए गए चित्र -

इनपुट

// First thing in every pair is treated as weight of item
// and second thing is treated as value of item
Item arr1[] = {{2, 40}, {3.14, 50}, {1.98, 100}, {5, 95}, {3, 30}};
Knapsack Capacity W1 = 10

आउटपुट

The maximum possible profit = 235

  1. C++ . का उपयोग करके 0, 1 और 2 के सरणियों को क्रमबद्ध करें

    0, 1, और 2 की एक सरणी को देखते हुए, तत्वों को इस क्रम में क्रमबद्ध करें कि सभी शून्य पहले 1 से पहले और सभी 2 अंत में आएं। हमें सरणी के सभी तत्वों को जगह में क्रमबद्ध करना होगा। हम डीएनएफ (डच राष्ट्रीय ध्वज) सॉर्टिंग एल्गोरिदम का उपयोग करके इस समस्या को हल कर सकते हैं। उदाहरण के लिए, इनपुट-1 - arr[

  1. C++ में श्रृंखला 1 + 1/2 + 1/3 + 1/4 + .. + 1/n का योग ज्ञात करने का कार्यक्रम

    इस समस्या में, हमें एक संख्या n दी गई है। हमारा काम एक सीरीज का योग 1 + 1/2 + 1/3 + 1/4 + .. + 1/n C++ में खोजने के लिए प्रोग्राम बनाना है । कोड विवरण - यहां, हम श्रृंखला 1 + 1/2 + 1/3 + 1/4 + .. + 1/n से nवें पद तक का योग पाएंगे। श्रृंखला एक हार्मोनिक प्रगति श्रृंखला है। हार्मोनिक प्रगति एक श्रृं

  1. C++ में 0/1 Knapsack में आइटम प्रिंट करना

    n वस्तुओं के भार और मान दिए गए हैं; कार्य क्षमता W के एक नैपसैक में निम्नलिखित वज़न और मानों के लिए 0/1 knapsack के अनुसार आइटम प्रिंट करना है, ताकि knapsack में अधिकतम कुल मान प्राप्त किया जा सके। 0/1 बस्ता क्या है? नैपसैक एक निश्चित आकार या एक बैग के साथ एक बैग की तरह है जो एक निश्चित मात्रा मे