नैपसैक समस्या: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{short description|Problem in combinatorial optimization}}
{{short description|Problem in combinatorial optimization}}
[[File:Knapsack.svg|thumb|right|250px|आयामी (बाधा) नैकपैक समस्या का उदाहरण: कुल वजन को 15 किग्रा से कम या बराबर रखते हुए धन की मात्रा को अधिकतम करने के लिए कौन से बक्सों को चुना जाना चाहिए? नैपसैक समस्याओं की  सूची # एकाधिक प्रतिबंध बॉक्स के वजन और मात्रा दोनों पर विचार कर सकते हैं। <br />(समाधान: यदि प्रत्येक बॉक्स की कोई संख्या उपलब्ध है, तो तीन पीले बॉक्स और तीन ग्रे बॉक्स; यदि केवल दिखाए गए बॉक्स उपलब्ध हैं, तो हरे बॉक्स को छोड़कर सभी।)]]संयोजी अनुकूलन में [[ बस्ता | नैपसैक]] समस्या निम्नलिखित समस्या है:
[[File:Knapsack.svg|thumb|right|250px|आयामी (बाधा) नैकपैक समस्या का उदाहरण: कुल वजन को 15 किग्रा से कम या बराबर रखते हुए धन की मात्रा को अधिकतम करने के लिए कौन से बक्सों को चुना जाना चाहिए? नैपसैक समस्याओं की  सूची # एकाधिक प्रतिबंध बॉक्स के वजन और मात्रा दोनों पर विचार कर सकते हैं। <br />(समाधान: यदि प्रत्येक बॉक्स की कोई संख्या उपलब्ध है, तो तीन पीले बॉक्स और तीन ग्रे बॉक्स; यदि केवल दिखाए गए बॉक्स उपलब्ध हैं, तो हरे बॉक्स को छोड़कर सभी।)]]संयोजी अनुकूलन में [[ बस्ता | नैपसैक]] समस्या निम्नलिखित समस्या है:
:''वस्तुओं का  सेट दिया गया है, प्रत्येक वजन और मूल्य के साथ, यह निर्धारित करें कि संग्रह में कौन सी वस्तुओं को शामिल करना है ताकि कुल वजन दी गई सीमा से कम या उसके बराबर हो और कुल मूल्य जितना संभव हो उतना बड़ा हो।' '''
:''वस्तुओं का  समुच्चय  दिया गया है, प्रत्येक वजन और मूल्य के साथ, यह निर्धारित करें कि संग्रह में कौन सी वस्तुओं को सम्मिलित  करना है जिससे कुल वजन दी गई सीमा से कम या उसके बराबर हो और कुल मूल्य जितना संभव हो उतना बड़ा हो।' '''
इसका नाम किसी ऐसे व्यक्ति के सामने आने वाली समस्या से लिया गया है जो  निश्चित आकार के थैले से विवश है और इसे सबसे मूल्यवान वस्तुओं से भरना चाहिए। समस्या अक्सर संसाधन आवंटन में उत्पन्न होती है जहां निर्णय लेने वालों को क्रमशः  निश्चित बजट या समय की कमी के तहत गैर-विभाज्य परियोजनाओं या कार्यों के  सेट से चुनना पड़ता है।
इसका नाम किसी ऐसे व्यक्ति के सामने आने वाली समस्या से लिया गया है जो  निश्चित आकार के थैले से विवश है और इसे सबसे मूल्यवान वस्तुओं से भरना चाहिए। समस्या अधिकांशतः  संसाधन आवंटन में उत्पन्न होती है जहां निर्णय लेने वालों को क्रमशः  निश्चित बजट या समय की कमी के अनुसार  गैर-विभाज्य परियोजनाओं या कार्यों के  समुच्चय  से चुनना पड़ता है।


नैकपैक समस्या का अध्ययन  सदी से भी अधिक समय से किया जा रहा है, जिसमें शुरुआती कार्य 1897 तक के हैं।<ref>{{cite journal | title = संख्याओं के विभाजन पर| author = Mathews, G. B. | journal = Proceedings of the London Mathematical Society | volume = 28 | pages = 486&ndash;490 | date = 25 June 1897 | url = http://plms.oxfordjournals.org/content/s1-28/1/486.full.pdf |doi = 10.1112/plms/s1-28.1.486}}</ref> नैपसेक नाम की समस्या गणितज्ञ [[टोबियास डेंजिग]] (1884-1956) के शुरुआती कार्यों से मिलती है,<ref>{{cite book |last1=Dantzig |first1=Tobias |title=Number : the language of science |date=2007 |publisher=Plume Book |location=New York |isbn=9780452288119 |edition=The Masterpiece Science}}</ref> और सामान को ओवरलोड किए बिना सबसे मूल्यवान या उपयोगी वस्तुओं को पैक करने की सामान्य समस्या को संदर्भित करता है।
नैकपैक समस्या का अध्ययन  सदी से भी अधिक समय से किया जा रहा है, जिसमें प्रारंभिक  कार्य 1897 तक के हैं।<ref>{{cite journal | title = संख्याओं के विभाजन पर| author = Mathews, G. B. | journal = Proceedings of the London Mathematical Society | volume = 28 | pages = 486&ndash;490 | date = 25 June 1897 | url = http://plms.oxfordjournals.org/content/s1-28/1/486.full.pdf |doi = 10.1112/plms/s1-28.1.486}}</ref> नैपसेक नाम की समस्या गणितज्ञ [[टोबियास डेंजिग]] (1884-1956) के प्रारंभिक  कार्यों से मिलती है,<ref>{{cite book |last1=Dantzig |first1=Tobias |title=Number : the language of science |date=2007 |publisher=Plume Book |location=New York |isbn=9780452288119 |edition=The Masterpiece Science}}</ref> और सामान को ओवरलोड किए बिना सबसे मूल्यवान या उपयोगी वस्तुओं को पैक करने की सामान्य समस्या को संदर्भित करता है।


== अनुप्रयोग ==
== अनुप्रयोग ==
विभिन्न प्रकार के क्षेत्रों में वास्तविक दुनिया की निर्णय लेने की प्रक्रियाओं में नैपसैक समस्याएं दिखाई देती हैं, जैसे कच्चे माल को कम से कम बेकार करने का तरीका खोजना, <ref>{{cite book |last1=Kellerer |first1=Hans |last2=Pferschy |first2=Ulrich |last3=Pisinger |first3=David |title=बस्ता समस्याएं|date=2004 |publisher=Springer |location=Berlin |isbn=978-3-540-40286-2 |page=449 |url=https://books.google.com/books?id=u5DB7gck08YC |access-date=5 May 2022}}</ref> [[निवेश]] और [[पोर्टफोलियो (वित्त)]] का चयन, <ref>{{cite book |last1=Kellerer |first1=Hans |last2=Pferschy |first2=Ulrich |last3=Pisinger |first3=David |title=बस्ता समस्याएं|date=2004 |publisher=Springer |location=Berlin |isbn=978-3-540-40286-2 |page=461 |url=https://books.google.com/books?id=u5DB7gck08YC |access-date=5 May 2022}}</ref> संपत्ति-समर्थित [[प्रतिभूतिकरण]] के लिए संपत्ति का चयन ,<ref>{{cite book |last1=Kellerer |first1=Hans |last2=Pferschy |first2=Ulrich |last3=Pisinger |first3=David |title=बस्ता समस्याएं|date=2004 |publisher=Springer |location=Berlin |isbn=978-3-540-40286-2 |page=465 |url=https://books.google.com/books?id=u5DB7gck08YC |access-date=5 May 2022}}</ref> और मेर्कले-हेलमैन <ref>{{cite book |last1=Kellerer |first1=Hans |last2=Pferschy |first2=Ulrich |last3=Pisinger |first3=David |title=बस्ता समस्याएं|date=2004 |publisher=Springer |location=Berlin |isbn=978-3-540-40286-2 |page=472 |url=https://books.google.com/books?id=u5DB7gck08YC |access-date=5 May 2022}}</ref> और अन्य [[नैकपैक क्रिप्टो सिस्टम|नैकपैक क्रिप्टोप्रणाली]] के लिए जनरेटिंग कुंजियां।
विभिन्न प्रकार के क्षेत्रों में वास्तविक दुनिया की निर्णय लेने की प्रक्रियाओं में नैपसैक समस्याएं दिखाई देती हैं, जैसे कच्चे माल को कम से कम व्यर्थ  करने का प्रणाली  खोजना, <ref>{{cite book |last1=Kellerer |first1=Hans |last2=Pferschy |first2=Ulrich |last3=Pisinger |first3=David |title=बस्ता समस्याएं|date=2004 |publisher=Springer |location=Berlin |isbn=978-3-540-40286-2 |page=449 |url=https://books.google.com/books?id=u5DB7gck08YC |access-date=5 May 2022}}</ref> [[निवेश]] और [[पोर्टफोलियो (वित्त)]] का चयन, <ref>{{cite book |last1=Kellerer |first1=Hans |last2=Pferschy |first2=Ulrich |last3=Pisinger |first3=David |title=बस्ता समस्याएं|date=2004 |publisher=Springer |location=Berlin |isbn=978-3-540-40286-2 |page=461 |url=https://books.google.com/books?id=u5DB7gck08YC |access-date=5 May 2022}}</ref> संपत्ति-समर्थित [[प्रतिभूतिकरण]] के लिए संपत्ति का चयन ,<ref>{{cite book |last1=Kellerer |first1=Hans |last2=Pferschy |first2=Ulrich |last3=Pisinger |first3=David |title=बस्ता समस्याएं|date=2004 |publisher=Springer |location=Berlin |isbn=978-3-540-40286-2 |page=465 |url=https://books.google.com/books?id=u5DB7gck08YC |access-date=5 May 2022}}</ref> और मेर्कले-हेलमैन <ref>{{cite book |last1=Kellerer |first1=Hans |last2=Pferschy |first2=Ulrich |last3=Pisinger |first3=David |title=बस्ता समस्याएं|date=2004 |publisher=Springer |location=Berlin |isbn=978-3-540-40286-2 |page=472 |url=https://books.google.com/books?id=u5DB7gck08YC |access-date=5 May 2022}}</ref> और अन्य [[नैकपैक क्रिप्टो सिस्टम|नैकपैक क्रिप्टोप्रणाली]] के लिए जनरेटिंग कुंजियां।


क्नाप्सैक  एल्गोरिदम का  प्रारंभिक अनुप्रयोग परीक्षणों के निर्माण और स्कोरिंग में था जिसमें परीक्षार्थियों के पास यह विकल्प होता है कि वे किस प्रश्न का उत्तर दें। छोटे उदाहरणों के लिए, परीक्षार्थियों को इस तरह का विकल्प प्रदान करना काफी सरल प्रक्रिया है। उदाहरण के लिए, यदि किसी परीक्षा में 10 अंकों के 12 प्रश्न हैं, तो परीक्षार्थी को अधिकतम 100 अंक प्राप्त करने के लिए केवल 10 प्रश्नों के उत्तर देने की आवश्यकता है। हालांकि, बिंदु मानों के विषम वितरण वाले परीक्षणों पर, विकल्प प्रदान करना अधिक कठिन होता है। फ़्यूरमैनऔर वेइसने  प्रणाली प्रस्तावित की जिसमें छात्रों को कुल 125 संभावित अंकों के साथ  विषम परीक्षा दी जाती है। छात्रों को अपनी क्षमताओं के अनुसार सभी प्रश्नों के उत्तर देने के लिए कहा जाता है। समस्याओं के संभावित उपसमुच्चयों में से जिनके कुल अंक मान 100 तक जोड़ते हैं,  नैपसैक एल्गोरिथ्म यह निर्धारित करेगा कि कौन सा उपसमुच्चय प्रत्येक छात्र को उच्चतम संभव स्कोर देता है।<ref>{{cite journal | title = टेस्ट निर्माण और स्कोरिंग के लिए एक गणितीय प्रोग्रामिंग मॉडल| journal = Management Science | volume = 19 | issue = 8 |date = April 1973|pages = 961–966 |author1=Feuerman, Martin |author2=Weiss, Harvey | jstor = 2629127 | doi=10.1287/mnsc.19.8.961}}</ref>
क्नाप्सैक  एल्गोरिदम का  प्रारंभिक अनुप्रयोग परीक्षणों के निर्माण और स्कोरिंग में था जिसमें परीक्षार्थियों के पास यह विकल्प होता है कि वे किस प्रश्न का उत्तर दें। छोटे उदाहरणों के लिए, परीक्षार्थियों को इस तरह का विकल्प प्रदान करना अधिक  सरल प्रक्रिया है। उदाहरण के लिए, यदि किसी परीक्षा में 10 अंकों के 12 प्रश्न हैं, तो परीक्षार्थी को अधिकतम 100 अंक प्राप्त करने के लिए केवल 10 प्रश्नों के उत्तर देने की आवश्यकता है। चूंकि , बिंदु मानों के विषम वितरण वाले परीक्षणों पर, विकल्प प्रदान करना अधिक कठिन होता है। फ़्यूरमैनऔर वेइसने  प्रणाली प्रस्तावित की जिसमें छात्रों को कुल 125 संभावित अंकों के साथ  विषम परीक्षा दी जाती है। छात्रों को अपनी क्षमताओं के अनुसार सभी प्रश्नों के उत्तर देने के लिए कहा जाता है। समस्याओं के संभावित उपसमुच्चयों में से जिनके कुल अंक मान 100 तक जोड़ते हैं,  नैपसैक एल्गोरिथ्म यह निर्धारित करेगा कि कौन सा उपसमुच्चय प्रत्येक छात्र को उच्चतम संभव स्कोर देता है।<ref>{{cite journal | title = टेस्ट निर्माण और स्कोरिंग के लिए एक गणितीय प्रोग्रामिंग मॉडल| journal = Management Science | volume = 19 | issue = 8 |date = April 1973|pages = 961–966 |author1=Feuerman, Martin |author2=Weiss, Harvey | jstor = 2629127 | doi=10.1287/mnsc.19.8.961}}</ref>


1999 में स्टोनी ब्रुक यूनिवर्सिटी एल्गोरिथम रिपॉजिटरी के  अध्ययन से पता चला है कि कॉम्बिनेटरियल एल्गोरिदम और एल्गोरिथम इंजीनियरिंग के क्षेत्र से संबंधित 75 एल्गोरिथम समस्याओं में से, नैपसैक समस्या 19वीं सबसे लोकप्रिय और प्रत्यय पेड़ों और [[बिन पैकिंग समस्या]] के बाद तीसरी सबसे अधिक आवश्यक थी। .<ref>{{cite journal | title = Who is Interested in Algorithms and Why? Lessons from the Stony Brook Algorithm Repository | author = Skiena, S. S. |journal = ACM SIGACT News | volume = 30 | issue=3 |date = September 1999| pages= 65&ndash;74  |issn=0163-5700 | doi=10.1145/333623.333627| citeseerx = 10.1.1.41.8357 | s2cid = 15619060 }}</ref>
1999 में स्टोनी ब्रुक यूनिवर्सिटी एल्गोरिथम रिपॉजिटरी के  अध्ययन से पता चला है कि कॉम्बिनेटरियल एल्गोरिदम और एल्गोरिथम इंजीनियरिंग के क्षेत्र से संबंधित 75 एल्गोरिथम समस्याओं में से, नैपसैक समस्या 19वीं सबसे लोकप्रिय और प्रत्यय पेड़ों और [[बिन पैकिंग समस्या]] के बाद तीसरी सबसे अधिक आवश्यक थी। .<ref>{{cite journal | title = Who is Interested in Algorithms and Why? Lessons from the Stony Brook Algorithm Repository | author = Skiena, S. S. |journal = ACM SIGACT News | volume = 30 | issue=3 |date = September 1999| pages= 65&ndash;74  |issn=0163-5700 | doi=10.1145/333623.333627| citeseerx = 10.1.1.41.8357 | s2cid = 15619060 }}</ref>
Line 16: Line 16:


== परिभाषा ==
== परिभाषा ==
हल की जा रही सबसे आम समस्या 0-1 नैपसैक समस्या है, जो प्रत्येक प्रकार के आइटम की प्रतियों की संख्या ''<math>x_i</math>'' को शून्य या  तक सीमित कर देती है। ''1''  से ''<math>n</math>'' तक की संख्या वाली ''<math>n</math>'' वस्तुओं का  सेट दिया गया है, प्रत्येक वजन ''<math>w_i</math>'' और  मान ''<math>v_i</math>'' के साथ, अधिकतम वजन क्षमता ''<math>W</math>'' के साथ,
हल की जा रही सबसे आम समस्या 0-1 नैपसैक समस्या है, जो प्रत्येक प्रकार के आइटम की प्रतियों की संख्या ''<math>x_i</math>'' को शून्य या  तक सीमित कर देती है। ''1''  से ''<math>n</math>'' तक की संख्या वाली ''<math>n</math>'' वस्तुओं का  समुच्चय  दिया गया है, प्रत्येक वजन ''<math>w_i</math>'' और  मान ''<math>v_i</math>'' के साथ, अधिकतम वजन क्षमता ''<math>W</math>'' के साथ,
: अधिकतम करें <math>\sum_{i=1}^n v_i x_i</math>
: अधिकतम करें <math>\sum_{i=1}^n v_i x_i</math>
: का विषय है <math>\sum_{i=1}^n w_i x_i \leq W</math> और <math>x_i \in \{0,1\}</math>.
: का विषय है <math>\sum_{i=1}^n w_i x_i \leq W</math> और <math>x_i \in \{0,1\}</math>.
यहाँ <math>x_i</math> नैपसैक में शामिल करने के लिए आइटम <math>i</math> के उदाहरणों की संख्या का प्रतिनिधित्व करता है। अनौपचारिक रूप से, समस्या थैले में वस्तुओं के मूल्यों के योग को अधिकतम करने की है ताकि वजन का योग थैले की क्षमता से कम या उसके बराबर हो।
यहाँ <math>x_i</math> नैपसैक में सम्मिलित  करने के लिए आइटम <math>i</math> के उदाहरणों की संख्या का प्रतिनिधित्व करता है। अनौपचारिक रूप से, समस्या थैले में वस्तुओं के मूल्यों के योग को अधिकतम करने की है जिससे वजन का योग थैले की क्षमता से कम या उसके बराबर हो।


बाउंडेड नैपसैक प्रॉब्लम (बीकेपी) प्रतिबंध को हटाती है कि प्रत्येक आइटम में से केवल  है, लेकिन प्रत्येक प्रकार के आइटम की प्रतियों की संख्या <math>x_i</math> को अधिकतम गैर-ऋणात्मक पूर्णांक मान <math>c</math> तक सीमित करती है:
बाउंडेड नैपसैक प्रॉब्लम (बीकेपी) प्रतिबंध को हटाती है कि प्रत्येक आइटम में से केवल  है, किन्तु प्रत्येक प्रकार के आइटम की प्रतियों की संख्या <math>x_i</math> को अधिकतम गैर-ऋणात्मक पूर्णांक मान <math>c</math> तक सीमित करती है:
: अधिकतम करें <math>\sum_{i=1}^n v_i x_i</math>
: अधिकतम करें <math>\sum_{i=1}^n v_i x_i</math>
: का विषय है <math>\sum_{i=1}^n w_i x_i \leq W</math> और <math>x_i \in \{0,1,2,\dots,c\}.</math>
: का विषय है <math>\sum_{i=1}^n w_i x_i \leq W</math> और <math>x_i \in \{0,1,2,\dots,c\}.</math>
Line 30: Line 30:


== कम्प्यूटेशनल जटिलता ==
== कम्प्यूटेशनल जटिलता ==
कंप्यूटर विज्ञान के दृष्टिकोण से नैकपैक समस्या कई कारणों से दिलचस्प है:
कंप्यूटर विज्ञान के दृष्टिकोण से नैकपैक समस्या कई कारणों से रोचक है:
* क्नाप्सैक  समस्या का [[निर्णय समस्या]] रूप (क्या वजन W से अधिक हुए बिना कम से कम V का मान प्राप्त किया जा सकता है?) NP-पूर्ण है, इस प्रकार कोई ज्ञात एल्गोरिथम नहीं है जो सभी में सही और तेज़ (बहुपद-समय) दोनों हो मामलों।
* क्नाप्सैक  समस्या का [[निर्णय समस्या]] रूप (क्या वजन W से अधिक हुए बिना कम से कम V का मान प्राप्त किया जा सकता है?) NP-पूर्ण है, इस प्रकार कोई ज्ञात एल्गोरिथम नहीं है जो सभी में सही और तेज़ (बहुपद-समय) दोनों हो स्थितियों।
* जबकि निर्णय समस्या एनपी-पूर्ण है, अनुकूलन समस्या नहीं है, इसका समाधान कम से कम उतना ही कठिन है जितना कि निर्णय समस्या, और कोई ज्ञात बहुपद एल्गोरिथ्म नहीं है जो यह बता सके कि समाधान दिया गया है कि क्या यह इष्टतम है (जो होगा) इसका मतलब है कि बड़े वी के साथ कोई समाधान नहीं है, इस प्रकार एनपी-पूर्ण निर्णय समस्या को हल करना)।
* जबकि निर्णय समस्या एनपी-पूर्ण है, अनुकूलन समस्या नहीं है, इसका समाधान कम से कम उतना ही कठिन है जितना कि निर्णय समस्या, और कोई ज्ञात बहुपद एल्गोरिथ्म नहीं है जो यह बता सके कि समाधान दिया गया है कि क्या यह इष्टतम है (जो होगा) इसका मतलब है कि बड़े वी के साथ कोई समाधान नहीं है, इस प्रकार एनपी-पूर्ण निर्णय समस्या को हल करना)।
* [[गतिशील प्रोग्रामिंग]] का उपयोग करते हुए  [[छद्म-बहुपद समय]] एल्गोरिथ्म है।
* [[गतिशील प्रोग्रामिंग]] का उपयोग करते हुए  [[छद्म-बहुपद समय]] एल्गोरिथ्म है।
* [[बहुपद-समय सन्निकटन योजना]] है।
* [[बहुपद-समय सन्निकटन योजना]] है।
* कई मामले जो व्यवहार में उत्पन्न होते हैं, और कुछ वितरणों से यादृच्छिक उदाहरण, फिर भी ठीक से हल किए जा सकते हैं।
* कई स्थितियों जो व्यवहार में उत्पन्न होते हैं, और कुछ वितरणों से यादृच्छिक उदाहरण, फिर भी ठीक से हल किए जा सकते हैं।


इसमें निर्णय और अनुकूलन समस्याओं के बीच  लिंक है, यदि कोई बहुपद एल्गोरिदम मौजूद है जो निर्णय की समस्या को हल करता है, तो बहुपद समय में अनुकूलन समस्या के लिए अधिकतम मूल्य पा सकते हैं, इस एल्गोरिथ्म को k के मान में वृद्धि करते हुए पुनरावृत्त रूप से लागू कर सकते हैं। दूसरी ओर, यदि  एल्गोरिथ्म बहुपद समय में अनुकूलन समस्या का इष्टतम मूल्य पाता है, तो बहुपद समय में इस एल्गोरिथ्म द्वारा समाधान आउटपुट के मूल्य की तुलना k के मान से करके निर्णय समस्या को हल किया जा सकता है। इस प्रकार, समस्या के दोनों संस्करण समान कठिनाई वाले हैं।
इसमें निर्णय और अनुकूलन समस्याओं के बीच  लिंक है, यदि कोई बहुपद एल्गोरिदम उपस्थित है जो निर्णय की समस्या को हल करता है, तो बहुपद समय में अनुकूलन समस्या के लिए अधिकतम मूल्य पा सकते हैं, इस एल्गोरिथ्म को k के मान में वृद्धि करते हुए पुनरावृत्त रूप से प्रयुक्त  कर सकते हैं। दूसरी ओर, यदि  एल्गोरिथ्म बहुपद समय में अनुकूलन समस्या का इष्टतम मूल्य पाता है, तो बहुपद समय में इस एल्गोरिथ्म द्वारा समाधान आउटपुट के मूल्य की तुलना k के मान से करके निर्णय समस्या को हल किया जा सकता है। इस प्रकार, समस्या के दोनों संस्करण समान कठिनाई वाले हैं।


शोध साहित्य में  विषय यह पहचानना है कि नैकपैक समस्या के कठिन उदाहरण क्या दिखते हैं,<ref name="pisinger200308">Pisinger, D. 2003. [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.87.7431&rep=rep1&type=pdf Where are the hard knapsack problems?] Technical Report 2003/08, Department of Computer Science, University of Copenhagen, Copenhagen, Denmark.</ref><ref name="Cacetta2001">{{cite journal | last1 = Caccetta | first1 = L. | last2 = Kulanoot | first2 = A. | year = 2001 | title = हार्ड नैपसेक समस्याओं के कम्प्यूटेशनल पहलू| journal = Nonlinear Analysis | volume = 47 | issue = 8| pages = 5547–5558 | doi=10.1016/s0362-546x(01)00658-7}}</ref> या किसी अन्य तरीके से देखा जाता है, यह पहचानने के लिए कि व्यवहार में उदाहरणों के कौन से गुण उन्हें उनके सबसे खराब स्थिति वाले एनपी-पूर्ण व्यवहार से अधिक उत्तरदायी बना सकते हैं।<ref name="poirriez_et_all_2009">{{cite journal|last1=Poirriez|first1=Vincent|last2=Yanev|first2=Nicola|last3=Andonov|first3=Rumen|title=असीमित नैपसैक समस्या के लिए एक हाइब्रिड एल्गोरिथम|journal=Discrete Optimization|volume=6|issue=1|year=2009|pages=110–124|issn=1572-5286|doi=10.1016/j.disopt.2008.09.004|s2cid=8820628 |doi-access=free}</ref> इन कठिन उदाहरणों को खोजने का लक्ष्य सार्वजनिक कुंजी क्रिप्टोग्राफ़ी प्रणाली  में उनके उपयोग के लिए है, जैसे [[मर्कल-हेलमैन नैपसैक क्रिप्टोसिस्टम]]
शोध साहित्य में  विषय यह पहचानना है कि नैकपैक समस्या के कठिन उदाहरण क्या दिखते हैं,<ref name="pisinger200308">Pisinger, D. 2003. [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.87.7431&rep=rep1&type=pdf Where are the hard knapsack problems?] Technical Report 2003/08, Department of Computer Science, University of Copenhagen, Copenhagen, Denmark.</ref><ref name="Cacetta2001">{{cite journal | last1 = Caccetta | first1 = L. | last2 = Kulanoot | first2 = A. | year = 2001 | title = हार्ड नैपसेक समस्याओं के कम्प्यूटेशनल पहलू| journal = Nonlinear Analysis | volume = 47 | issue = 8| pages = 5547–5558 | doi=10.1016/s0362-546x(01)00658-7}}</ref> या किसी अन्य तरीके से देखा जाता है, यह पहचानने के लिए कि व्यवहार में उदाहरणों के कौन से गुण उन्हें उनके सबसे खराब स्थिति वाले एनपी-पूर्ण व्यवहार से अधिक उत्तरदायी बना सकते हैं।<ref name="poirriez_et_all_2009">{{cite journal|last1=Poirriez|first1=Vincent|last2=Yanev|first2=Nicola|last3=Andonov|first3=Rumen|title=असीमित नैपसैक समस्या के लिए एक हाइब्रिड एल्गोरिथम|journal=Discrete Optimization|volume=6|issue=1|year=2009|pages=110–124|issn=1572-5286|doi=10.1016/j.disopt.2008.09.004|s2cid=8820628 |doi-access=free}</ref> इन कठिन उदाहरणों को खोजने का लक्ष्य सार्वजनिक कुंजी क्रिप्टोग्राफ़ी प्रणाली  में उनके उपयोग के लिए है, जैसे [[मर्कल-हेलमैन नैपसैक क्रिप्टोसिस्टम]]


इसके अलावा, उल्लेखनीय तथ्य यह है कि नैकपैक समस्या की कठोरता इनपुट के रूप पर निर्भर करती है। यदि वजन और मुनाफा पूर्णांक के रूप में दिया जाता है, तो यह कमजोर रूप से एनपी-पूर्ण होता है, जबकि वजन और मुनाफे को तर्कसंगत संख्या के रूप में दिया जाता है, जबकि यह [[दृढ़ता से एनपी-पूर्ण]]<nowiki> होता है। रेफरी का नाम = वोज्त्ज़क18 >{{cite journal|last1=Wojtczak|first1=Dominik|title=मजबूत एनपी-तर्कसंगत समस्याओं की पूर्णता पर|journal=International Computer Science Symposium in Russia|volume=10846|year=2018|pages=308–320|doi=10.1007/978-3-319-90530-3_26|arxiv=1802.09465|isbn=978-3-319-90529-7|series=Lecture Notes in Computer Science|s2cid=3637366}</रेफ> हालांकि, तर्कसंगत वजन और मुनाफे के मामले में यह अभी भी  बहुपद-समय सन्निकटन योजना को स्वीकार करता है। पूरी तरह से बहुपद-समय सन्निकटन योजना।</nowiki>
इसके अतिरिक्त , उल्लेखनीय तथ्य यह है कि नैकपैक समस्या की कठोरता इनपुट के रूप पर निर्भर करती है। यदि वजन और मुनाफा पूर्णांक के रूप में दिया जाता है, तो यह अशक्त  रूप से एनपी-पूर्ण होता है, जबकि वजन और मुनाफे को तर्कसंगत संख्या के रूप में दिया जाता है, जबकि यह [[दृढ़ता से एनपी-पूर्ण]]<nowiki> होता है। रेफरी का नाम = वोज्त्ज़क18 >{{cite journal|last1=Wojtczak|first1=Dominik|title=शक्तिशाली  एनपी-तर्कसंगत समस्याओं की पूर्णता पर|journal=International Computer Science Symposium in Russia|volume=10846|year=2018|pages=308–320|doi=10.1007/978-3-319-90530-3_26|arxiv=1802.09465|isbn=978-3-319-90529-7|series=Lecture Notes in Computer Science|s2cid=3637366}</रेफ> चूंकि , तर्कसंगत वजन और मुनाफे के स्थितियों में यह अभी भी  बहुपद-समय सन्निकटन योजना को स्वीकार करता है। पूरी तरह से बहुपद-समय सन्निकटन योजना।</nowiki>


== सुलझाना ==
== सुलझाना ==
Line 49: Line 49:


=== डायनेमिक प्रोग्रामिंग इन-एडवांस एल्गोरिथम ===
=== डायनेमिक प्रोग्रामिंग इन-एडवांस एल्गोरिथम ===
असीमित नैपसैक समस्या (यूकेपी) प्रत्येक प्रकार के आइटम की प्रतियों की संख्या पर कोई प्रतिबंध नहीं लगाती है। इसके अलावा, यहाँ हम मानते हैं <math>x_i > 0</math>
असीमित नैपसैक समस्या (यूकेपी) प्रत्येक प्रकार के आइटम की प्रतियों की संख्या पर कोई प्रतिबंध नहीं लगाती है। इसके अतिरिक्त , यहाँ हम मानते हैं <math>x_i > 0</math>
: <math>m[w']= \max \left( \sum_{i=1}^n v_i x_i \right)</math>
: <math>m[w']= \max \left( \sum_{i=1}^n v_i x_i \right)</math>
: का विषय है <math>\sum_{i=1}^n w_i x_i \leq w'</math> और <math>x_i > 0</math>
: का विषय है <math>\sum_{i=1}^n w_i x_i \leq w'</math> और <math>x_i > 0</math>
उसका अवलोकन करो <math>m[w]</math> निम्नलिखित गुण हैं:
उसका अवलोकन करो <math>m[w]</math> निम्नलिखित गुण हैं:


1. <math>m[0]=0\,\!</math> (शून्य मदों का योग, यानी खाली सेट का योग)।
1. <math>m[0]=0\,\!</math> (शून्य मदों का योग, अर्थात  खाली समुच्चय  का योग)।


2. <math>m[w]=\max (v_1+m[w-w_1],v_2+m[w-w_2],...,v_n+m[w-w_n])</math>
2. <math>m[w]=\max (v_1+m[w-w_1],v_2+m[w-w_2],...,v_n+m[w-w_n])</math>
Line 61: Line 61:
दूसरी संपत्ति को विस्तार से समझाने की जरूरत है। इस पद्धति के चलने की प्रक्रिया के दौरान, हम वजन <math>w</math> कैसे प्राप्त करते हैं? केवल <math>i</math> तरीके हैं और पिछले वजन हैं <math>w-w_1, w-w_2,..., w-w_i</math> जहां कुल <math>i</math> प्रकार के अलग-अलग आइटम हैं (यह कहकर अलग, हमारा मतलब है कि वजन और मूल्य पूरी तरह से समान नहीं हैं)। यदि हम इन वस्तुओं के प्रत्येक मूल्य और संबंधित अधिकतम मूल्य को पहले से जानते हैं, तो हम बस उनकी  दूसरे से तुलना करते हैं और अंततः अधिकतम मूल्य प्राप्त करते हैं और हम कर रहे हैं।
दूसरी संपत्ति को विस्तार से समझाने की जरूरत है। इस पद्धति के चलने की प्रक्रिया के दौरान, हम वजन <math>w</math> कैसे प्राप्त करते हैं? केवल <math>i</math> तरीके हैं और पिछले वजन हैं <math>w-w_1, w-w_2,..., w-w_i</math> जहां कुल <math>i</math> प्रकार के अलग-अलग आइटम हैं (यह कहकर अलग, हमारा मतलब है कि वजन और मूल्य पूरी तरह से समान नहीं हैं)। यदि हम इन वस्तुओं के प्रत्येक मूल्य और संबंधित अधिकतम मूल्य को पहले से जानते हैं, तो हम बस उनकी  दूसरे से तुलना करते हैं और अंततः अधिकतम मूल्य प्राप्त करते हैं और हम कर रहे हैं।


यहां खाली सेट का अधिकतम शून्य लिया जाता है। <math>m[0]</math> से <math>m[W]</math> तक परिणामों को सारणीबद्ध करने से समाधान मिलता है। चूंकि प्रत्येक <math>m[w]</math> की गणना में अधिकांश <math>n</math> मदों की जांच शामिल है, और गणना करने के लिए <math>m[w]</math> के अधिकतम <math>W</math> मान हैं, गतिशील प्रोग्रामिंग समाधान का चलने का समय <math>O(nW)</math> है।<math>w_1,\,w_2,\,\ldots,\,w_n,\,W</math> को उनके सबसे बड़े सामान्य भाजक से विभाजित करना, चलने के समय को बेहतर बनाने का  तरीका है।
यहां खाली समुच्चय  का अधिकतम शून्य लिया जाता है। <math>m[0]</math> से <math>m[W]</math> तक परिणामों को सारणीबद्ध करने से समाधान मिलता है। चूंकि प्रत्येक <math>m[w]</math> की गणना में अधिकांश <math>n</math> मदों की जांच सम्मिलित  है, और गणना करने के लिए <math>m[w]</math> के अधिकतम <math>W</math> मान हैं, गतिशील प्रोग्रामिंग समाधान का चलने का समय <math>O(nW)</math> है।<math>w_1,\,w_2,\,\ldots,\,w_n,\,W</math> को उनके सबसे बड़े सामान्य भाजक से विभाजित करना, चलने के समय को बढ़िया  बनाने का  प्रणाली  है।


भले ही P≠NP, <math>O(nW)</math> जटिलता इस तथ्य का खंडन नहीं करती है कि knapsack समस्या NP-पूर्ण है, क्योंकि <math>W</math>, <math>n</math> के विपरीत, समस्या के इनपुट की लंबाई में बहुपद नहीं है। समस्या के लिए <math>W</math> इनपुट की लंबाई <math>W</math> ,  <math>\log W</math> ,  में बिट्स की संख्या के समानुपाती होती है, स्वयं <math>W</math> के लिए नहीं। हालांकि, चूंकि यह रनटाइम [[ छद्मबहुपद |छद्मबहुपद]] है, यह (निर्णय संस्करण) नैपसैक समस्या को  [[कमजोर एनपी-पूर्णता|कमजोर एनपी-पूर्ण]] समस्या बनाता है।
तथापि  P≠NP, <math>O(nW)</math> जटिलता इस तथ्य का खंडन नहीं करती है कि knapsack समस्या NP-पूर्ण है, क्योंकि <math>W</math>, <math>n</math> के विपरीत, समस्या के इनपुट की लंबाई में बहुपद नहीं है। समस्या के लिए <math>W</math> इनपुट की लंबाई <math>W</math> ,  <math>\log W</math> ,  में बिट्स की संख्या के समानुपाती होती है, स्वयं <math>W</math> के लिए नहीं। चूंकि , चूंकि यह रनटाइम [[ छद्मबहुपद |छद्मबहुपद]] है, यह (निर्णय संस्करण) नैपसैक समस्या को  [[कमजोर एनपी-पूर्णता|अशक्त  एनपी-पूर्ण]] समस्या बनाता है।


==== 0-1 बस्ता समस्या ====
==== 0-1 बस्ता समस्या ====
Line 70: Line 70:
हम <math>m[i,w]</math> को पुनरावर्ती रूप से निम्नानुसार परिभाषित कर सकते हैं: (परिभाषा ए)
हम <math>m[i,w]</math> को पुनरावर्ती रूप से निम्नानुसार परिभाषित कर सकते हैं: (परिभाषा ए)
* <math>m[0,\,w]=0</math>
* <math>m[0,\,w]=0</math>
* <math>m[i,\,w]=m[i-1,\,w]</math> अगर <math>w_i > w\,\!</math> (नया आइटम वर्तमान वजन सीमा से अधिक है)
* <math>m[i,\,w]=m[i-1,\,w]</math> यदि  <math>w_i > w\,\!</math> (नया आइटम वर्तमान वजन सीमा से अधिक है)
*<math>m[i,\,w]=\max(m[i-1,\,w],\,m[i-1,w-w_i]+v_i)</math> अगर <math>w_i \leqslant w</math>.
*<math>m[i,\,w]=\max(m[i-1,\,w],\,m[i-1,w-w_i]+v_i)</math> यदि  <math>w_i \leqslant w</math>.


समाधान तब <math>m[n,W]</math> की गणना करके पाया जा सकता है। इसे कुशलतापूर्वक करने के लिए, हम पिछली संगणनाओं को संग्रहीत करने के लिए  तालिका का उपयोग कर सकते हैं।
समाधान तब <math>m[n,W]</math> की गणना करके पाया जा सकता है। इसे कुशलतापूर्वक करने के लिए, हम पिछली संगणनाओं को संग्रहीत करने के लिए  तालिका का उपयोग कर सकते हैं।
Line 99: Line 99:


</syntaxhighlight>
</syntaxhighlight>
इसलिए यह समाधान <math>O(nW)</math> समय और <math>O(nW)</math> स्थान में चलेगा। (यदि हमें केवल m [n, W] मान की आवश्यकता है, तो हम कोड को संशोधित कर सकते हैं ताकि आवश्यक मेमोरी की मात्रा O (W) हो जो सरणी "m" की हाल की दो पंक्तियों को संग्रहीत करती है।)
इसलिए यह समाधान <math>O(nW)</math> समय और <math>O(nW)</math> स्थान में चलेगा। (यदि हमें केवल m [n, W] मान की आवश्यकता है, तो हम कोड को संशोधित कर सकते हैं जिससे आवश्यक मेमोरी की मात्रा O (W) हो जो सरणी "m" की दो पंक्तियों को संग्रहीत करती है।)


हालाँकि, यदि हम इसे  या दो कदम आगे ले जाते हैं, तो हमें पता होना चाहिए कि विधि <math>O(nW)</math> और <math>O(2^n)</math> के बीच के समय में चलेगी। परिभाषा ए से, हम जानते हैं कि सभी भारों की गणना करने की कोई आवश्यकता नहीं है जब वस्तुओं की संख्या और हमारे द्वारा चुने गए आइटम स्वयं तय होते हैं। कहने का तात्पर्य यह है कि ऊपर दिया गया प्रोग्राम आवश्यकता से अधिक गणना करता है क्योंकि वजन अक्सर 0 से W में बदलता रहता है। इस दृष्टिकोण से, हम इस पद्धति को प्रोग्राम कर सकते हैं ताकि यह पुनरावर्ती रूप से चले।
चूँकि , यदि हम इसे  या दो कदम आगे ले जाते हैं, तो हमें पता होना चाहिए कि विधि <math>O(nW)</math> और <math>O(2^n)</math> के बीच के समय में चलेगी। परिभाषा ए से, हम जानते हैं कि सभी भारों की गणना करने की कोई आवश्यकता नहीं है जब वस्तुओं की संख्या और हमारे द्वारा चुने गए आइटम स्वयं तय होते हैं। कहने का तात्पर्य यह है कि ऊपर दिया गया प्रोग्राम आवश्यकता से अधिक गणना करता है क्योंकि वजन अधिकांशतः  0 से W में बदलता रहता है। इस दृष्टिकोण से, हम इस पद्धति को प्रोग्राम कर सकते हैं जिससे यह पुनरावर्ती रूप से चले।


<सिंटैक्सहाइलाइट लैंग = सी लाइन = 1>
<सिंटैक्सहाइलाइट लैंग = सी लाइन = 1>
Line 115: Line 115:
// बस्ता क्षमता (डब्ल्यू)
// बस्ता क्षमता (डब्ल्यू)


// नोट: सरणी v और सरणी w को इंडेक्स 1 से शुरू होने वाले सभी प्रासंगिक मानों को संग्रहीत करने के लिए माना जाता है।
// नोट: सरणी v और सरणी w को इंडेक्स 1 से प्रारंभ  होने वाले सभी प्रासंगिक मानों को संग्रहीत करने के लिए माना जाता है।


मूल्य परिभाषित करें [एन, डब्ल्यू]
मूल्य परिभाषित करें [एन, डब्ल्यू]
Line 121: Line 121:
सभी मान प्रारंभ करें [i, j] = -1
सभी मान प्रारंभ करें [i, j] = -1


परिभाषित एम: = (आई, जे) // फ़ंक्शन एम को परिभाषित करें ताकि यह उस अधिकतम मूल्य का प्रतिनिधित्व करे जो हम शर्त के तहत प्राप्त कर सकते हैं: पहले आई आइटम का उपयोग करें, कुल वजन सीमा जे है
परिभाषित एम: = (आई, जे) // फ़ंक्शन एम को परिभाषित करें जिससे यह उस अधिकतम मूल्य का प्रतिनिधित्व करे जो हम शर्त के अनुसार  प्राप्त कर सकते हैं: पहले आई आइटम का उपयोग करें, कुल वजन सीमा जे है


{
{
     अगर मैं == 0 या जे <= 0 तो:
     यदि  मैं == 0 या जे <= 0 तो:
         मान [i, j] = 0
         मान [i, j] = 0
         वापस करना
         वापस करना
Line 131: Line 131:
         एम (आई -1, जे)
         एम (आई -1, जे)


     अगर w[i] > j तो: // आइटम बैग में फिट नहीं हो सकता
     यदि  w[i] > j तो: // आइटम बैग में फिट नहीं हो सकता
         मान [i, j] = मान [i-1, j]
         मान [i, j] = मान [i-1, j]
     अन्य:
     अन्य:
Line 161: Line 161:
&m(1, 67) = 505, m(1, 49) = 505, m(1, 47) = 505, m(1, 41) = 505, m(1, 40) = 505, m(1, 38) = 505, m(1, 37) = 505, m(1, 35) = 505, m(1, 29) = 505, m(1, 23) = 505\\
&m(1, 67) = 505, m(1, 49) = 505, m(1, 47) = 505, m(1, 41) = 505, m(1, 40) = 505, m(1, 38) = 505, m(1, 37) = 505, m(1, 35) = 505, m(1, 29) = 505, m(1, 23) = 505\\
\end{align}</math>
\end{align}</math>
इसके अलावा, हम रिकर्सन को तोड़ सकते हैं और इसे  पेड़ में बदल सकते हैं। तब हम कुछ पत्तियों को काट सकते हैं और समानांतर कंप्यूटिंग का उपयोग करके इस पद्धति को चलाने में तेजी ला सकते हैं।
इसके अतिरिक्त , हम रिकर्सन को तोड़ सकते हैं और इसे  पेड़ में बदल सकते हैं। तब हम कुछ पत्तियों को काट सकते हैं और समानांतर कंप्यूटिंग का उपयोग करके इस पद्धति को चलाने में तेजी ला सकते हैं।


वस्तुओं के वास्तविक उपसमुच्चय को खोजने के लिए, केवल उनके कुल मूल्य के बजाय, हम इसे ऊपर दिए गए फ़ंक्शन को चलाने के बाद चला सकते हैं:<nowiki><syntaxhighlight lang= c line= 1 ></nowiki>
वस्तुओं के वास्तविक उपसमुच्चय को खोजने के लिए, केवल उनके कुल मूल्य के अतिरिक्त , हम इसे ऊपर दिए गए फ़ंक्शन को चलाने के बाद चला सकते हैं:<nowiki><syntaxhighlight lang= c line= 1 ></nowiki>


/**
/**
  * इष्टतम नैकपैक की वस्तुओं के सूचकांक लौटाता है।
  * इष्टतम नैकपैक की वस्तुओं के सूचकांक लौटाता है।
  * i: हम नैकपैक में 1 से i तक के आइटम शामिल कर सकते हैं
  * i: हम नैकपैक में 1 से i तक के आइटम सम्मिलित  कर सकते हैं
  * जे: बैकपैक का अधिकतम वजन
  * जे: बैकपैक का अधिकतम वजन
  */
  */
फ़ंक्शन नैपसैक (i: int, j: int): सेट <int> {
फ़ंक्शन नैपसैक (i: int, j: int): समुच्चय  <int> {
     अगर मैं == 0 तो:
     यदि  मैं == 0 तो:
         वापस करना {}
         वापस करना {}
     अगर एम [आई, जे]> एम [आई -1, जे] तो:
     यदि  एम [आई, जे]> एम [आई -1, जे] तो:
         वापसी {i} ∪ बस्ता (i-1, j-w [i])
         वापसी {i} ∪ बस्ता (i-1, j-w [i])
     अन्य:
     अन्य:
Line 197: Line 197:
  | s2cid = 16866858
  | s2cid = 16866858
  | hdl-access = free
  | hdl-access = free
  }}</ref>, जिसे कभी-कभी क्रिप्टोग्राफी में समान नाम वाले एल्गोरिदम के समानांतर होने के कारण "मीट-इन-द-मिडल" कहा जाता है, विभिन्न मदों की संख्या में घातीय है लेकिन इसके लिए बेहतर हो सकता है डीपी एल्गोरिथम जब <math>W</math> n की तुलना में बड़ा होता है। विशेष रूप से, यदि <math>w_i</math> गैर-नकारात्मक हैं, लेकिन पूर्णांक नहीं हैं, तब भी हम स्केलिंग और राउंडिंग (यानी [[निश्चित-बिंदु अंकगणित|निश्चित-बिंदु अंकगणितीय]] का उपयोग करके) द्वारा गतिशील प्रोग्रामिंग एल्गोरिदम का उपयोग कर सकते हैं, लेकिन अगर समस्या के लिए सटीकता के भिन्नात्मक अंकों की आवश्यकता होती है सही उत्तर, <math>W</math> को <math>10^d</math> से स्केल करने की आवश्यकता होगी, और डीपी एल्गोरिदम को <math>O(W10^d)</math> स्पेस और <math>O(nW10^d)</math> समय की आवश्यकता होगी।
  }}</ref>, जिसे कभी-कभी क्रिप्टोग्राफी में समान नाम वाले एल्गोरिदम के समानांतर होने के कारण "मीट-इन-द-मिडल" कहा जाता है, विभिन्न मदों की संख्या में घातीय है किन्तु इसके लिए बढ़िया  हो सकता है डीपी एल्गोरिथम जब <math>W</math> n की तुलना में बड़ा होता है। विशेष रूप से, यदि <math>w_i</math> गैर-नकारात्मक हैं, किन्तु पूर्णांक नहीं हैं, तब भी हम स्केलिंग और राउंडिंग (अर्थात  [[निश्चित-बिंदु अंकगणित|निश्चित-बिंदु अंकगणितीय]] का उपयोग करके) द्वारा गतिशील प्रोग्रामिंग एल्गोरिदम का उपयोग कर सकते हैं, किन्तु यदि  समस्या के लिए त्रुटिहीन  के भिन्नात्मक अंकों की आवश्यकता होती है सही उत्तर, <math>W</math> को <math>10^d</math> से स्केल करने की आवश्यकता होगी, और डीपी एल्गोरिदम को <math>O(W10^d)</math> स्पेस और <math>O(nW10^d)</math> समय की आवश्यकता होगी।


  एल्गोरिदम मीट-इन-द-बीच है
  एल्गोरिदम मीट-इन-द-बीच है
     इनपुट: वजन और मूल्यों के साथ वस्तुओं का  सेट।
     इनपुट: वजन और मूल्यों के साथ वस्तुओं का  समुच्चय ।
     आउटपुट: सबसेट का सबसे बड़ा संयुक्त मूल्य।
     आउटपुट: सबसेट का सबसे बड़ा संयुक्त मूल्य।
   
   
     सेट {1...''n''} को लगभग समान आकार के दो सेट ''A'' और ''B'' में विभाजित करें
     समुच्चय  {1...''n''} को लगभग समान आकार के दो समुच्चय  ''A'' और ''B'' में विभाजित करें
     प्रत्येक सेट के सभी उपसमूहों के वजन और मूल्यों की गणना करें
     प्रत्येक समुच्चय  के सभी उपसमूहों के वजन और मूल्यों की गणना करें
   
   
     ''ए'' के प्रत्येक उपसमुच्चय के लिए करें
     ''ए'' के प्रत्येक उपसमुच्चय के लिए करें
Line 211: Line 211:
     अब तक देखे गए सबसे बड़े संयुक्त मूल्य का ट्रैक रखें
     अब तक देखे गए सबसे बड़े संयुक्त मूल्य का ट्रैक रखें


एल्गोरिदम <math>O(2^{n/2})</math> स्थान लेता है, और चरण 3 के कुशल कार्यान्वयन (उदाहरण के लिए, वजन के आधार पर B के सबसेट को छांटना, B के सबसेट को छोड़ना जो अधिक या बराबर मूल्य के B के अन्य सबसेट से अधिक वजन का होता है , और सर्वोत्तम मिलान खोजने के लिए बाइनरी खोज का उपयोग करके) <math>O(n2^{n/2})</math> के रनटाइम में परिणामित होता है। क्रिप्टोग्राफी में मीट इन मिडल अटैक के साथ, यह <math>O(n2^n)</math> रनटाइम पर  भोली क्रूर बल दृष्टिकोण (<math>\{1...n\}</math> के सभी सबसेट की जांच) के रनटाइम में सुधार करता है, इसकी कीमत पर निरंतर स्थान के बजाय घातांक का उपयोग करना ([[बेबी-स्टेप जाइंट-स्टेप]] भी देखें)। मीट-इन-द-मिडल एल्गोरिथम में सुधार की वर्तमान स्थिति, सबसेट योग के लिए श्रोएप्पेल और शमीर के एल्गोरिथम से अंतर्दृष्टि का उपयोग करते हुए, नैपसैक के लिए  यादृच्छिक एल्गोरिथम के रूप में प्रदान करता है जो <math>O^{*}(2^{n/2})</math> (बहुपद कारकों तक) चलने का समय और स्थान की आवश्यकताओं को <math>O^{*}(2^{0.249999n})</math> तक कम कर देता है (देखें [24] परिणाम 1.4) <ref>{{Cite arXiv |last1=Nederlof |first1=Jesper |last2=Węgrzycki |first2=Karol |date=2021-04-12 |title=ऑर्थोगोनल वैक्टर के माध्यम से सबसेट सम के लिए श्रोएपेल और शमीर के एल्गोरिदम में सुधार|class=cs.DS |eprint=2010.08576 }}</ref>। इसके विपरीत, सबसे प्रसिद्ध नियतात्मक एल्गोरिथ्म <math>O^{*}(2^{n/2})</math> समय में<math>O^{*}(2^{n/4})</math>।
एल्गोरिदम <math>O(2^{n/2})</math> स्थान लेता है, और चरण 3 के कुशल कार्यान्वयन (उदाहरण के लिए, वजन के आधार पर B के सबसेट को छांटना, B के सबसेट को छोड़ना जो अधिक या बराबर मूल्य के B के अन्य सबसेट से अधिक वजन का होता है , और सर्वोत्तम मिलान खोजने के लिए बाइनरी खोज का उपयोग करके) <math>O(n2^{n/2})</math> के रनटाइम में परिणामित होता है। क्रिप्टोग्राफी में मीट इन मिडल अटैक के साथ, यह <math>O(n2^n)</math> रनटाइम पर  भोली क्रूर बल दृष्टिकोण (<math>\{1...n\}</math> के सभी सबसेट की जांच) के रनटाइम में सुधार करता है, इसकी कीमत पर निरंतर स्थान के अतिरिक्त  घातांक का उपयोग करना ([[बेबी-स्टेप जाइंट-स्टेप]] भी देखें)। मीट-इन-द-मिडल एल्गोरिथम में सुधार की वर्तमान स्थिति, सबसेट योग के लिए श्रोएप्पेल और शमीर के एल्गोरिथम से अंतर्दृष्टि का उपयोग करते हुए, नैपसैक के लिए  यादृच्छिक एल्गोरिथम के रूप में प्रदान करता है जो <math>O^{*}(2^{n/2})</math> (बहुपद कारकों तक) चलने का समय और स्थान की आवश्यकताओं को <math>O^{*}(2^{0.249999n})</math> तक कम कर देता है (देखें [24] परिणाम 1.4) <ref>{{Cite arXiv |last1=Nederlof |first1=Jesper |last2=Węgrzycki |first2=Karol |date=2021-04-12 |title=ऑर्थोगोनल वैक्टर के माध्यम से सबसेट सम के लिए श्रोएपेल और शमीर के एल्गोरिदम में सुधार|class=cs.DS |eprint=2010.08576 }}</ref>। इसके विपरीत, सबसे प्रसिद्ध नियतात्मक एल्गोरिथ्म <math>O^{*}(2^{n/2})</math> समय में<math>O^{*}(2^{n/4})</math>।


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


कई उपयोगी लेकिन कम्प्यूटेशनल रूप से जटिल एल्गोरिदम के साथ, एल्गोरिदम बनाने और विश्लेषण करने पर पर्याप्त शोध किया गया है जो  समाधान का अनुमान लगाता है। नैपसैक समस्या, हालांकि एनपी-हार्ड, एल्गोरिदम के संग्रह में से  है जिसे अभी भी किसी निर्दिष्ट डिग्री तक अनुमानित किया जा सकता है। इसका मतलब है कि समस्या में  बहुपद समय सन्निकटन योजना है। सटीक होने के लिए, नैकपैक समस्या में  पूर्ण बहुपद समय सन्निकटन योजना (एफपीटीएएस ) है।<ref name="Vazirani, Vijay 2003">Vazirani, Vijay. Approximation Algorithms. Springer-Verlag Berlin Heidelberg, 2003.</ref>
कई उपयोगी किन्तु कम्प्यूटेशनल रूप से जटिल एल्गोरिदम के साथ, एल्गोरिदम बनाने और विश्लेषण करने पर पर्याप्त शोध किया गया है जो  समाधान का अनुमान लगाता है। नैपसैक समस्या, चूंकि  एनपी-हार्ड, एल्गोरिदम के संग्रह में से  है जिसे अभी भी किसी निर्दिष्ट डिग्री तक अनुमानित किया जा सकता है। इसका मतलब है कि समस्या में  बहुपद समय सन्निकटन योजना है। स्पष्ट  होने के लिए, नैकपैक समस्या में  पूर्ण बहुपद समय सन्निकटन योजना (एफपीटीएएस ) है।<ref name="Vazirani, Vijay 2003">Vazirani, Vijay. Approximation Algorithms. Springer-Verlag Berlin Heidelberg, 2003.</ref>




==== लालची सन्निकटन एल्गोरिथम ====
==== लालची सन्निकटन एल्गोरिथम ====
[[जॉर्ज डेंजिग|जॉर्ज डेंटज़िग]] ने असीम नैपसैक समस्या को हल करने के लिए  लालची सन्निकटन एल्गोरिथम प्रस्तावित किया। <ref name="dantzig1957">{{cite journal | last1 = Dantzig | first1 = George B. | author-link = George Dantzig | year = 1957 | title = असतत-चर चरम समस्याएं| journal = Operations Research | volume = 5 | issue = 2| pages = 266–288 | doi = 10.1287/opre.5.2.266 }}</ref> उसका संस्करण वजन की प्रति इकाई मूल्य के घटते क्रम में वस्तुओं को क्रमबद्ध करता है, <math>v_1/w_1\ge\cdots\ge v_n/w_n</math>। यह तब उन्हें बोरी में डालने के लिए आगे बढ़ता है, पहले प्रकार के आइटम की जितनी संभव हो उतनी प्रतियों के साथ शुरू होता है जब तक कि बोरी में और अधिक जगह न हो। बशर्ते कि प्रत्येक प्रकार की वस्तु की असीमित आपूर्ति हो, यदि m बोरी में फिट होने वाली वस्तुओं का अधिकतम मूल्य है, तो लालची एल्गोरिथ्म को कम से कम <math>m/2</math> का मान प्राप्त करने की गारंटी है।
[[जॉर्ज डेंजिग|जॉर्ज डेंटज़िग]] ने असीम नैपसैक समस्या को हल करने के लिए  लालची सन्निकटन एल्गोरिथम प्रस्तावित किया। <ref name="dantzig1957">{{cite journal | last1 = Dantzig | first1 = George B. | author-link = George Dantzig | year = 1957 | title = असतत-चर चरम समस्याएं| journal = Operations Research | volume = 5 | issue = 2| pages = 266–288 | doi = 10.1287/opre.5.2.266 }}</ref> उसका संस्करण वजन की प्रति इकाई मूल्य के घटते क्रम में वस्तुओं को क्रमबद्ध करता है, <math>v_1/w_1\ge\cdots\ge v_n/w_n</math>। यह तब उन्हें बोरी में डालने के लिए आगे बढ़ता है, पहले प्रकार के आइटम की जितनी संभव हो उतनी प्रतियों के साथ प्रारंभ  होता है जब तक कि बोरी में और अधिक स्थान  न हो। बशर्ते कि प्रत्येक प्रकार की वस्तु की असीमित आपूर्ति हो, यदि m बोरी में फिट होने वाली वस्तुओं का अधिकतम मूल्य है, तो लालची एल्गोरिथ्म को कम से कम <math>m/2</math> का मान प्राप्त करने की गारंटी है।


परिबद्ध समस्या के लिए, जहाँ प्रत्येक प्रकार की वस्तु की आपूर्ति सीमित है, उपरोक्त एल्गोरिथम इष्टतम से बहुत दूर हो सकता है। फिर भी,  साधारण संशोधन हमें इस मामले को हल करने की अनुमति देता है: सादगी के लिए मान लें कि सभी आइटम अलग-अलग बोरी में फिट होते हैं (<math>w_i \le W</math> सभी के लिए <math>i</math>)। यथासंभव लंबे समय तक वस्तुओं को लालच से पैक करके समाधान <math>S_1</math> का निर्माण करें, अर्थात <math>S_1=\left\{1,\ldots,k\right\}</math>जहां <math>k=\textstyle\max_{1\le k'\le n}\textstyle\sum_{i=1}^{k'} w_i\le W</math>. इसके अलावा,  दूसरे समाधान का निर्माण करें <math>S_2=\left\{k+1\right\}</math> जिसमें पहला आइटम फिट नहीं हुआ। चूँकि <math>S_1\cup S_2</math> समस्या के LP [[रैखिक प्रोग्रामिंग छूट]] के लिए  ऊपरी सीमा प्रदान करता है, सेट में से  का मान कम से कम <math>m/2</math> होना चाहिए; हम इस प्रकार <math>S_1</math> और <math>S_2</math> में से जो भी लौटाते हैं उसका <math>1/2</math>-सन्निकटन प्राप्त करने के लिए बेहतर मूल्य है।
परिबद्ध समस्या के लिए, जहाँ प्रत्येक प्रकार की वस्तु की आपूर्ति सीमित है, उपरोक्त एल्गोरिथम इष्टतम से बहुत दूर हो सकता है। फिर भी,  साधारण संशोधन हमें इस स्थितियों को हल करने की अनुमति देता है: सादगी के लिए मान लें कि सभी आइटम अलग-अलग बोरी में फिट होते हैं (<math>w_i \le W</math> सभी के लिए <math>i</math>)। यथासंभव लंबे समय तक वस्तुओं को लालच से पैक करके समाधान <math>S_1</math> का निर्माण करें, अर्थात <math>S_1=\left\{1,\ldots,k\right\}</math>जहां <math>k=\textstyle\max_{1\le k'\le n}\textstyle\sum_{i=1}^{k'} w_i\le W</math>. इसके अतिरिक्त ,  दूसरे समाधान का निर्माण करें <math>S_2=\left\{k+1\right\}</math> जिसमें पहला आइटम फिट नहीं हुआ। चूँकि <math>S_1\cup S_2</math> समस्या के LP [[रैखिक प्रोग्रामिंग छूट]] के लिए  ऊपरी सीमा प्रदान करता है, समुच्चय  में से  का मान कम से कम <math>m/2</math> होना चाहिए; हम इस प्रकार <math>S_1</math> और <math>S_2</math> में से जो भी लौटाते हैं उसका <math>1/2</math>-सन्निकटन प्राप्त करने के लिए बढ़िया  मूल्य है।


यह दिखाया जा सकता है कि औसत प्रदर्शन त्रुटि दर पर वितरण में इष्टतम समाधान में परिवर्तित हो जाता है <math> n^{-1/2}</math> <ref>{{cite journal |last1=Calvin |first1=James M. |last2=Leung |first2=Joseph Y. -T. |title=Average-case analysis of a greedy algorithm for the 0/1 knapsack problem |journal=Operations Research Letters |date=1 May 2003 |volume=31 |issue=3 |pages=202–210 |doi=10.1016/S0167-6377(02)00222-5 }}</ref>
यह दिखाया जा सकता है कि औसत प्रदर्शन त्रुटि दर पर वितरण में इष्टतम समाधान में परिवर्तित हो जाता है <math> n^{-1/2}</math> <ref>{{cite journal |last1=Calvin |first1=James M. |last2=Leung |first2=Joseph Y. -T. |title=Average-case analysis of a greedy algorithm for the 0/1 knapsack problem |journal=Operations Research Letters |date=1 May 2003 |volume=31 |issue=3 |pages=202–210 |doi=10.1016/S0167-6377(02)00222-5 }}</ref>
Line 228: Line 228:


==== पूरी तरह से बहुपद समय सन्निकटन योजना ====
==== पूरी तरह से बहुपद समय सन्निकटन योजना ====
नैपसैक समस्या के लिए पूरी तरह से बहुपद समय सन्निकटन योजना (एफपीटीएएस) इस तथ्य का लाभ उठाती है कि समस्या का कोई ज्ञात बहुपद समय समाधान नहीं है क्योंकि वस्तुओं से जुड़े लाभ प्रतिबंधित नहीं हैं। यदि कोई लाभ मूल्यों के कम से कम महत्वपूर्ण अंकों में से कुछ को गोल करता है तो वे  बहुपद और 1/ε से बंधे होंगे जहां ε समाधान की शुद्धता पर बाध्य है। इस प्रतिबंध का मतलब है कि  एल्गोरिदम बहुपद समय में समाधान ढूंढ सकता है जो इष्टतम समाधान के (1-ε) के कारक के भीतर सही है।<ref name="Vazirani, Vijay 2003"/>
नैपसैक समस्या के लिए पूरी तरह से बहुपद समय सन्निकटन योजना (एफपीटीएएस) इस तथ्य का लाभ उठाती है कि समस्या का कोई ज्ञात बहुपद समय समाधान नहीं है क्योंकि वस्तुओं से जुड़े लाभ प्रतिबंधित नहीं हैं। यदि कोई लाभ मूल्यों के कम से कम महत्वपूर्ण अंकों में से कुछ को गोल करता है तो वे  बहुपद और 1/ε से बंधे होंगे जहां ε समाधान की शुद्धता पर बाध्य है। इस प्रतिबंध का मतलब है कि  एल्गोरिदम बहुपद समय में समाधान ढूंढ सकता है जो इष्टतम समाधान के (1-ε) के कारक के अंदर  सही है।<ref name="Vazirani, Vijay 2003"/>


एल्गोरिथम एफपीटीएएस  है
एल्गोरिथम एफपीटीएएस  है
Line 246: Line 246:


=== प्रभुत्व संबंध ===
=== प्रभुत्व संबंध ===
असीमित नैपसेक समस्या का समाधान उन वस्तुओं को फेंक कर आसान बनाया जा सकता है जिनकी कभी आवश्यकता नहीं होगी। किसी दिए गए आइटम <math>i</math> के लिए, मान लीजिए कि हम आइटम <math>J</math> का  सेट पा सकते हैं जैसे कि उनका कुल वजन <math>i</math> के वजन से कम है, और उनका कुल मूल्य i के मान से अधिक है। तब मैं इष्टतम समाधान में प्रकट नहीं हो सकता, क्योंकि हम सेट जे के साथ <math>i</math> को बदलकर हमेशा किसी भी संभावित समाधान में सुधार कर सकते हैं। इसलिए, हम <math>i</math>-वें आइटम को पूरी तरह से अनदेखा कर सकते हैं। ऐसे मामलों में, <math>J</math> को <math>i</math> पर हावी कहा जाता है। (ध्यान दें कि यह बंधी हुई नैकपैक समस्याओं पर लागू नहीं होता है, क्योंकि हो सकता है कि हमने पहले ही <math>J</math> में आइटम का उपयोग कर लिया हो।)
असीमित नैपसेक समस्या का समाधान उन वस्तुओं को फेंक कर आसान बनाया जा सकता है जिनकी कभी आवश्यकता नहीं होगी। किसी दिए गए आइटम <math>i</math> के लिए, मान लीजिए कि हम आइटम <math>J</math> का  समुच्चय  पा सकते हैं जैसे कि उनका कुल वजन <math>i</math> के वजन से कम है, और उनका कुल मूल्य i के मान से अधिक है। तब मैं इष्टतम समाधान में प्रकट नहीं हो सकता, क्योंकि हम समुच्चय  जे के साथ <math>i</math> को बदलकर सदैव  किसी भी संभावित समाधान में सुधार कर सकते हैं। इसलिए, हम <math>i</math>-वें आइटम को पूरी तरह से अनदेखा कर सकते हैं। ऐसे स्थितियों में, <math>J</math> को <math>i</math> पर हावी कहा जाता है। (ध्यान दें कि यह बंधी हुई नैकपैक समस्याओं पर प्रयुक्त  नहीं होता है, क्योंकि हो सकता है कि हमने पहले ही <math>J</math> में आइटम का उपयोग कर लिया हो।)


[[प्रभुत्व संबंध]] ढूँढना हमें खोज स्थान के आकार को महत्वपूर्ण रूप से कम करने की अनुमति देता है। कई अलग-अलग प्रकार के प्रभुत्व संबंध हैं,<ref name="poirriez_et_all_2009" />जो सभी फॉर्म की असमानता को पूरा करते हैं:
[[प्रभुत्व संबंध]] ढूँढना हमें खोज स्थान के आकार को महत्वपूर्ण रूप से कम करने की अनुमति देता है। कई अलग-अलग प्रकार के प्रभुत्व संबंध हैं,<ref name="poirriez_et_all_2009" />जो सभी फॉर्म की असमानता को पूरा करते हैं:
Line 255: Line 255:


सामूहिक प्रभुत्व: <math>i</math>वें>-वें आइटम का सामूहिक रूप से प्रभुत्व है <math>J</math>, के रूप में लिखा गया है <math>i\ll J</math>, यदि मदों के कुछ संयोजन का कुल भार <math>J</math> डब्ल्यू से कम है<sub>i</sub>और उनका कुल मान v से अधिक है<sub>i</sub>. औपचारिक रूप से, <math>\sum_{j \in J} w_j\,x_j \ \le  w_i</math> और <math>\sum_{j \in J} v_j\,x_j \ \ge v_i</math> कुछ के लिए <math>x \in Z _+^n </math>, अर्थात। <math>\alpha=1</math>. इस प्रभुत्व को सत्यापित करना कम्प्यूटेशनल रूप से कठिन है, इसलिए इसका उपयोग केवल  गतिशील प्रोग्रामिंग दृष्टिकोण के साथ किया जा सकता है। वास्तव में, यह  छोटी नैकपैक निर्णय समस्या को हल करने के बराबर है <math>V = v_i</math>, <math>W = w_i</math>, और आइटम प्रतिबंधित हैं <math>J</math>.
सामूहिक प्रभुत्व: <math>i</math>वें>-वें आइटम का सामूहिक रूप से प्रभुत्व है <math>J</math>, के रूप में लिखा गया है <math>i\ll J</math>, यदि मदों के कुछ संयोजन का कुल भार <math>J</math> डब्ल्यू से कम है<sub>i</sub>और उनका कुल मान v से अधिक है<sub>i</sub>. औपचारिक रूप से, <math>\sum_{j \in J} w_j\,x_j \ \le  w_i</math> और <math>\sum_{j \in J} v_j\,x_j \ \ge v_i</math> कुछ के लिए <math>x \in Z _+^n </math>, अर्थात। <math>\alpha=1</math>. इस प्रभुत्व को सत्यापित करना कम्प्यूटेशनल रूप से कठिन है, इसलिए इसका उपयोग केवल  गतिशील प्रोग्रामिंग दृष्टिकोण के साथ किया जा सकता है। वास्तव में, यह  छोटी नैकपैक निर्णय समस्या को हल करने के बराबर है <math>V = v_i</math>, <math>W = w_i</math>, और आइटम प्रतिबंधित हैं <math>J</math>.
दहलीज प्रभुत्व: <math>i</math>वां>-वां आइटम दहलीज का प्रभुत्व है <math>J</math>, के रूप में लिखा गया है <math>i\prec\prec J</math>, अगर कुछ प्रतियों की संख्या <math>i</math> का बोलबाला है <math>J</math>. औपचारिक रूप से, <math>\sum_{j \in J} w_j\,x_j \ \le  \alpha\,w_i</math>, और <math>\sum_{j \in J} v_j\,x_j \ \ge \alpha\,v_i\,</math> कुछ के लिए <math>x \in Z _+^n </math> और <math>\alpha\geq 1</math>. यह सामूहिक प्रभुत्व का  सामान्यीकरण है, जिसे पहली बार में पेश किया गया था<ref name="eduk2000"/>और EDUK एल्गोरिथ्म में उपयोग किया जाता है। सबसे छोटा ऐसा <math>\alpha</math> आइटम की दहलीज को परिभाषित करता है <math>i</math>, लिखा हुआ  <math>t_i =(\alpha-1)w_i</math>. इस मामले में, इष्टतम समाधान में अधिकतम शामिल हो सकता है <math>\alpha-1</math> की प्रतियां <math>i</math>.
दहलीज प्रभुत्व: <math>i</math>वां>-वां आइटम दहलीज का प्रभुत्व है <math>J</math>, के रूप में लिखा गया है <math>i\prec\prec J</math>, यदि  कुछ प्रतियों की संख्या <math>i</math> का बोलबाला है <math>J</math>. औपचारिक रूप से, <math>\sum_{j \in J} w_j\,x_j \ \le  \alpha\,w_i</math>, और <math>\sum_{j \in J} v_j\,x_j \ \ge \alpha\,v_i\,</math> कुछ के लिए <math>x \in Z _+^n </math> और <math>\alpha\geq 1</math>. यह सामूहिक प्रभुत्व का  सामान्यीकरण है, जिसे पहली बार में प्रस्तुत किया गया था<ref name="eduk2000"/>और EDUK एल्गोरिथ्म में उपयोग किया जाता है। सबसे छोटा ऐसा <math>\alpha</math> आइटम की दहलीज को परिभाषित करता है <math>i</math>, लिखा हुआ  <math>t_i =(\alpha-1)w_i</math>. इस स्थितियों में, इष्टतम समाधान में अधिकतम सम्मिलित  हो सकता है <math>\alpha-1</math> की प्रतियां <math>i</math>.
एकाधिक प्रभुत्व: <math>i</math>वें>-वें आइटम में  ही आइटम का गुणन होता है <math>j</math>, के रूप में लिखा गया है <math>i\ll_{m} j</math>, अगर <math>i</math> की कुछ प्रतियों का प्रभुत्व है <math>j</math>. औपचारिक रूप से, <math>w_j\,x_j \ \le  w_i</math>, और <math>v_j\,x_j \ \ge v_i</math> कुछ के लिए <math>x_j \in Z _+ </math> अर्थात। <math> J=\{j\}, \alpha=1,  x_j=\lfloor \frac{w_i}{w_j}\rfloor</math>. प्रीप्रोसेसिंग के दौरान इस प्रभुत्व का कुशलता से उपयोग किया जा सकता है क्योंकि इसका अपेक्षाकृत आसानी से पता लगाया जा सकता है।
एकाधिक प्रभुत्व: <math>i</math>वें>-वें आइटम में  ही आइटम का गुणन होता है <math>j</math>, के रूप में लिखा गया है <math>i\ll_{m} j</math>, यदि  <math>i</math> की कुछ प्रतियों का प्रभुत्व है <math>j</math>. औपचारिक रूप से, <math>w_j\,x_j \ \le  w_i</math>, और <math>v_j\,x_j \ \ge v_i</math> कुछ के लिए <math>x_j \in Z _+ </math> अर्थात। <math> J=\{j\}, \alpha=1,  x_j=\lfloor \frac{w_i}{w_j}\rfloor</math>. प्रीप्रोसेसिंग के समय इस प्रभुत्व का कुशलता से उपयोग किया जा सकता है क्योंकि इसका अपेक्षाकृत आसानी से पता लगाया जा सकता है।
मॉड्यूलर प्रभुत्व: चलो <math>b</math> सर्वोत्तम वस्तु हो, अर्थात् <math>\frac{v_b}{w_b}\ge\frac{v_i}{w_i}\, </math> सभी के लिए <math>i</math>. यह मूल्य के सबसे बड़े घनत्व वाला आइटम है। <math>i</math>th>-th आइटम मॉड्यूलर रूप से एकल आइटम का प्रभुत्व है <math>j</math>, के रूप में लिखा गया है <math>i\ll_\equiv j</math>, अगर <math>i</math> का बोलबाला है <math>j</math> साथ ही की कई प्रतियाँ <math>b</math>. औपचारिक रूप से, <math> w_j+tw_b \le w_i</math>, और  <math>v_j +tv_b \ge v_i </math> अर्थात। <math>J=\{b,j\}, \alpha=1,  x_b=t, x_j=1</math>.
मॉड्यूलर प्रभुत्व: चलो <math>b</math> सर्वोत्तम वस्तु हो, अर्थात् <math>\frac{v_b}{w_b}\ge\frac{v_i}{w_i}\, </math> सभी के लिए <math>i</math>. यह मूल्य के सबसे बड़े घनत्व वाला आइटम है। <math>i</math>th>-th आइटम मॉड्यूलर रूप से एकल आइटम का प्रभुत्व है <math>j</math>, के रूप में लिखा गया है <math>i\ll_\equiv j</math>, यदि  <math>i</math> का बोलबाला है <math>j</math> साथ ही की कई प्रतियाँ <math>b</math>. औपचारिक रूप से, <math> w_j+tw_b \le w_i</math>, और  <math>v_j +tv_b \ge v_i </math> अर्थात। <math>J=\{b,j\}, \alpha=1,  x_b=t, x_j=1</math>.


== विविधताएं ==
== विविधताएं ==
Line 265: Line 265:


=== बहुउद्देश्यीय नैकपैक समस्या ===
=== बहुउद्देश्यीय नैकपैक समस्या ===
यह भिन्नता थैला भरने वाले व्यक्ति के लक्ष्य को बदल देती है।  उद्देश्य के बजाय, जैसे कि मौद्रिक लाभ को अधिकतम करना, उद्देश्य के कई आयाम हो सकते हैं। उदाहरण के लिए, पर्यावरण या सामाजिक सरोकार के साथ-साथ आर्थिक लक्ष्य भी हो सकते हैं। जिन समस्याओं को अक्सर संबोधित किया जाता है उनमें पोर्टफोलियो और परिवहन रसद अनुकूलन शामिल हैं।<ref>Chang, T. J., et al. [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.109.6698&rep=rep1&type=pdf Heuristics for Cardinality Constrained Portfolio Optimization].
यह भिन्नता थैला भरने वाले व्यक्ति के लक्ष्य को बदल देती है।  उद्देश्य के अतिरिक्त , जैसे कि मौद्रिक लाभ को अधिकतम करना, उद्देश्य के कई आयाम हो सकते हैं। उदाहरण के लिए, पर्यावरण या सामाजिक सरोकार के साथ-साथ आर्थिक लक्ष्य भी हो सकते हैं। जिन समस्याओं को अधिकांशतः  संबोधित किया जाता है उनमें पोर्टफोलियो और परिवहन रसद अनुकूलन सम्मिलित  हैं।<ref>Chang, T. J., et al. [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.109.6698&rep=rep1&type=pdf Heuristics for Cardinality Constrained Portfolio Optimization].
Technical Report, London SW7 2AZ, England: The Management School, Imperial
Technical Report, London SW7 2AZ, England: The Management School, Imperial
College, May 1998</ref><ref>Chang, C. S., et al. "[https://scholarbank.nus.edu.sg/handle/10635/72660 Genetic Algorithm Based Bicriterion Optimization for Traction Substations in DC Railway System]." In Fogel [102], 11-16.</ref>
College, May 1998</ref><ref>Chang, C. S., et al. "[https://scholarbank.nus.edu.sg/handle/10635/72660 Genetic Algorithm Based Bicriterion Optimization for Traction Substations in DC Railway System]." In Fogel [102], 11-16.</ref>
Line 272: Line 272:


===बहुआयामी नैकपैक समस्या===
===बहुआयामी नैकपैक समस्या===
इस भिन्नता में, नैकपैक आइटम i का वजन  डी-आयामी वेक्टर <math>\overline{w_i}=(w_{i1},\ldots,w_{iD})</math> द्वारा दिया जाता है और नैपसैक में  डी- आयामी क्षमता वेक्टर <math>(W_1,\ldots,W_D)</math>। लक्ष्य बैकपैक में वस्तुओं के मूल्यों के योग को अधिकतम करना है ताकि प्रत्येक आयाम <math>d</math> में वजन का योग <math>W_d</math> से अधिक न हो।
इस भिन्नता में, नैकपैक आइटम i का वजन  डी-आयामी वेक्टर <math>\overline{w_i}=(w_{i1},\ldots,w_{iD})</math> द्वारा दिया जाता है और नैपसैक में  डी- आयामी क्षमता वेक्टर <math>(W_1,\ldots,W_D)</math>। लक्ष्य बैकपैक में वस्तुओं के मूल्यों के योग को अधिकतम करना है जिससे प्रत्येक आयाम <math>d</math> में वजन का योग <math>W_d</math> से अधिक न हो।


बहु-आयामी नैकपैक कम्प्यूटेशनल रूप से नैपसैक की तुलना में कठिन है; <math>D=2</math> के लिए भी, समस्या में [[EPTAS]] नहीं है जब तक कि P=NP नहीं है। <ref>{{cite journal | last1 = Kulik | first1 = A. | last2 = Shachnai | first2 = H. | author2-link = Hadas Shachnai | year = 2010 | title = द्विविमीय नैकपैक के लिए कोई ईपीटीएएस नहीं है| url = https://www.cs.technion.ac.il/~hadas/PUB/multi_knap.pdf| journal = Inf. Process. Lett. | volume = 110 | issue = 16| pages = 707–712 | doi=10.1016/j.ipl.2010.05.031| citeseerx = 10.1.1.161.5838 }}</ref> हालांकि, <ref name="CohenGrebla">Cohen, R. and Grebla, G. 2014. [http://wimnet.ee.columbia.edu/wp-content/uploads/2013/03/paper_short.pdf "Multi-Dimensional OFDMA Scheduling in a Wireless Network with Relay Nodes"]. in ''Proc. IEEE INFOCOM’14'', 2427–2435.</ref> में एल्गोरिथ्म विरल उदाहरणों को कुशलतापूर्वक हल करने के लिए दिखाया गया है। मल्टी-डायमेंशनल नैपसैक का  उदाहरण विरल है यदि <math>m<D</math> के लिए  सेट <math>J=\{1,2,\ldots,m\}</math> है जैसे कि प्रत्येक नैपसैक आइटम के लिए <math>i</math>,https://alpha.indicwiki.in/index.php?title=Special:MathShowImage&hash=4c04f2f6762e25ea2716a03df8f66691&mode=mathml ऐसा है कि <math>\forall j\in J\cup \{z\},\ w_{ij}\geq 0</math> और <math>\forall y\notin J\cup\{z\}, w_{iy}=0</math>. उदाहरण के लिए, ऐसे उदाहरण होते हैं, जब रिले नोड्स के साथ  वायरलेस नेटवर्क में पैकेट शेड्यूल करते हैं। <ref name=CohenGrebla/> <ref name="CohenGrebla" /> से एल्गोरिथ्म बहुविकल्पी संस्करण, बहुविकल्पी बहु-आयामी नैकपैक के विरल उदाहरणों को भी हल करता है।
बहु-आयामी नैकपैक कम्प्यूटेशनल रूप से नैपसैक की तुलना में कठिन है; <math>D=2</math> के लिए भी, समस्या में [[EPTAS]] नहीं है जब तक कि P=NP नहीं है। <ref>{{cite journal | last1 = Kulik | first1 = A. | last2 = Shachnai | first2 = H. | author2-link = Hadas Shachnai | year = 2010 | title = द्विविमीय नैकपैक के लिए कोई ईपीटीएएस नहीं है| url = https://www.cs.technion.ac.il/~hadas/PUB/multi_knap.pdf| journal = Inf. Process. Lett. | volume = 110 | issue = 16| pages = 707–712 | doi=10.1016/j.ipl.2010.05.031| citeseerx = 10.1.1.161.5838 }}</ref> चूंकि , <ref name="CohenGrebla">Cohen, R. and Grebla, G. 2014. [http://wimnet.ee.columbia.edu/wp-content/uploads/2013/03/paper_short.pdf "Multi-Dimensional OFDMA Scheduling in a Wireless Network with Relay Nodes"]. in ''Proc. IEEE INFOCOM’14'', 2427–2435.</ref> में एल्गोरिथ्म विरल उदाहरणों को कुशलतापूर्वक हल करने के लिए दिखाया गया है। मल्टी-डायमेंशनल नैपसैक का  उदाहरण विरल है यदि <math>m<D</math> के लिए  समुच्चय  <math>J=\{1,2,\ldots,m\}</math> है जैसे कि प्रत्येक नैपसैक आइटम के लिए <math>i</math>,https://alpha.indicwiki.in/index.php?title=Special:MathShowImage&hash=4c04f2f6762e25ea2716a03df8f66691&mode=mathml ऐसा है कि <math>\forall j\in J\cup \{z\},\ w_{ij}\geq 0</math> और <math>\forall y\notin J\cup\{z\}, w_{iy}=0</math>. उदाहरण के लिए, ऐसे उदाहरण होते हैं, जब रिले नोड्स के साथ  वायरलेस नेटवर्क में पैकेट शेड्यूल करते हैं। <ref name=CohenGrebla/> <ref name="CohenGrebla" /> से एल्गोरिथ्म बहुविकल्पी संस्करण, बहुविकल्पी बहु-आयामी नैकपैक के विरल उदाहरणों को भी हल करता है।


IHS (बढ़ती ऊंचाई शेल्फ़) एल्गोरिथम 2D नैकपैक (वर्गों को द्वि-आयामी इकाई आकार वर्ग में पैक करना) के लिए इष्टतम है: जब  इष्टतम पैकिंग में अधिकतम पाँच वर्ग होते हैं।<ref>Yan Lan, György Dósa, Xin Han, Chenyang Zhou, Attila Benkő [https://scholar.google.com/citations?user=txyI5aAAAAAJ]: ''2D knapsack: Packing squares'', Theoretical Computer Science Vol. 508, pp. 35–40.</ref>
IHS (बढ़ती ऊंचाई शेल्फ़) एल्गोरिथम 2D नैकपैक (वर्गों को द्वि-आयामी इकाई आकार वर्ग में पैक करना) के लिए इष्टतम है: जब  इष्टतम पैकिंग में अधिकतम पाँच वर्ग होते हैं।<ref>Yan Lan, György Dósa, Xin Han, Chenyang Zhou, Attila Benkő [https://scholar.google.com/citations?user=txyI5aAAAAAJ]: ''2D knapsack: Packing squares'', Theoretical Computer Science Vol. 508, pp. 35–40.</ref>
Line 280: Line 280:


=== एकाधिक बस्ता समस्या ===
=== एकाधिक बस्ता समस्या ===
यह भिन्नता बिन पैकिंग समस्या के समान है। यह बिन पैकिंग समस्या से भिन्न है जिसमें वस्तुओं का  सबसेट चुना जा सकता है, जबकि बिन पैकिंग समस्या में, सभी वस्तुओं को कुछ डिब्बे में पैक करना पड़ता है। अवधारणा यह है कि कई थैले हैं। यह  तुच्छ परिवर्तन की तरह लग सकता है, लेकिन यह प्रारंभिक नैकपैक की क्षमता को जोड़ने के बराबर नहीं है। इस भिन्नता का उपयोग ऑपरेशंस रिसर्च में कई लोडिंग और शेड्यूलिंग समस्याओं में किया जाता है और इसमें बहुपद-समय सन्निकटन योजना है।<ref>{{Cite journal|title=मल्टीपल नैपसैक समस्या के लिए एक पीटीएएस|journal = SIAM Journal on Computing|volume = 35|issue = 3|pages = 713–728|last=Chandra Chekuri and Sanjeev Khanna|date=2005|doi=10.1137/s0097539700382820|citeseerx = 10.1.1.226.3387}}</ref>
यह भिन्नता बिन पैकिंग समस्या के समान है। यह बिन पैकिंग समस्या से भिन्न है जिसमें वस्तुओं का  सबसेट चुना जा सकता है, जबकि बिन पैकिंग समस्या में, सभी वस्तुओं को कुछ डिब्बे में पैक करना पड़ता है। अवधारणा यह है कि कई थैले हैं। यह  तुच्छ परिवर्तन की तरह लग सकता है, किन्तु यह प्रारंभिक नैकपैक की क्षमता को जोड़ने के बराबर नहीं है। इस भिन्नता का उपयोग ऑपरेशंस रिसर्च में कई लोडिंग और शेड्यूलिंग समस्याओं में किया जाता है और इसमें बहुपद-समय सन्निकटन योजना है।<ref>{{Cite journal|title=मल्टीपल नैपसैक समस्या के लिए एक पीटीएएस|journal = SIAM Journal on Computing|volume = 35|issue = 3|pages = 713–728|last=Chandra Chekuri and Sanjeev Khanna|date=2005|doi=10.1137/s0097539700382820|citeseerx = 10.1.1.226.3387}}</ref>




===द्विघाती नैपसैक समस्या===
===द्विघाती नैपसैक समस्या===
द्विघातीय नैपसैक समस्या द्विघाती और रेखीय क्षमता प्रतिबंधों के अधीन द्विघात उद्देश्य फलन को अधिकतम करती है।<ref name=QKP>{{cite journal | title = द्विघात नैपसेक समस्याओं के लिए वैश्विक इष्टतमता की स्थिति और अनुकूलन के तरीके|author1=Wu, Z. Y. |author2=Yang, Y. J. |author3=Bai, F. S. |author4=Mammadov, M. | journal = J Optim Theory Appl | year = 2011 | volume = 151 |issue=2 | pages = 241&ndash;259 | doi = 10.1007/s10957-011-9885-4 |s2cid=31208118 }}</ref> समस्या को 1980 में गैलो, हैमर और शिमोन द्वारा पेश किया गया था।<ref>{{cite book | title = क्वाड्रैटिक नैपसैक समस्याएं|author1=Gallo, G. |author2=Hammer, P. L. |author3=Simeone, B. | journal = Mathematical Programming Studies | year = 1980 | volume = 12 | pages = 132&ndash;149 | doi = 10.1007/BFb0120892 |isbn=978-3-642-00801-6 }}</ref> हालाँकि, समस्या का पहला उपचार 1975 में विट्जगल में हुआ था।<ref>{{cite journal | title = इलेक्ट्रॉनिक संदेश प्रणाली (ईएमएस) के लिए साइट चयन के गणितीय तरीके| author = Witzgall, C. | journal = NASA Sti/Recon Technical Report N | publisher = NBS Internal report | year = 1975| volume = 76 | page = 18321 | bibcode = 1975STIN...7618321W }}</ref>
द्विघातीय नैपसैक समस्या द्विघाती और रेखीय क्षमता प्रतिबंधों के अधीन द्विघात उद्देश्य फलन को अधिकतम करती है।<ref name=QKP>{{cite journal | title = द्विघात नैपसेक समस्याओं के लिए वैश्विक इष्टतमता की स्थिति और अनुकूलन के तरीके|author1=Wu, Z. Y. |author2=Yang, Y. J. |author3=Bai, F. S. |author4=Mammadov, M. | journal = J Optim Theory Appl | year = 2011 | volume = 151 |issue=2 | pages = 241&ndash;259 | doi = 10.1007/s10957-011-9885-4 |s2cid=31208118 }}</ref> समस्या को 1980 में गैलो, हैमर और शिमोन द्वारा प्रस्तुत किया गया था।<ref>{{cite book | title = क्वाड्रैटिक नैपसैक समस्याएं|author1=Gallo, G. |author2=Hammer, P. L. |author3=Simeone, B. | journal = Mathematical Programming Studies | year = 1980 | volume = 12 | pages = 132&ndash;149 | doi = 10.1007/BFb0120892 |isbn=978-3-642-00801-6 }}</ref> चूँकि , समस्या का पहला उपचार 1975 में विट्जगल में हुआ था।<ref>{{cite journal | title = इलेक्ट्रॉनिक संदेश प्रणाली (ईएमएस) के लिए साइट चयन के गणितीय तरीके| author = Witzgall, C. | journal = NASA Sti/Recon Technical Report N | publisher = NBS Internal report | year = 1975| volume = 76 | page = 18321 | bibcode = 1975STIN...7618321W }}</ref>




=== सबसेट-योग समस्या ===
=== सबसेट-योग समस्या ===
[[सबसेट योग समस्या]] निर्णय का  विशेष मामला है और 0-1 समस्याएं हैं जहां प्रत्येक प्रकार की वस्तु, वजन मूल्य के बराबर होती है: <math>w_i=v_i</math>. [[क्रिप्टोग्राफी]] के क्षेत्र में, नैकपैक समस्या शब्द का प्रयोग अक्सर विशेष रूप से सबसेट योग समस्या को संदर्भित करने के लिए किया जाता है और इसे आमतौर पर कार्प की 21 एनपी-पूर्ण समस्याओं में से  के रूप में जाना जाता है।<ref>Richard M. Karp (1972). "[https://web.archive.org/web/20190608032217/https://pdfs.semanticscholar.org/a3c3/7657822859549cd6b12b0d1f76f8ee3680a0.pdf Reducibility Among Combinatorial Problems]". In R. E. Miller and J. W. Thatcher (editors). Complexity of Computer Computations. New York: Plenum. pp. 85–103</ref>
[[सबसेट योग समस्या]] निर्णय का  विशेष मामला है और 0-1 समस्याएं हैं जहां प्रत्येक प्रकार की वस्तु, वजन मूल्य के बराबर होती है: <math>w_i=v_i</math>. [[क्रिप्टोग्राफी]] के क्षेत्र में, नैकपैक समस्या शब्द का प्रयोग अधिकांशतः  विशेष रूप से सबसेट योग समस्या को संदर्भित करने के लिए किया जाता है और इसे सामान्यतः  कार्प की 21 एनपी-पूर्ण समस्याओं में से  के रूप में जाना जाता है।<ref>Richard M. Karp (1972). "[https://web.archive.org/web/20190608032217/https://pdfs.semanticscholar.org/a3c3/7657822859549cd6b12b0d1f76f8ee3680a0.pdf Reducibility Among Combinatorial Problems]". In R. E. Miller and J. W. Thatcher (editors). Complexity of Computer Computations. New York: Plenum. pp. 85–103</ref>


उपसमुच्चय योग समस्या के सामान्यीकरण को बहु उपसमुच्चय सम समस्या कहते हैं, जिसमें समान क्षमता वाले अनेक डिब्बे मौजूद होते हैं। यह दिखाया गया है कि सामान्यीकरण में [[FPTAS|एफपीटीएएस]]  नहीं है।<ref>{{cite journal | last1 = Caprara | first1 = Alberto | last2 = Kellerer | first2 = Hans | last3 = Pferschy | first3 = Ulrich | year = 2000 | title = मल्टीपल सब्मिट सम प्रॉब्लम| url = http://www.or.deis.unibo.it/alberto/mssp_siam.ps| journal = SIAM J. Optim. | volume = 11 | issue = 2| pages = 308–319 | doi = 10.1137/S1052623498348481 | citeseerx = 10.1.1.21.9826 }}</ref>
उपसमुच्चय योग समस्या के सामान्यीकरण को बहु उपसमुच्चय सम समस्या कहते हैं, जिसमें समान क्षमता वाले अनेक डिब्बे उपस्थित होते हैं। यह दिखाया गया है कि सामान्यीकरण में [[FPTAS|एफपीटीएएस]]  नहीं है।<ref>{{cite journal | last1 = Caprara | first1 = Alberto | last2 = Kellerer | first2 = Hans | last3 = Pferschy | first3 = Ulrich | year = 2000 | title = मल्टीपल सब्मिट सम प्रॉब्लम| url = http://www.or.deis.unibo.it/alberto/mssp_siam.ps| journal = SIAM J. Optim. | volume = 11 | issue = 2| pages = 308–319 | doi = 10.1137/S1052623498348481 | citeseerx = 10.1.1.21.9826 }}</ref>





Revision as of 11:42, 18 June 2023

आयामी (बाधा) नैकपैक समस्या का उदाहरण: कुल वजन को 15 किग्रा से कम या बराबर रखते हुए धन की मात्रा को अधिकतम करने के लिए कौन से बक्सों को चुना जाना चाहिए? नैपसैक समस्याओं की सूची # एकाधिक प्रतिबंध बॉक्स के वजन और मात्रा दोनों पर विचार कर सकते हैं।
(समाधान: यदि प्रत्येक बॉक्स की कोई संख्या उपलब्ध है, तो तीन पीले बॉक्स और तीन ग्रे बॉक्स; यदि केवल दिखाए गए बॉक्स उपलब्ध हैं, तो हरे बॉक्स को छोड़कर सभी।)

संयोजी अनुकूलन में नैपसैक समस्या निम्नलिखित समस्या है:

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

इसका नाम किसी ऐसे व्यक्ति के सामने आने वाली समस्या से लिया गया है जो निश्चित आकार के थैले से विवश है और इसे सबसे मूल्यवान वस्तुओं से भरना चाहिए। समस्या अधिकांशतः संसाधन आवंटन में उत्पन्न होती है जहां निर्णय लेने वालों को क्रमशः निश्चित बजट या समय की कमी के अनुसार गैर-विभाज्य परियोजनाओं या कार्यों के समुच्चय से चुनना पड़ता है।

नैकपैक समस्या का अध्ययन सदी से भी अधिक समय से किया जा रहा है, जिसमें प्रारंभिक कार्य 1897 तक के हैं।[1] नैपसेक नाम की समस्या गणितज्ञ टोबियास डेंजिग (1884-1956) के प्रारंभिक कार्यों से मिलती है,[2] और सामान को ओवरलोड किए बिना सबसे मूल्यवान या उपयोगी वस्तुओं को पैक करने की सामान्य समस्या को संदर्भित करता है।

अनुप्रयोग

विभिन्न प्रकार के क्षेत्रों में वास्तविक दुनिया की निर्णय लेने की प्रक्रियाओं में नैपसैक समस्याएं दिखाई देती हैं, जैसे कच्चे माल को कम से कम व्यर्थ करने का प्रणाली खोजना, [3] निवेश और पोर्टफोलियो (वित्त) का चयन, [4] संपत्ति-समर्थित प्रतिभूतिकरण के लिए संपत्ति का चयन ,[5] और मेर्कले-हेलमैन [6] और अन्य नैकपैक क्रिप्टोप्रणाली के लिए जनरेटिंग कुंजियां।

क्नाप्सैक एल्गोरिदम का प्रारंभिक अनुप्रयोग परीक्षणों के निर्माण और स्कोरिंग में था जिसमें परीक्षार्थियों के पास यह विकल्प होता है कि वे किस प्रश्न का उत्तर दें। छोटे उदाहरणों के लिए, परीक्षार्थियों को इस तरह का विकल्प प्रदान करना अधिक सरल प्रक्रिया है। उदाहरण के लिए, यदि किसी परीक्षा में 10 अंकों के 12 प्रश्न हैं, तो परीक्षार्थी को अधिकतम 100 अंक प्राप्त करने के लिए केवल 10 प्रश्नों के उत्तर देने की आवश्यकता है। चूंकि , बिंदु मानों के विषम वितरण वाले परीक्षणों पर, विकल्प प्रदान करना अधिक कठिन होता है। फ़्यूरमैनऔर वेइसने प्रणाली प्रस्तावित की जिसमें छात्रों को कुल 125 संभावित अंकों के साथ विषम परीक्षा दी जाती है। छात्रों को अपनी क्षमताओं के अनुसार सभी प्रश्नों के उत्तर देने के लिए कहा जाता है। समस्याओं के संभावित उपसमुच्चयों में से जिनके कुल अंक मान 100 तक जोड़ते हैं, नैपसैक एल्गोरिथ्म यह निर्धारित करेगा कि कौन सा उपसमुच्चय प्रत्येक छात्र को उच्चतम संभव स्कोर देता है।[7]

1999 में स्टोनी ब्रुक यूनिवर्सिटी एल्गोरिथम रिपॉजिटरी के अध्ययन से पता चला है कि कॉम्बिनेटरियल एल्गोरिदम और एल्गोरिथम इंजीनियरिंग के क्षेत्र से संबंधित 75 एल्गोरिथम समस्याओं में से, नैपसैक समस्या 19वीं सबसे लोकप्रिय और प्रत्यय पेड़ों और बिन पैकिंग समस्या के बाद तीसरी सबसे अधिक आवश्यक थी। .[8]


परिभाषा

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

अधिकतम करें
का विषय है और .

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

बाउंडेड नैपसैक प्रॉब्लम (बीकेपी) प्रतिबंध को हटाती है कि प्रत्येक आइटम में से केवल है, किन्तु प्रत्येक प्रकार के आइटम की प्रतियों की संख्या को अधिकतम गैर-ऋणात्मक पूर्णांक मान तक सीमित करती है:

अधिकतम करें
का विषय है और

अनबाउंड नैपसैक प्रॉब्लम (यूकेपी) प्रत्येक प्रकार के आइटम की प्रतियों की संख्या पर कोई ऊपरी सीमा नहीं रखती है और इसे ऊपर के रूप में तैयार किया जा सकता है सिवाय इसके कि पर एकमात्र प्रतिबंध यह है कि यह गैर-नकारात्मक पूर्णांक है।

अधिकतम करें
का विषय है और

असीमित नैपसैक समस्या का उदाहरण इस आलेख के आरंभ में दिखाए गए चित्र और उस चित्र के शीर्षक में प्रत्येक बॉक्स की कोई संख्या उपलब्ध होने पर पाठ का उपयोग करके दिया गया है।

कम्प्यूटेशनल जटिलता

कंप्यूटर विज्ञान के दृष्टिकोण से नैकपैक समस्या कई कारणों से रोचक है:

  • क्नाप्सैक समस्या का निर्णय समस्या रूप (क्या वजन W से अधिक हुए बिना कम से कम V का मान प्राप्त किया जा सकता है?) NP-पूर्ण है, इस प्रकार कोई ज्ञात एल्गोरिथम नहीं है जो सभी में सही और तेज़ (बहुपद-समय) दोनों हो स्थितियों।
  • जबकि निर्णय समस्या एनपी-पूर्ण है, अनुकूलन समस्या नहीं है, इसका समाधान कम से कम उतना ही कठिन है जितना कि निर्णय समस्या, और कोई ज्ञात बहुपद एल्गोरिथ्म नहीं है जो यह बता सके कि समाधान दिया गया है कि क्या यह इष्टतम है (जो होगा) इसका मतलब है कि बड़े वी के साथ कोई समाधान नहीं है, इस प्रकार एनपी-पूर्ण निर्णय समस्या को हल करना)।
  • गतिशील प्रोग्रामिंग का उपयोग करते हुए छद्म-बहुपद समय एल्गोरिथ्म है।
  • बहुपद-समय सन्निकटन योजना है।
  • कई स्थितियों जो व्यवहार में उत्पन्न होते हैं, और कुछ वितरणों से यादृच्छिक उदाहरण, फिर भी ठीक से हल किए जा सकते हैं।

इसमें निर्णय और अनुकूलन समस्याओं के बीच लिंक है, यदि कोई बहुपद एल्गोरिदम उपस्थित है जो निर्णय की समस्या को हल करता है, तो बहुपद समय में अनुकूलन समस्या के लिए अधिकतम मूल्य पा सकते हैं, इस एल्गोरिथ्म को k के मान में वृद्धि करते हुए पुनरावृत्त रूप से प्रयुक्त कर सकते हैं। दूसरी ओर, यदि एल्गोरिथ्म बहुपद समय में अनुकूलन समस्या का इष्टतम मूल्य पाता है, तो बहुपद समय में इस एल्गोरिथ्म द्वारा समाधान आउटपुट के मूल्य की तुलना k के मान से करके निर्णय समस्या को हल किया जा सकता है। इस प्रकार, समस्या के दोनों संस्करण समान कठिनाई वाले हैं।

शोध साहित्य में विषय यह पहचानना है कि नैकपैक समस्या के कठिन उदाहरण क्या दिखते हैं,[9][10] या किसी अन्य तरीके से देखा जाता है, यह पहचानने के लिए कि व्यवहार में उदाहरणों के कौन से गुण उन्हें उनके सबसे खराब स्थिति वाले एनपी-पूर्ण व्यवहार से अधिक उत्तरदायी बना सकते हैं।[11] इन कठिन उदाहरणों को खोजने का लक्ष्य सार्वजनिक कुंजी क्रिप्टोग्राफ़ी प्रणाली में उनके उपयोग के लिए है, जैसे मर्कल-हेलमैन नैपसैक क्रिप्टोसिस्टम

इसके अतिरिक्त , उल्लेखनीय तथ्य यह है कि नैकपैक समस्या की कठोरता इनपुट के रूप पर निर्भर करती है। यदि वजन और मुनाफा पूर्णांक के रूप में दिया जाता है, तो यह अशक्त रूप से एनपी-पूर्ण होता है, जबकि वजन और मुनाफे को तर्कसंगत संख्या के रूप में दिया जाता है, जबकि यह दृढ़ता से एनपी-पूर्ण होता है। रेफरी का नाम = वोज्त्ज़क18 >{{cite journal|last1=Wojtczak|first1=Dominik|title=शक्तिशाली एनपी-तर्कसंगत समस्याओं की पूर्णता पर|journal=International Computer Science Symposium in Russia|volume=10846|year=2018|pages=308–320|doi=10.1007/978-3-319-90530-3_26|arxiv=1802.09465|isbn=978-3-319-90529-7|series=Lecture Notes in Computer Science|s2cid=3637366}</रेफ> चूंकि , तर्कसंगत वजन और मुनाफे के स्थितियों में यह अभी भी बहुपद-समय सन्निकटन योजना को स्वीकार करता है। पूरी तरह से बहुपद-समय सन्निकटन योजना।

सुलझाना

डायनेमिक प्रोग्रामिंग दृष्टिकोण के आधार पर नैकपैक समस्याओं को हल करने के लिए कई एल्गोरिदम उपलब्ध हैं,[12] शाखा और बाध्य दृष्टिकोण[13] या दोनों दृष्टिकोणों का हाइब्रिड एल्गोरिदम[11][14][15][16]


डायनेमिक प्रोग्रामिंग इन-एडवांस एल्गोरिथम

असीमित नैपसैक समस्या (यूकेपी) प्रत्येक प्रकार के आइटम की प्रतियों की संख्या पर कोई प्रतिबंध नहीं लगाती है। इसके अतिरिक्त , यहाँ हम मानते हैं

का विषय है और

उसका अवलोकन करो निम्नलिखित गुण हैं:

1. (शून्य मदों का योग, अर्थात खाली समुच्चय का योग)।

2. , , कहाँ का मूल्य है -वें प्रकार की वस्तु।

दूसरी संपत्ति को विस्तार से समझाने की जरूरत है। इस पद्धति के चलने की प्रक्रिया के दौरान, हम वजन कैसे प्राप्त करते हैं? केवल तरीके हैं और पिछले वजन हैं जहां कुल प्रकार के अलग-अलग आइटम हैं (यह कहकर अलग, हमारा मतलब है कि वजन और मूल्य पूरी तरह से समान नहीं हैं)। यदि हम इन वस्तुओं के प्रत्येक मूल्य और संबंधित अधिकतम मूल्य को पहले से जानते हैं, तो हम बस उनकी दूसरे से तुलना करते हैं और अंततः अधिकतम मूल्य प्राप्त करते हैं और हम कर रहे हैं।

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

तथापि P≠NP, जटिलता इस तथ्य का खंडन नहीं करती है कि knapsack समस्या NP-पूर्ण है, क्योंकि , के विपरीत, समस्या के इनपुट की लंबाई में बहुपद नहीं है। समस्या के लिए इनपुट की लंबाई , , में बिट्स की संख्या के समानुपाती होती है, स्वयं के लिए नहीं। चूंकि , चूंकि यह रनटाइम छद्मबहुपद है, यह (निर्णय संस्करण) नैपसैक समस्या को अशक्त एनपी-पूर्ण समस्या बनाता है।

0-1 बस्ता समस्या

A demonstration of the dynamic programming approach.
गतिशील प्रोग्रामिंग दृष्टिकोण का प्रदर्शन।

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

हम को पुनरावर्ती रूप से निम्नानुसार परिभाषित कर सकते हैं: (परिभाषा ए)

  • यदि (नया आइटम वर्तमान वजन सीमा से अधिक है)
  • यदि .

समाधान तब की गणना करके पाया जा सकता है। इसे कुशलतापूर्वक करने के लिए, हम पिछली संगणनाओं को संग्रहीत करने के लिए तालिका का उपयोग कर सकते हैं।

निम्नलिखित गतिशील कार्यक्रम के लिए स्यूडोकोड है:

// Input:
// Values (stored in array v)
// Weights (stored in array w)
// Number of distinct items (n)
// Knapsack capacity (W)
// NOTE: The array "v" and array "w" are assumed to store all relevant values starting at index 1.

array m[0..n, 0..W];
for j from 0 to W do:
    m[0, j] := 0
for i from 1 to n do:
    m[i, 0] := 0

for i from 1 to n do:
    for j from 0 to W do:
        if w[i] > j then:
            m[i, j] := m[i-1, j]
        else:
            m[i, j] := max(m[i-1, j], m[i-1, j-w[i]] + v[i])

इसलिए यह समाधान समय और स्थान में चलेगा। (यदि हमें केवल m [n, W] मान की आवश्यकता है, तो हम कोड को संशोधित कर सकते हैं जिससे आवश्यक मेमोरी की मात्रा O (W) हो जो सरणी "m" की दो पंक्तियों को संग्रहीत करती है।)

चूँकि , यदि हम इसे या दो कदम आगे ले जाते हैं, तो हमें पता होना चाहिए कि विधि और के बीच के समय में चलेगी। परिभाषा ए से, हम जानते हैं कि सभी भारों की गणना करने की कोई आवश्यकता नहीं है जब वस्तुओं की संख्या और हमारे द्वारा चुने गए आइटम स्वयं तय होते हैं। कहने का तात्पर्य यह है कि ऊपर दिया गया प्रोग्राम आवश्यकता से अधिक गणना करता है क्योंकि वजन अधिकांशतः 0 से W में बदलता रहता है। इस दृष्टिकोण से, हम इस पद्धति को प्रोग्राम कर सकते हैं जिससे यह पुनरावर्ती रूप से चले।

<सिंटैक्सहाइलाइट लैंग = सी लाइन = 1>

// इनपुट:

// मान (सरणी v में संग्रहीत)

// वजन (सरणी डब्ल्यू में संग्रहीत)

// विशिष्ट मदों की संख्या (एन)

// बस्ता क्षमता (डब्ल्यू)

// नोट: सरणी v और सरणी w को इंडेक्स 1 से प्रारंभ होने वाले सभी प्रासंगिक मानों को संग्रहीत करने के लिए माना जाता है।

मूल्य परिभाषित करें [एन, डब्ल्यू]

सभी मान प्रारंभ करें [i, j] = -1

परिभाषित एम: = (आई, जे) // फ़ंक्शन एम को परिभाषित करें जिससे यह उस अधिकतम मूल्य का प्रतिनिधित्व करे जो हम शर्त के अनुसार प्राप्त कर सकते हैं: पहले आई आइटम का उपयोग करें, कुल वजन सीमा जे है

{

   यदि  मैं == 0 या जे <= 0 तो:
       मान [i, j] = 0
       वापस करना
   if (value[i-1, j] == -1) तो: // m[i-1, j] की गणना नहीं की गई है, हमें फ़ंक्शन m को कॉल करना होगा
       एम (आई -1, जे)
   यदि  w[i] > j तो: // आइटम बैग में फिट नहीं हो सकता
       मान [i, j] = मान [i-1, j]
   अन्य:
       if (value[i-1, j-w[i == -1) तो: // m[i-1,j-w[i की गणना नहीं की गई है, हमें फ़ंक्शन m को कॉल करना होगा
           एम (आई-1, जे-डब्ल्यू [i])
       मान [i, j] = अधिकतम (मान [i-1, j], मान [i-1, jw[i + v[i])

}

एम (एन, डब्ल्यू) चलाएं

</वाक्यविन्यास हाइलाइट>

उदाहरण के लिए, 10 अलग-अलग आइटम हैं और वज़न की सीमा 67 है। इसलिए,

यदि आप के लिए गणना करने के लिए उपरोक्त विधि का उपयोग करते हैं, तो उत्पन्न करने वाली कॉलों को छोड़कर, आपको यह मिलेगा::
इसके अतिरिक्त , हम रिकर्सन को तोड़ सकते हैं और इसे पेड़ में बदल सकते हैं। तब हम कुछ पत्तियों को काट सकते हैं और समानांतर कंप्यूटिंग का उपयोग करके इस पद्धति को चलाने में तेजी ला सकते हैं।

वस्तुओं के वास्तविक उपसमुच्चय को खोजने के लिए, केवल उनके कुल मूल्य के अतिरिक्त , हम इसे ऊपर दिए गए फ़ंक्शन को चलाने के बाद चला सकते हैं:<syntaxhighlight lang= c line= 1 >

/**

* इष्टतम नैकपैक की वस्तुओं के सूचकांक लौटाता है।
* i: हम नैकपैक में 1 से i तक के आइटम सम्मिलित  कर सकते हैं
* जे: बैकपैक का अधिकतम वजन
*/

फ़ंक्शन नैपसैक (i: int, j: int): समुच्चय <int> {

   यदि  मैं == 0 तो:
       वापस करना {}
   यदि  एम [आई, जे]> एम [आई -1, जे] तो:
       वापसी {i} ∪ बस्ता (i-1, j-w [i])
   अन्य:
       वापसी बस्ता (i-1, j)

}

बस्ता (एन, डब्ल्यू)

</वाक्यविन्यास हाइलाइट>

बीच-बीच में मिलना

1974 में खोजे गए 0-1 नैपसैक के लिए और एल्गोरिथ्म [17], जिसे कभी-कभी क्रिप्टोग्राफी में समान नाम वाले एल्गोरिदम के समानांतर होने के कारण "मीट-इन-द-मिडल" कहा जाता है, विभिन्न मदों की संख्या में घातीय है किन्तु इसके लिए बढ़िया हो सकता है डीपी एल्गोरिथम जब n की तुलना में बड़ा होता है। विशेष रूप से, यदि गैर-नकारात्मक हैं, किन्तु पूर्णांक नहीं हैं, तब भी हम स्केलिंग और राउंडिंग (अर्थात निश्चित-बिंदु अंकगणितीय का उपयोग करके) द्वारा गतिशील प्रोग्रामिंग एल्गोरिदम का उपयोग कर सकते हैं, किन्तु यदि समस्या के लिए त्रुटिहीन के भिन्नात्मक अंकों की आवश्यकता होती है सही उत्तर, को से स्केल करने की आवश्यकता होगी, और डीपी एल्गोरिदम को स्पेस और समय की आवश्यकता होगी।

एल्गोरिदम मीट-इन-द-बीच है
    इनपुट: वजन और मूल्यों के साथ वस्तुओं का  समुच्चय ।
    आउटपुट: सबसेट का सबसे बड़ा संयुक्त मूल्य।

    समुच्चय  {1...n} को लगभग समान आकार के दो समुच्चय  A और B में विभाजित करें
    प्रत्येक समुच्चय  के सभी उपसमूहों के वजन और मूल्यों की गणना करें

     के प्रत्येक उपसमुच्चय के लिए करें
        सबसे बड़े मान का B का सबसेट ज्ञात करें जैसे कि संयुक्त वजन W से कम हो

    अब तक देखे गए सबसे बड़े संयुक्त मूल्य का ट्रैक रखें

एल्गोरिदम स्थान लेता है, और चरण 3 के कुशल कार्यान्वयन (उदाहरण के लिए, वजन के आधार पर B के सबसेट को छांटना, B के सबसेट को छोड़ना जो अधिक या बराबर मूल्य के B के अन्य सबसेट से अधिक वजन का होता है , और सर्वोत्तम मिलान खोजने के लिए बाइनरी खोज का उपयोग करके) के रनटाइम में परिणामित होता है। क्रिप्टोग्राफी में मीट इन मिडल अटैक के साथ, यह रनटाइम पर भोली क्रूर बल दृष्टिकोण ( के सभी सबसेट की जांच) के रनटाइम में सुधार करता है, इसकी कीमत पर निरंतर स्थान के अतिरिक्त घातांक का उपयोग करना (बेबी-स्टेप जाइंट-स्टेप भी देखें)। मीट-इन-द-मिडल एल्गोरिथम में सुधार की वर्तमान स्थिति, सबसेट योग के लिए श्रोएप्पेल और शमीर के एल्गोरिथम से अंतर्दृष्टि का उपयोग करते हुए, नैपसैक के लिए यादृच्छिक एल्गोरिथम के रूप में प्रदान करता है जो (बहुपद कारकों तक) चलने का समय और स्थान की आवश्यकताओं को तक कम कर देता है (देखें [24] परिणाम 1.4) [18]। इसके विपरीत, सबसे प्रसिद्ध नियतात्मक एल्गोरिथ्म समय में

सन्निकटन एल्गोरिदम

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

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


लालची सन्निकटन एल्गोरिथम

जॉर्ज डेंटज़िग ने असीम नैपसैक समस्या को हल करने के लिए लालची सन्निकटन एल्गोरिथम प्रस्तावित किया। [20] उसका संस्करण वजन की प्रति इकाई मूल्य के घटते क्रम में वस्तुओं को क्रमबद्ध करता है, । यह तब उन्हें बोरी में डालने के लिए आगे बढ़ता है, पहले प्रकार के आइटम की जितनी संभव हो उतनी प्रतियों के साथ प्रारंभ होता है जब तक कि बोरी में और अधिक स्थान न हो। बशर्ते कि प्रत्येक प्रकार की वस्तु की असीमित आपूर्ति हो, यदि m बोरी में फिट होने वाली वस्तुओं का अधिकतम मूल्य है, तो लालची एल्गोरिथ्म को कम से कम का मान प्राप्त करने की गारंटी है।

परिबद्ध समस्या के लिए, जहाँ प्रत्येक प्रकार की वस्तु की आपूर्ति सीमित है, उपरोक्त एल्गोरिथम इष्टतम से बहुत दूर हो सकता है। फिर भी, साधारण संशोधन हमें इस स्थितियों को हल करने की अनुमति देता है: सादगी के लिए मान लें कि सभी आइटम अलग-अलग बोरी में फिट होते हैं ( सभी के लिए )। यथासंभव लंबे समय तक वस्तुओं को लालच से पैक करके समाधान का निर्माण करें, अर्थात जहां . इसके अतिरिक्त , दूसरे समाधान का निर्माण करें जिसमें पहला आइटम फिट नहीं हुआ। चूँकि समस्या के LP रैखिक प्रोग्रामिंग छूट के लिए ऊपरी सीमा प्रदान करता है, समुच्चय में से का मान कम से कम होना चाहिए; हम इस प्रकार और में से जो भी लौटाते हैं उसका -सन्निकटन प्राप्त करने के लिए बढ़िया मूल्य है।

यह दिखाया जा सकता है कि औसत प्रदर्शन त्रुटि दर पर वितरण में इष्टतम समाधान में परिवर्तित हो जाता है [21]


पूरी तरह से बहुपद समय सन्निकटन योजना

नैपसैक समस्या के लिए पूरी तरह से बहुपद समय सन्निकटन योजना (एफपीटीएएस) इस तथ्य का लाभ उठाती है कि समस्या का कोई ज्ञात बहुपद समय समाधान नहीं है क्योंकि वस्तुओं से जुड़े लाभ प्रतिबंधित नहीं हैं। यदि कोई लाभ मूल्यों के कम से कम महत्वपूर्ण अंकों में से कुछ को गोल करता है तो वे बहुपद और 1/ε से बंधे होंगे जहां ε समाधान की शुद्धता पर बाध्य है। इस प्रतिबंध का मतलब है कि एल्गोरिदम बहुपद समय में समाधान ढूंढ सकता है जो इष्टतम समाधान के (1-ε) के कारक के अंदर सही है।[19]

एल्गोरिथम एफपीटीएएस है

    इनपुट: ε ∈ (0,1]
           एन वस्तुओं की सूची ए, उनके मूल्यों द्वारा निर्दिष्ट, , और वजन
    आउटपुट: S' एफपीटीएएस  समाधान

    पी: = अधिकतम  // उच्चतम आइटम मूल्य
    कः= ε 

मैं 1 से एन के लिए करते हैं  := के लिए समाप्त

    समाधान वापस करें, S', का उपयोग करके  ऊपर उल्लिखित गतिशील कार्यक्रम में मान

प्रमेय: उपरोक्त एल्गोरिथ्म द्वारा संगणित समुच्चय को संतुष्ट करता है, जहाँ इष्टतम उपाय है।

प्रभुत्व संबंध

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

प्रभुत्व संबंध ढूँढना हमें खोज स्थान के आकार को महत्वपूर्ण रूप से कम करने की अनुमति देता है। कई अलग-अलग प्रकार के प्रभुत्व संबंध हैं,[11]जो सभी फॉर्म की असमानता को पूरा करते हैं:

, और कुछ के लिए कहाँ और . सदिश के प्रत्येक सदस्य की प्रतियों की संख्या को दर्शाता है .

सामूहिक प्रभुत्व: वें>-वें आइटम का सामूहिक रूप से प्रभुत्व है , के रूप में लिखा गया है , यदि मदों के कुछ संयोजन का कुल भार डब्ल्यू से कम हैiऔर उनका कुल मान v से अधिक हैi. औपचारिक रूप से, और कुछ के लिए , अर्थात। . इस प्रभुत्व को सत्यापित करना कम्प्यूटेशनल रूप से कठिन है, इसलिए इसका उपयोग केवल गतिशील प्रोग्रामिंग दृष्टिकोण के साथ किया जा सकता है। वास्तव में, यह छोटी नैकपैक निर्णय समस्या को हल करने के बराबर है , , और आइटम प्रतिबंधित हैं . दहलीज प्रभुत्व: वां>-वां आइटम दहलीज का प्रभुत्व है , के रूप में लिखा गया है , यदि कुछ प्रतियों की संख्या का बोलबाला है . औपचारिक रूप से, , और कुछ के लिए और . यह सामूहिक प्रभुत्व का सामान्यीकरण है, जिसे पहली बार में प्रस्तुत किया गया था[12]और EDUK एल्गोरिथ्म में उपयोग किया जाता है। सबसे छोटा ऐसा आइटम की दहलीज को परिभाषित करता है , लिखा हुआ . इस स्थितियों में, इष्टतम समाधान में अधिकतम सम्मिलित हो सकता है की प्रतियां . एकाधिक प्रभुत्व: वें>-वें आइटम में ही आइटम का गुणन होता है , के रूप में लिखा गया है , यदि की कुछ प्रतियों का प्रभुत्व है . औपचारिक रूप से, , और कुछ के लिए अर्थात। . प्रीप्रोसेसिंग के समय इस प्रभुत्व का कुशलता से उपयोग किया जा सकता है क्योंकि इसका अपेक्षाकृत आसानी से पता लगाया जा सकता है। मॉड्यूलर प्रभुत्व: चलो सर्वोत्तम वस्तु हो, अर्थात् सभी के लिए . यह मूल्य के सबसे बड़े घनत्व वाला आइटम है। th>-th आइटम मॉड्यूलर रूप से एकल आइटम का प्रभुत्व है , के रूप में लिखा गया है , यदि का बोलबाला है साथ ही की कई प्रतियाँ . औपचारिक रूप से, , और अर्थात। .

विविधताएं

नैकपैक समस्या के कई रूप हैं जो मूल समस्या के अनुप्रयोगों की विशाल संख्या से उत्पन्न हुए हैं। मुख्य विविधताएं कुछ समस्या पैरामीटरों की संख्या जैसे मदों की संख्या, उद्देश्यों की संख्या, या यहां तक ​​कि नैपैक्स की संख्या को बदलकर उत्पन्न होती हैं।

बहुउद्देश्यीय नैकपैक समस्या

यह भिन्नता थैला भरने वाले व्यक्ति के लक्ष्य को बदल देती है। उद्देश्य के अतिरिक्त , जैसे कि मौद्रिक लाभ को अधिकतम करना, उद्देश्य के कई आयाम हो सकते हैं। उदाहरण के लिए, पर्यावरण या सामाजिक सरोकार के साथ-साथ आर्थिक लक्ष्य भी हो सकते हैं। जिन समस्याओं को अधिकांशतः संबोधित किया जाता है उनमें पोर्टफोलियो और परिवहन रसद अनुकूलन सम्मिलित हैं।[22][23]

उदाहरण के तौर पर, मान लीजिए कि आप क्रूज जहाज चलाते हैं। आपको यह तय करना होगा कि कितने प्रसिद्ध कॉमेडियन को हायर करना है। यह नाव टन से अधिक यात्रियों को नहीं संभाल सकती है और मनोरंजन करने वालों का वजन 1000 पाउंड से कम होना चाहिए। प्रत्येक कॉमेडियन का वजन होता है, उनकी लोकप्रियता के आधार पर व्यवसाय में लाता है और विशिष्ट वेतन मांगता है। इस उदाहरण में, आपके पास कई उद्देश्य हैं। बेशक, आप अपने मनोरंजनकर्ताओं की लोकप्रियता को अधिकतम करना चाहते हैं जबकि उनके वेतन को कम करना चाहते हैं। साथ ही, आप अधिक से अधिक मनोरंजनकर्ता चाहते हैं।

बहुआयामी नैकपैक समस्या

इस भिन्नता में, नैकपैक आइटम i का वजन डी-आयामी वेक्टर द्वारा दिया जाता है और नैपसैक में डी- आयामी क्षमता वेक्टर । लक्ष्य बैकपैक में वस्तुओं के मूल्यों के योग को अधिकतम करना है जिससे प्रत्येक आयाम में वजन का योग से अधिक न हो।

बहु-आयामी नैकपैक कम्प्यूटेशनल रूप से नैपसैक की तुलना में कठिन है; के लिए भी, समस्या में EPTAS नहीं है जब तक कि P=NP नहीं है। [24] चूंकि , [25] में एल्गोरिथ्म विरल उदाहरणों को कुशलतापूर्वक हल करने के लिए दिखाया गया है। मल्टी-डायमेंशनल नैपसैक का उदाहरण विरल है यदि के लिए समुच्चय है जैसे कि प्रत्येक नैपसैक आइटम के लिए ,https://alpha.indicwiki.in/index.php?title=Special:MathShowImage&hash=4c04f2f6762e25ea2716a03df8f66691&mode=mathml ऐसा है कि और . उदाहरण के लिए, ऐसे उदाहरण होते हैं, जब रिले नोड्स के साथ वायरलेस नेटवर्क में पैकेट शेड्यूल करते हैं। [25] [25] से एल्गोरिथ्म बहुविकल्पी संस्करण, बहुविकल्पी बहु-आयामी नैकपैक के विरल उदाहरणों को भी हल करता है।

IHS (बढ़ती ऊंचाई शेल्फ़) एल्गोरिथम 2D नैकपैक (वर्गों को द्वि-आयामी इकाई आकार वर्ग में पैक करना) के लिए इष्टतम है: जब इष्टतम पैकिंग में अधिकतम पाँच वर्ग होते हैं।[26]


एकाधिक बस्ता समस्या

यह भिन्नता बिन पैकिंग समस्या के समान है। यह बिन पैकिंग समस्या से भिन्न है जिसमें वस्तुओं का सबसेट चुना जा सकता है, जबकि बिन पैकिंग समस्या में, सभी वस्तुओं को कुछ डिब्बे में पैक करना पड़ता है। अवधारणा यह है कि कई थैले हैं। यह तुच्छ परिवर्तन की तरह लग सकता है, किन्तु यह प्रारंभिक नैकपैक की क्षमता को जोड़ने के बराबर नहीं है। इस भिन्नता का उपयोग ऑपरेशंस रिसर्च में कई लोडिंग और शेड्यूलिंग समस्याओं में किया जाता है और इसमें बहुपद-समय सन्निकटन योजना है।[27]


द्विघाती नैपसैक समस्या

द्विघातीय नैपसैक समस्या द्विघाती और रेखीय क्षमता प्रतिबंधों के अधीन द्विघात उद्देश्य फलन को अधिकतम करती है।[28] समस्या को 1980 में गैलो, हैमर और शिमोन द्वारा प्रस्तुत किया गया था।[29] चूँकि , समस्या का पहला उपचार 1975 में विट्जगल में हुआ था।[30]


सबसेट-योग समस्या

सबसेट योग समस्या निर्णय का विशेष मामला है और 0-1 समस्याएं हैं जहां प्रत्येक प्रकार की वस्तु, वजन मूल्य के बराबर होती है: . क्रिप्टोग्राफी के क्षेत्र में, नैकपैक समस्या शब्द का प्रयोग अधिकांशतः विशेष रूप से सबसेट योग समस्या को संदर्भित करने के लिए किया जाता है और इसे सामान्यतः कार्प की 21 एनपी-पूर्ण समस्याओं में से के रूप में जाना जाता है।[31]

उपसमुच्चय योग समस्या के सामान्यीकरण को बहु उपसमुच्चय सम समस्या कहते हैं, जिसमें समान क्षमता वाले अनेक डिब्बे उपस्थित होते हैं। यह दिखाया गया है कि सामान्यीकरण में एफपीटीएएस नहीं है।[32]


ज्यामितीय नैकपैक समस्या

ज्यामितीय नैपसैक समस्या में, विभिन्न मानों के साथ आयतों का समूह है, और आयताकार नैकपैक है। लक्ष्य सबसे बड़ा संभव मान नैकपैक में पैक करना है।[33]


यह भी देखें

टिप्पणियाँ

  1. Mathews, G. B. (25 June 1897). "संख्याओं के विभाजन पर" (PDF). Proceedings of the London Mathematical Society. 28: 486–490. doi:10.1112/plms/s1-28.1.486.
  2. Dantzig, Tobias (2007). Number : the language of science (The Masterpiece Science ed.). New York: Plume Book. ISBN 9780452288119.
  3. Kellerer, Hans; Pferschy, Ulrich; Pisinger, David (2004). बस्ता समस्याएं. Berlin: Springer. p. 449. ISBN 978-3-540-40286-2. Retrieved 5 May 2022.
  4. Kellerer, Hans; Pferschy, Ulrich; Pisinger, David (2004). बस्ता समस्याएं. Berlin: Springer. p. 461. ISBN 978-3-540-40286-2. Retrieved 5 May 2022.
  5. Kellerer, Hans; Pferschy, Ulrich; Pisinger, David (2004). बस्ता समस्याएं. Berlin: Springer. p. 465. ISBN 978-3-540-40286-2. Retrieved 5 May 2022.
  6. Kellerer, Hans; Pferschy, Ulrich; Pisinger, David (2004). बस्ता समस्याएं. Berlin: Springer. p. 472. ISBN 978-3-540-40286-2. Retrieved 5 May 2022.
  7. Feuerman, Martin; Weiss, Harvey (April 1973). "टेस्ट निर्माण और स्कोरिंग के लिए एक गणितीय प्रोग्रामिंग मॉडल". Management Science. 19 (8): 961–966. doi:10.1287/mnsc.19.8.961. JSTOR 2629127.
  8. Skiena, S. S. (September 1999). "Who is Interested in Algorithms and Why? Lessons from the Stony Brook Algorithm Repository". ACM SIGACT News. 30 (3): 65–74. CiteSeerX 10.1.1.41.8357. doi:10.1145/333623.333627. ISSN 0163-5700. S2CID 15619060.
  9. Pisinger, D. 2003. Where are the hard knapsack problems? Technical Report 2003/08, Department of Computer Science, University of Copenhagen, Copenhagen, Denmark.
  10. Caccetta, L.; Kulanoot, A. (2001). "हार्ड नैपसेक समस्याओं के कम्प्यूटेशनल पहलू". Nonlinear Analysis. 47 (8): 5547–5558. doi:10.1016/s0362-546x(01)00658-7.
  11. 11.0 11.1 11.2 {{cite journal|last1=Poirriez|first1=Vincent|last2=Yanev|first2=Nicola|last3=Andonov|first3=Rumen|title=असीमित नैपसैक समस्या के लिए एक हाइब्रिड एल्गोरिथम|journal=Discrete Optimization|volume=6|issue=1|year=2009|pages=110–124|issn=1572-5286|doi=10.1016/j.disopt.2008.09.004|s2cid=8820628 |doi-access=free}
  12. 12.0 12.1 Andonov, Rumen; Poirriez, Vincent; Rajopadhye, Sanjay (2000). "Unbounded Knapsack Problem : dynamic programming revisited". European Journal of Operational Research. 123 (2): 168–181. CiteSeerX 10.1.1.41.2135. doi:10.1016/S0377-2217(99)00265-9.
  13. S. Martello, P. Toth, Knapsack Problems: Algorithms and Computer Implementations, John Wiley and Sons, 1990
  14. S. Martello, D. Pisinger, P. Toth, Dynamic programming and strong bounds for the 0-1 knapsack problem, Manag. Sci., 45:414–424, 1999.
  15. Plateau, G.; Elkihel, M. (1985). "0-1 नैकपैक समस्या के लिए एक हाइब्रिड एल्गोरिथम". Methods of Oper. Res. 49: 277–293.
  16. Martello, S.; Toth, P. (1984). "सबसेट-योग समस्या के लिए डायनेमिक प्रोग्रामिंग और ब्रांच-एंड-बाउंड का मिश्रण". Manag. Sci. 30 (6): 765–771. doi:10.1287/mnsc.30.6.765.
  17. Horowitz, Ellis; Sahni, Sartaj (1974), "Computing partitions with applications to the knapsack problem", Journal of the Association for Computing Machinery, 21 (2): 277–292, doi:10.1145/321812.321823, hdl:1813/5989, MR 0354006, S2CID 16866858
  18. Nederlof, Jesper; Węgrzycki, Karol (12 April 2021). "ऑर्थोगोनल वैक्टर के माध्यम से सबसेट सम के लिए श्रोएपेल और शमीर के एल्गोरिदम में सुधार". arXiv:2010.08576 [cs.DS].
  19. 19.0 19.1 Vazirani, Vijay. Approximation Algorithms. Springer-Verlag Berlin Heidelberg, 2003.
  20. Dantzig, George B. (1957). "असतत-चर चरम समस्याएं". Operations Research. 5 (2): 266–288. doi:10.1287/opre.5.2.266.
  21. Calvin, James M.; Leung, Joseph Y. -T. (1 May 2003). "Average-case analysis of a greedy algorithm for the 0/1 knapsack problem". Operations Research Letters. 31 (3): 202–210. doi:10.1016/S0167-6377(02)00222-5.
  22. Chang, T. J., et al. Heuristics for Cardinality Constrained Portfolio Optimization. Technical Report, London SW7 2AZ, England: The Management School, Imperial College, May 1998
  23. Chang, C. S., et al. "Genetic Algorithm Based Bicriterion Optimization for Traction Substations in DC Railway System." In Fogel [102], 11-16.
  24. Kulik, A.; Shachnai, H. (2010). "द्विविमीय नैकपैक के लिए कोई ईपीटीएएस नहीं है" (PDF). Inf. Process. Lett. 110 (16): 707–712. CiteSeerX 10.1.1.161.5838. doi:10.1016/j.ipl.2010.05.031.
  25. 25.0 25.1 25.2 Cohen, R. and Grebla, G. 2014. "Multi-Dimensional OFDMA Scheduling in a Wireless Network with Relay Nodes". in Proc. IEEE INFOCOM’14, 2427–2435.
  26. Yan Lan, György Dósa, Xin Han, Chenyang Zhou, Attila Benkő [1]: 2D knapsack: Packing squares, Theoretical Computer Science Vol. 508, pp. 35–40.
  27. Chandra Chekuri and Sanjeev Khanna (2005). "मल्टीपल नैपसैक समस्या के लिए एक पीटीएएस". SIAM Journal on Computing. 35 (3): 713–728. CiteSeerX 10.1.1.226.3387. doi:10.1137/s0097539700382820.
  28. Wu, Z. Y.; Yang, Y. J.; Bai, F. S.; Mammadov, M. (2011). "द्विघात नैपसेक समस्याओं के लिए वैश्विक इष्टतमता की स्थिति और अनुकूलन के तरीके". J Optim Theory Appl. 151 (2): 241–259. doi:10.1007/s10957-011-9885-4. S2CID 31208118.
  29. Gallo, G.; Hammer, P. L.; Simeone, B. (1980). क्वाड्रैटिक नैपसैक समस्याएं. pp. 132–149. doi:10.1007/BFb0120892. ISBN 978-3-642-00801-6. {{cite book}}: |journal= ignored (help)
  30. Witzgall, C. (1975). "इलेक्ट्रॉनिक संदेश प्रणाली (ईएमएस) के लिए साइट चयन के गणितीय तरीके". NASA Sti/Recon Technical Report N. NBS Internal report. 76: 18321. Bibcode:1975STIN...7618321W.
  31. Richard M. Karp (1972). "Reducibility Among Combinatorial Problems". In R. E. Miller and J. W. Thatcher (editors). Complexity of Computer Computations. New York: Plenum. pp. 85–103
  32. Caprara, Alberto; Kellerer, Hans; Pferschy, Ulrich (2000). "मल्टीपल सब्मिट सम प्रॉब्लम". SIAM J. Optim. 11 (2): 308–319. CiteSeerX 10.1.1.21.9826. doi:10.1137/S1052623498348481.
  33. Abed, Fidaa; Chalermsook, Parinya; Correa, José; Karrenbauer, Andreas; Pérez-Lantero, Pablo; Soto, José A.; Wiese, Andreas (2015). गिलोटिन कटिंग सीक्वेंस पर. pp. 1–19. doi:10.4230/LIPIcs.APPROX-RANDOM.2015.1. ISBN 978-3-939897-89-7.


संदर्भ


बाहरी संबंध