0/1 Knapsack Problem using Dynamic Programming in Hindi | 0/1 नैपसैक समस्या डायनेमिक प्रोग्रामिंग द्वारा
0/1 Knapsack Problem using Dynamic Programming in Hindi | 0/1 नैपसैक समस्या डायनेमिक प्रोग्रामिंग द्वारा
0/1 नैपसैक समस्या क्या है? (0/1 Knapsack Problem in Hindi)
0/1 नैपसैक समस्या (0/1 Knapsack Problem) एक ऑप्टिमाइज़ेशन समस्या है जिसमें एक निश्चित क्षमता (Capacity) वाले बैग में वस्तुओं (Items) को इस प्रकार से रखा जाता है कि कुल मूल्य (Total Value) अधिकतम हो।
0/1 नैपसैक समस्या की विशेषताएँ (Characteristics of 0/1 Knapsack Problem)
- प्रत्येक वस्तु को या तो पूरी तरह से बैग में रखा जा सकता है या बिल्कुल नहीं।
- वस्तु को टुकड़ों में विभाजित नहीं किया जा सकता।
- समस्या को डायनेमिक प्रोग्रामिंग (Dynamic Programming) का उपयोग करके हल किया जाता है।
0/1 नैपसैक समस्या का गणितीय स्वरूप (Mathematical Formulation of 0/1 Knapsack)
मान लीजिए कि हमारे पास n वस्तुएं हैं और प्रत्येक वस्तु का एक निश्चित भार (Weight) और मूल्य (Value) है।
- W: बैग की अधिकतम क्षमता
- wt[i]: वस्तु i का भार
- val[i]: वस्तु i का मूल्य
उद्देश्य (Objective Function):
Maximize: Σ val[i] (जहाँ i उन वस्तुओं का सूचकांक है जो बैग में हैं) Subject to: Σ wt[i] ≤ W
डायनेमिक प्रोग्रामिंग द्वारा 0/1 नैपसैक समस्या का हल (Solving 0/1 Knapsack using Dynamic Programming)
समस्या को हल करने के लिए एक 2D डायनेमिक प्रोग्रामिंग टेबल बनाई जाती है।
Knapsack(W, wt[], val[], n)
1. एक टेबल dp[][] बनाएं जिसका आकार (n+1) x (W+1) हो।
2. प्रारंभिक स्थिति: यदि W = 0 या n = 0, तो dp[i][w] = 0।
3. प्रत्येक वस्तु के लिए:
a. यदि वर्तमान वस्तु का भार बैग की क्षमता से अधिक है, तो इसे छोड़ दें:
dp[i][w] = dp[i-1][w]
b. अन्यथा, दो संभावनाओं में से अधिकतम चुनें:
dp[i][w] = max(val[i-1] + dp[i-1][w - wt[i-1]], dp[i-1][w])
4. अंतिम उत्तर dp[n][W] में मिलेगा।
0/1 नैपसैक का उदाहरण (Example of 0/1 Knapsack Problem)
मान लीजिए कि हमें निम्नलिखित वस्तुएं दी गई हैं:
| वस्तु | भार (Weight) | मूल्य (Value) |
|---|---|---|
| 1 | 2 | 40 |
| 2 | 3 | 50 |
| 3 | 4 | 70 |
| 4 | 5 | 80 |
यदि बैग की क्षमता W = 5 है, तो अधिकतम मूल्य 90 होगा, जिसमें वस्तुएं (2,4) सम्मिलित की जाएँगी।
0/1 नैपसैक एल्गोरिदम की समय जटिलता (Time Complexity of 0/1 Knapsack)
- समय जटिलता: O(n × W) (डायनेमिक प्रोग्रामिंग तालिका भरने के कारण)
- स्थान जटिलता: O(n × W) (2D टेबल स्टोरेज के कारण)
0/1 नैपसैक की अनुप्रयोग (Applications of 0/1 Knapsack Problem)
- संसाधन आवंटन (Resource Allocation)
- पोर्टफोलियो ऑप्टिमाइज़ेशन (Portfolio Optimization)
- बैकपैकिंग और स्टोरेज प्लानिंग
- कंप्यूटर नेटवर्क में डेटा पैकेट शेड्यूलिंग
निष्कर्ष
0/1 नैपसैक समस्या एक महत्वपूर्ण ऑप्टिमाइज़ेशन समस्या है जो कई व्यावहारिक अनुप्रयोगों में उपयोग की जाती है। डायनेमिक प्रोग्रामिंग का उपयोग करके इसे O(n × W) समय में हल किया जा सकता है।
Related Articles
NP-Completeness in Hindi | एनपी-कम्प्लीटनेस क्या है?
NP-Completeness क्या है? (NP-Completeness in Hindi) NP-Completeness कम्प्य...
Read More →2-3 Tree in Hindi | 2-3 ट्री क्या है?
2-3 ट्री क्या है? (2-3 Tree in Hindi) 2-3 ट्री (2-3 Tree) एक से...
Read More →Height Balanced Tree in Hindi | हाइट बैलेंस्ड ट्री क्या है?
हाइट बैलेंस्ड ट्री क्या है? (Height Balanced Tree in Hindi) ह...
Read More →Parallel Algorithm in Hindi | समानांतर एल्गोरिदम क्या है?
समानांतर एल्गोरिदम क्या है? (Parallel Algorithm in Hindi) स...
Read More →Lower Bound Theory in Hindi | लोअर बाउंड थ्योरी क्या है?
लोअर बाउंड थ्योरी क्या है? (Lower Bound Theory in Hindi) लो...
Read More →