नैपसैक समस्या: Difference between revisions
No edit summary |
No edit summary |
||
(14 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{short description|Problem in combinatorial optimization}} | {{short description|Problem in combinatorial optimization}} | ||
[[File:Knapsack.svg|thumb|right|250px|आयामी (बाधा) नैकपैक समस्या का उदाहरण: कुल वजन को 15 किग्रा से कम या | [[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–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> और अन्य [[नैकपैक क्रिप्टो सिस्टम|नैकपैक क्रिप्टोप्रणाली]] के लिए जनरेटिंग कुंजियां है । | ||
क्नाप्सैक | क्नाप्सैक एल्गोरिदम का प्रारंभिक अनुप्रयोग परीक्षणों के निर्माण और स्कोरिंग में था जिसमें परीक्षार्थियों के पास यह विकल्प होता है कि वे किस प्रश्न का उत्तर दें और छोटे उदाहरणों के लिए परीक्षार्थियों को इस तरह का विकल्प प्रदान करना अधिक सरल प्रक्रिया है। उदाहरण के लिए यदि किसी परीक्षा में 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 में स्टोनी ब्रुक यूनिवर्सिटी एल्गोरिथम रिपॉजिटरी के | 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–74 |issn=0163-5700 | doi=10.1145/333623.333627| citeseerx = 10.1.1.41.8357 | s2cid = 15619060 }}</ref> | ||
== परिभाषा == | == परिभाषा == | ||
हल की जा रही सबसे | हल की जा रही सबसे समान समस्या 0-1 नैपसैक समस्या है, जो प्रत्येक प्रकार के आइटम की प्रतियों की संख्या ''<math>x_i</math>'' को शून्य या एक तक सीमित कर देती है। अधिकतम वजन क्षमता ''<math>W</math>'' के साथ, 1 से ''<math>n</math>'' तक की संख्या वाली ''<math>n</math>'' वस्तुओं का एक सेट दिया गया है, प्रत्येक का वजन ''<math>w_i</math>'' और एक मान ''<math>v_i</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>x_i</math> नैपसैक में सम्मिलित करने के लिए आइटम <math>i</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> | ||
अनबाउंड नैपसैक प्रॉब्लम (यूकेपी) प्रत्येक प्रकार के आइटम की प्रतियों की संख्या पर कोई ऊपरी सीमा नहीं रखती है और इसे ऊपर के रूप में तैयार किया जा सकता है सिवाय इसके कि <math>x_i</math> पर एकमात्र प्रतिबंध यह है कि यह | अनबाउंड नैपसैक प्रॉब्लम (यूकेपी) प्रत्येक प्रकार के आइटम की प्रतियों की संख्या पर कोई ऊपरी सीमा नहीं रखती है और इसे ऊपर के रूप में तैयार किया जा सकता है सिवाय इसके कि <math>x_i</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 \mathbb{Z}, \ x_i \geq 0.</math> | : का विषय है <math>\sum_{i=1}^n w_i x_i \leq W</math> और <math>x_i \in \mathbb{Z}, \ x_i \geq 0.</math> | ||
असीमित नैपसैक समस्या का | असीमित नैपसैक समस्या का उदाहरण इस आलेख के आरंभ में दिखाए गए चित्र और उस चित्र के शीर्षक में प्रत्येक बॉक्स की कोई संख्या उपलब्ध होने पर पाठ का उपयोग करके दिया गया है। | ||
== कम्प्यूटेशनल जटिलता == | == कम्प्यूटेशनल जटिलता == | ||
कंप्यूटर विज्ञान के दृष्टिकोण से नैकपैक समस्या कई कारणों से रोचक है: | कंप्यूटर विज्ञान के दृष्टिकोण से नैकपैक समस्या कई कारणों से रोचक है: | ||
* क्नाप्सैक | *क्नाप्सैक समस्या का निर्णय समस्या रूप (क्या कम से कम V का मान W से अधिक वजन के बिना प्राप्त किया जा सकता है?) NP-पूर्ण है, इस प्रकार कोई ज्ञात एल्गोरिथम नहीं है जो सभी स्थितियों में सही और तेज़ (बहुपद-समय) दोनों हो . | ||
* जबकि निर्णय समस्या एनपी-पूर्ण है, अनुकूलन समस्या नहीं है, इसका समाधान कम से कम उतना ही कठिन है जितना कि निर्णय समस्या | * जबकि निर्णय समस्या एनपी-पूर्ण है, अनुकूलन समस्या नहीं है, इसका समाधान कम से कम उतना ही कठिन है जितना कि निर्णय समस्या और कोई ज्ञात बहुपद एल्गोरिथ्म नहीं है जो यह बता सके कि समाधान दिया गया है कि क्या यह इष्टतम है (जो होगा) इसका कारण है कि बड़े वी के साथ कोई समाधान नहीं है, इस प्रकार एनपी-पूर्ण निर्णय समस्या को हल करना)। | ||
* [[गतिशील प्रोग्रामिंग]] का उपयोग करते हुए | * [[गतिशील प्रोग्रामिंग]] का उपयोग करते हुए [[छद्म-बहुपद समय]] एल्गोरिथ्म है। | ||
* [[बहुपद-समय सन्निकटन योजना]] है। | * [[बहुपद-समय सन्निकटन योजना]] है। | ||
* कई स्थितियों जो व्यवहार में उत्पन्न होते हैं, और कुछ वितरणों से यादृच्छिक उदाहरण | * कई स्थितियों जो व्यवहार में उत्पन्न होते हैं, और कुछ वितरणों से यादृच्छिक उदाहरण फिर भी ठीक से हल किए जा सकते हैं। | ||
इसमें निर्णय और अनुकूलन समस्याओं के बीच | इसमें निर्णय और अनुकूलन समस्याओं के बीच लिंक है, यदि कोई बहुपद एल्गोरिदम उपस्थित है जो निर्णय की समस्या को हल करता है तो बहुपद समय में अनुकूलन समस्या के लिए अधिकतम मूल्य पा सकते हैं, इस एल्गोरिथ्म को 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><nowiki>{{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></ref> चूंकि तर्कसंगत वजन और लाभ के स्थितियों में यह अभी भी बहुपद-समय सन्निकटन योजना को स्वीकार करता है। पूरी तरह से बहुपद-समय सन्निकटन योजना है । | ||
== सुलझाना == | == सुलझाना == | ||
गतिशील प्रोग्रामिंग दृष्टिकोण, शाखा और बाध्य दृष्टिकोण या दोनों दृष्टिकोणों के संकरण के आधार पर,<ref name="eduk2000">{{cite journal | last1 = Andonov | first1 = Rumen | last2 = Poirriez | first2 = Vincent | last3 = Rajopadhye | first3 = Sanjay | year = 2000 | title = Unbounded Knapsack Problem : dynamic programming revisited | journal = European Journal of Operational Research | volume = 123 | issue = 2 | pages = 168–181 | doi = 10.1016/S0377-2217(99)00265-9 | citeseerx = 10.1.1.41.2135 }}</ref> नैपसैक समस्याओं को हल करने<ref name="martellototh90">S. Martello, P. Toth, Knapsack Problems: Algorithms and Computer Implementations, | |||
John Wiley and Sons, 1990</ref> के लिए कई एल्गोरिदम उपलब्ध हैं।<ref name="poirriez_et_all_2009"/><ref name="martellopisingertoth99a">S. Martello, D. Pisinger, P. Toth, [https://www.jstor.org/stable/pdf/2634886.pdf Dynamic programming and strong bounds for the 0-1 knapsack problem], ''Manag. Sci.'', 45:414–424, 1999.</ref><ref name="plateau85">{{cite journal | last1 = Plateau | first1 = G. | last2 = Elkihel | first2 = M. | year = 1985 | title = 0-1 नैकपैक समस्या के लिए एक हाइब्रिड एल्गोरिथम| journal = Methods of Oper. Res. | volume = 49 | pages = 277–293 }}</ref><ref name="martellotothe99">{{cite journal | last1 = Martello | first1 = S. | last2 = Toth | first2 = P. | year = 1984| title = सबसेट-योग समस्या के लिए डायनेमिक प्रोग्रामिंग और ब्रांच-एंड-बाउंड का मिश्रण| journal = Manag. Sci. | volume = 30 | issue = 6| pages = 765–771 | doi=10.1287/mnsc.30.6.765}}</ref> | |||
=== डायनेमिक प्रोग्रामिंग इन-एडवांस एल्गोरिथम === | === डायनेमिक प्रोग्रामिंग इन-एडवांस एल्गोरिथम === | ||
असीमित नैपसैक समस्या (यूकेपी) प्रत्येक प्रकार के आइटम की प्रतियों की संख्या पर कोई प्रतिबंध नहीं लगाती है। इसके अतिरिक्त | असीमित नैपसैक समस्या (यूकेपी) प्रत्येक प्रकार के आइटम की प्रतियों की संख्या पर कोई प्रतिबंध नहीं लगाती है। इसके अतिरिक्त <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> | ||
, <math>w_i \leq w</math>, जहाँ <math>v_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> को उनके सबसे बड़े सामान्य भाजक से विभाजित करना चलने के समय को बढ़िया बनाने का प्रणाली है। | ||
तथापि P≠NP, <math>O(nW)</math> जटिलता इस तथ्य का खंडन नहीं करती है कि नैपसैक समस्या NP-पूर्ण है, क्योंकि <math>W</math>, <math>n</math> के विपरीत, समस्या के इनपुट की लंबाई में बहुपद नहीं है। समस्या के लिए <math>W</math> इनपुट की लंबाई <math>W</math> , <math>\log W</math> , में बिट्स की संख्या के समानुपाती होती है, स्वयं <math>W</math> के लिए नहीं। चूंकि , चूंकि यह रनटाइम [[ छद्मबहुपद |छद्मबहुपद]] है, यह (निर्णय संस्करण) नैपसैक समस्या को [[कमजोर एनपी-पूर्णता|अशक्त एनपी-पूर्ण]] समस्या बनाता है। | |||
==== 0-1 बस्ता समस्या ==== | ==== 0-1 बस्ता समस्या ==== | ||
[[File:Knapsack problem dynamic programming.gif|alt=A demonstration of the dynamic programming approach.|thumb|गतिशील प्रोग्रामिंग दृष्टिकोण का प्रदर्शन।]]0-1 नैपसैक समस्या के लिए | [[File:Knapsack problem dynamic programming.gif|alt=A demonstration of the dynamic programming approach.|thumb|गतिशील प्रोग्रामिंग दृष्टिकोण का प्रदर्शन।]]0-1 नैपसैक समस्या के लिए समान गतिशील प्रोग्रामिंग समाधान छद्म-बहुपद समय में भी चलता है मान लें <math>w_1,\,w_2,\,\ldots,\,w_n,\, W</math> सख्ती से सकारात्मक पूर्णांक हैं। <math>m[i,w]</math> को अधिकतम मान के रूप में परिभाषित करें जिसे <math>i</math> (प्रथम <math>i</math> आइटम) तक के आइटम का उपयोग करके <math>w</math> से कम या उसके समान वजन के साथ प्राप्त किया जा सकता है। | ||
हम <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>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>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 में बदलता रहता है। इस दृष्टिकोण से, हम इस पद्धति को प्रोग्राम कर सकते हैं जिससे यह पुनरावर्ती रूप से चलता है । | ||
< | <syntaxhighlight> | ||
// 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. | ||
// | |||
// | |||
// | |||
Define value[n, W] | |||
Initialize all value[i, j] = -1 | |||
Define m:=(i,j) // Define function m so that it represents the maximum value we can get under the condition: use first i items, total weight limit is j | |||
{ | { | ||
if i == 0 or j <= 0 then: | |||
value[i, j] = 0 | |||
return | |||
if (value[i-1, j] == -1) | if (value[i-1, j] == -1) then: // m[i-1, j] has not been calculated, we have to call function m | ||
m(i-1, j) | |||
if w[i] > j then: // item cannot fit in the bag | |||
value[i, j] = value[i-1, j] | |||
else: | |||
if (value[i-1, j-w[i == -1) | if (value[i-1, j-w[i]] == -1) then: // m[i-1,j-w[i]] has not been calculated, we have to call function m | ||
m(i-1, j-w[i]) | |||
value[i, j] = max(value[i-1,j], value[i-1, j-w[i]] + v[i]) | |||
} | } | ||
Run m(n, W) | |||
</syntaxhighlight> | |||
</ | |||
उदाहरण के लिए, 10 अलग-अलग आइटम हैं और वज़न की सीमा 67 है। इसलिए, | उदाहरण के लिए, 10 अलग-अलग आइटम हैं और वज़न की सीमा 67 है। इसलिए, | ||
Line 161: | Line 153: | ||
&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> | ||
इसके अतिरिक्त | इसके अतिरिक्त हम रिकर्सन को तोड़ सकते हैं और इसे पेड़ में बदल सकते हैं। तब हम कुछ पत्तियों को काट सकते हैं और समानांतर कंप्यूटिंग का उपयोग करके इस पद्धति को चलाने में तेजी ला सकते हैं। | ||
वस्तुओं के वास्तविक उपसमुच्चय को खोजने के लिए केवल उनके कुल मूल्य के अतिरिक्त हम इसे ऊपर दिए गए फलन को चलाने के बाद चला सकते हैं<syntaxhighlight> | |||
/** | /** | ||
* | * Returns the indices of the items of the optimal knapsack. | ||
* i: | * i: We can include items 1 through i in the knapsack | ||
* | * j: maximum weight of the knapsack | ||
*/ | */ | ||
function knapsack(i: int, j: int): Set<int> { | |||
if i == 0 then: | |||
return {} | |||
if m[i, j] > m[i-1, j] then: | |||
return {i} ∪ knapsack(i-1, j-w[i]) | |||
else: | |||
return knapsack(i-1, j) | |||
} | } | ||
knapsack(n, W) | |||
</syntaxhighlight> | |||
</ | |||
=== बीच-बीच में मिलना === | === बीच-बीच में मिलना === | ||
1974 | 1974 में खोजे गए 0-1 नैपसैक के लिए और एल्गोरिथ्म <ref>{{citation | ||
| last1 = Horowitz | first1 = Ellis | | last1 = Horowitz | first1 = Ellis | ||
| last2 = Sahni | first2 = Sartaj | author2-link = Sartaj Sahni | | last2 = Sahni | first2 = Sartaj | author2-link = Sartaj Sahni | ||
Line 197: | Line 187: | ||
| s2cid = 16866858 | | s2cid = 16866858 | ||
| hdl-access = free | | hdl-access = free | ||
}}</ref>, जिसे कभी-कभी क्रिप्टोग्राफी में समान नाम वाले एल्गोरिदम के समानांतर होने के कारण "मीट-इन-द-मिडल" कहा जाता है, विभिन्न मदों की संख्या में घातीय है किन्तु इसके लिए | }}</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> समय की आवश्यकता होगी।<syntaxhighlight> | ||
algorithm Meet-in-the-middle is | |||
input: A set of items with weights and values. | |||
output: The greatest combined value of a subset. | |||
partition the set {1...n} into two sets A and B of approximately equal size | |||
compute the weights and values of all subsets of each set | |||
for each subset of A do | |||
find the subset of B of greatest value such that the combined weight is less than W | |||
एल्गोरिदम <math>O(2^{n/2})</math> स्थान लेता है, और चरण 3 के कुशल कार्यान्वयन (उदाहरण के लिए, वजन के आधार पर B के | keep track of the greatest combined value seen so far | ||
</syntaxhighlight>एल्गोरिदम <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="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> 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> | |||
==== पूरी तरह से बहुपद समय सन्निकटन योजना ==== | |||
नैपसैक समस्या के लिए पूरी तरह से बहुपद समय सन्निकटन योजना (एफपीटीएएस) इस तथ्य का लाभ उठाती है कि समस्या का कोई ज्ञात बहुपद समय समाधान नहीं है क्योंकि वस्तुओं से जुड़े लाभ प्रतिबंधित नहीं हैं। यदि कोई लाभ मूल्यों के कम से कम महत्वपूर्ण अंकों में से कुछ को गोल करता है तो वे बहुपद और 1/ε से बंधे होंगे जहां ε समाधान की शुद्धता पर बाध्य है। इस प्रतिबंध का कारण है कि एल्गोरिदम बहुपद समय में समाधान ढूंढ सकता है जो इष्टतम समाधान के (1-ε) के कारक के अंदर सही है।<ref name="Vazirani, Vijay 2003"/> | |||
एल्गोरिथम एफपीटीएएस है | |||
'''algorithm''' FPTAS '''i''' | |||
'''input:''' ε ∈ (0,1] | |||
a list A of n items, specified by their values, , and weights | |||
'''output:''' S' the FPTAS solution | |||
P := max <math>\{v_i\mid 1 \leq i \leq n\} </math> // the highest item value | |||
K= ε <math>\frac{P}{n}</math> | |||
'''for''' i '''from''' 1 '''to''' n '''do''' | |||
<math>v'_i</math> := <math>\left\lfloor \frac{v_i}{K} \right\rfloor</math> | <math>v'_i</math> := <math>\left\lfloor \frac{v_i}{K} \right\rfloor</math> | ||
प्रमेय: <math>S'</math>उपरोक्त एल्गोरिथ्म द्वारा संगणित समुच्चय <math>\mathrm{profit}(S') \geq (1-\varepsilon) \cdot \mathrm{profit}(S^*)</math> को संतुष्ट करता है, जहाँ <math>S^*</math> | '''end for''' | ||
'''return''' the solution, S', using the values in the dynamic program outlined above | |||
प्रमेय: <math>S'</math>उपरोक्त एल्गोरिथ्म द्वारा संगणित समुच्चय <math>\mathrm{profit}(S') \geq (1-\varepsilon) \cdot \mathrm{profit}(S^*)</math> को संतुष्ट करता है, जहाँ <math>S^*</math> इष्टतम उपाय है। | |||
प्रमेय: <math>S'</math>उपरोक्त एल्गोरिथ्म द्वारा संगणित समुच्चय <math>\mathrm{profit}(S') \geq (1-\varepsilon) \cdot \mathrm{profit}(S^*)</math> को संतुष्ट करता है, जहाँ <math>S^*</math> इष्टतम उपाय है। | |||
=== प्रभुत्व संबंध === | === प्रभुत्व संबंध === | ||
असीमित नैपसेक समस्या का समाधान उन वस्तुओं को फेंक कर आसान बनाया जा सकता है जिनकी कभी आवश्यकता नहीं होगी। किसी दिए गए आइटम <math>i</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" />जो सभी फॉर्म की असमानता को पूरा करते हैं: | |||
<math>\qquad \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\in Z_+ \,,J\subsetneq N</math> और <math>i\not\in J</math>. सदिश <math>x</math> , <math>J</math> के प्रत्येक सदस्य की प्रतियों की संख्या को दर्शाता है . | |||
===== सामूहिक प्रभुत्व: ===== | |||
<math>i</math>वें>-वें आइटम का सामूहिक रूप से प्रभुत्व है <math>J</math>, के रूप में लिखा गया है <math>i\ll J</math>, यदि मदों के कुछ संयोजन का कुल भार <math>J</math> ''w<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>\ | ==== सीमा प्रभुत्व: ==== | ||
<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> लिखा जाता है। इस स्थितियों में, इष्टतम समाधान में 0 की अधिकतम <math>\alpha-1</math> प्रतियां हो सकती हैं। | |||
<math>\alpha\ | |||
===== एकाधिक प्रभुत्व: ===== | |||
<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>. | |||
== विविधताएं == | == विविधताएं == | ||
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]. | ||
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> | ||
उदाहरण के | उदाहरण के रूप से मान लीजिए कि आप क्रूज जहाज चलाते हैं। आपको यह तय करना होगा कि कितने प्रसिद्ध कॉमेडियन को भर्ती करना है। यह नाव टन से अधिक यात्रियों को नहीं संभाल सकती है और मनोरंजन करने वालों का वजन 1000 पाउंड से कम होना चाहिए। प्रत्येक कॉमेडियन का वजन होता है, उनकी लोकप्रियता के आधार पर व्यवसाय में लाता है और विशिष्ट वेतन मांगता है। इस उदाहरण में, आपके पास कई उद्देश्य हैं। निस्संदेह आप अपने मनोरंजनकर्ताओं की लोकप्रियता को अधिकतम करना चाहते हैं जबकि उनके वेतन को कम करना चाहते हैं। साथ ही आप अधिक से अधिक मनोरंजनकर्ता चाहते हैं। | ||
===बहुआयामी नैकपैक समस्या=== | ===बहुआयामी नैकपैक समस्या=== | ||
इस भिन्नता में, नैकपैक आइटम i का वजन | इस भिन्नता में, नैकपैक आइटम 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>,> ऐसा है कि <math>\forall j\in J\cup \{z\},\ w_{ij}\geq 0</math> और <math>\forall y\notin J\cup\{z\}, w_{iy}=0</math>. उदाहरण के लिए, ऐसे उदाहरण होते हैं<ref>https://alpha.indicwiki.in/index.php?title=Special:MathShowImage&hash=4c04f2f6762e25ea2716a03df8f66691&mode=mathml</ref>, जब रिले नोड्स के साथ वायरलेस नेटवर्क में पैकेट शेड्यूल करते हैं। <ref name=CohenGrebla/> <ref name="CohenGrebla" /> से एल्गोरिथ्म बहुविकल्पी संस्करण, बहुविकल्पी बहु-आयामी नैकपैक के विरल उदाहरणों को भी हल करता है। | |||
आईएचएस (बढ़ती ऊंचाई शेल्फ़) एल्गोरिथम 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> | |||
=== एकाधिक बस्ता समस्या === | === एकाधिक बस्ता समस्या === | ||
यह भिन्नता बिन पैकिंग समस्या के समान है। यह बिन पैकिंग समस्या से भिन्न है जिसमें वस्तुओं का | यह भिन्नता बिन पैकिंग समस्या के समान है। यह बिन पैकिंग समस्या से भिन्न है जिसमें वस्तुओं का उपसमुच्चय चुना जा सकता है जबकि बिन पैकिंग समस्या में सभी वस्तुओं को कुछ डिब्बे में पैक करना पड़ता है। अवधारणा यह है कि कई थैले हैं। यह तुच्छ परिवर्तन की तरह लग सकता है, किन्तु यह प्रारंभिक नैकपैक की क्षमता को जोड़ने के समान नहीं है। इस भिन्नता का उपयोग ऑपरेशंस रिसर्च में कई लोडिंग और शेड्यूलिंग समस्याओं में किया जाता है और इसमें बहुपद-समय सन्निकटन योजना है।<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–259 | doi = 10.1007/s10957-011-9885-4 |s2cid=31208118 }}</ref> समस्या को 1980 में गैलो | द्विघातीय नैपसैक समस्या द्विघाती और रेखीय क्षमता प्रतिबंधों के अधीन द्विघात उद्देश्य फलन को अधिकतम करती है।<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–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–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> | ||
उपसमुच्चय योग समस्या के सामान्यीकरण को बहु उपसमुच्चय सम समस्या कहते हैं, जिसमें समान क्षमता वाले अनेक डिब्बे उपस्थित होते हैं। यह दिखाया गया है कि सामान्यीकरण में [[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> | |||
=== ज्यामितीय नैकपैक समस्या === | === ज्यामितीय नैकपैक समस्या === | ||
ज्यामितीय नैपसैक समस्या में | ज्यामितीय नैपसैक समस्या में विभिन्न मानों के साथ आयतों का समूह है और आयताकार नैकपैक है। लक्ष्य सबसे बड़ा संभव मान नैकपैक में पैक करना है।<ref>{{Cite book|last1=Abed|first1=Fidaa|last2=Chalermsook|first2=Parinya|last3=Correa|first3=José|last4=Karrenbauer|first4=Andreas|last5=Pérez-Lantero|first5=Pablo|last6=Soto|first6=José A.|last7=Wiese|first7=Andreas|date=2015|title=गिलोटिन कटिंग सीक्वेंस पर|url=https://kops.uni-konstanz.de/handle/123456789/33469|pages=1–19|doi=10.4230/LIPIcs.APPROX-RANDOM.2015.1|isbn=978-3-939897-89-7}}</ref> | ||
== यह भी देखें == | == यह भी देखें == | ||
Line 330: | Line 321: | ||
==बाहरी संबंध== | ==बाहरी संबंध== | ||
* [http://www.cse.unl.edu/~goddard/Courses/CSCE310J/Lectures/Lecture8-DynamicProgramming.pdf Lecture slides on the | * [http://www.cse.unl.edu/~goddard/Courses/CSCE310J/Lectures/Lecture8-DynamicProgramming.pdf Lecture slides on the नैपसैक problem] | ||
* [https://web.archive.org/web/20111006142943/http://download.gna.org/pyasukp/ PYAsUKP: Yet Another solver for the Unbounded क्नाप्सैक | * [https://web.archive.org/web/20111006142943/http://download.gna.org/pyasukp/ PYAsUKP: Yet Another solver for the Unbounded क्नाप्सैक Problem], with code taking advantage of the dominance relations in an hybrid algorithm, benchmarks and downloadable copies of some papers. | ||
* [http://www.diku.dk/~pisinger/ Home page of David Pisinger] with downloadable copies of some papers on the publication list (including | * [http://www.diku.dk/~pisinger/ Home page of David Pisinger] with downloadable copies of some papers on the publication list (including "Where are the hard नैपसैक problems?") | ||
* [http://rosettacode.org/wiki/Knapsack_Problem क्नाप्सैक | * [http://rosettacode.org/wiki/Knapsack_Problem क्नाप्सैक Problem solutions in many languages] at [[Rosetta Code]] | ||
* [http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/Dynamic/knapsackdyn.htm Dynamic Programming algorithm to 0/1 क्नाप्सैक | * [http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/Dynamic/knapsackdyn.htm Dynamic Programming algorithm to 0/1 क्नाप्सैक problem] | ||
* [https://web.archive.org/web/20140223114908/http://karaffeltut.com/NEWKaraffeltutCom/Knapsack/knapsack.html क्नाप्सैक | * [https://web.archive.org/web/20140223114908/http://karaffeltut.com/NEWKaraffeltutCom/Knapsack/knapsack.html क्नाप्सैक Problem solver (online)] | ||
* [http://www.nils-haldenwang.de/computer-science/computational-intelligence/genetic-algorithm-vs-0-1-knapsack Solving 0-1- | * [http://www.nils-haldenwang.de/computer-science/computational-intelligence/genetic-algorithm-vs-0-1-knapsack Solving 0-1-नैपसैक with Genetic Algorithms in Ruby] {{Webarchive|url=https://web.archive.org/web/20110523210824/http://www.nils-haldenwang.de/computer-science/computational-intelligence/genetic-algorithm-vs-0-1-knapsack |date=23 May 2011 }} | ||
* [http://www.adaptivebox.net/CILib/code/qkpcodes_link.html Codes for Quadratic क्नाप्सैक | * [http://www.adaptivebox.net/CILib/code/qkpcodes_link.html Codes for Quadratic क्नाप्सैक Problem] {{Webarchive|url=https://web.archive.org/web/20150214020941/http://www.adaptivebox.net/CILib/code/qkpcodes_link.html |date=14 February 2015 }} | ||
* [https://web.archive.org/web/20190303205438/http://pdfs.semanticscholar.org/bb99/86af2f26f7726fcef1bc684eac8239c9b853.pdf Optimizing Three-Dimensional Bin Packing] | * [https://web.archive.org/web/20190303205438/http://pdfs.semanticscholar.org/bb99/86af2f26f7726fcef1bc684eac8239c9b853.pdf Optimizing Three-Dimensional Bin Packing] | ||
* [http://apmonitor.com/me575/index.php/Main/KnapsackOptimization क्नाप्सैक | * [http://apmonitor.com/me575/index.php/Main/KnapsackOptimization क्नाप्सैक Integer Programming Solution in Python] [[Gekko (optimization software)]] | ||
{{DEFAULTSORT:Knapsack Problem}} | |||
[[Category: | [[Category:Articles with hatnote templates targeting a nonexistent page|Knapsack Problem]] | ||
[[Category:Created On 31/05/2023]] | [[Category:CS1]] | ||
[[Category:Created On 31/05/2023|Knapsack Problem]] | |||
[[Category:Lua-based templates|Knapsack Problem]] | |||
[[Category:Machine Translated Page|Knapsack Problem]] | |||
[[Category:Multi-column templates|Knapsack Problem]] | |||
[[Category:Pages using div col with small parameter|Knapsack Problem]] | |||
[[Category:Pages with empty portal template|Knapsack Problem]] | |||
[[Category:Pages with script errors|Knapsack Problem]] | |||
[[Category:Pages with syntax highlighting errors]] | |||
[[Category:Portal templates with redlinked portals|Knapsack Problem]] | |||
[[Category:Templates Vigyan Ready|Knapsack Problem]] | |||
[[Category:Templates that add a tracking category|Knapsack Problem]] | |||
[[Category:Templates that generate short descriptions|Knapsack Problem]] | |||
[[Category:Templates using TemplateData|Knapsack Problem]] | |||
[[Category:Templates using under-protected Lua modules|Knapsack Problem]] | |||
[[Category:Webarchive template wayback links|Knapsack Problem]] | |||
[[Category:Wikipedia fully protected templates|Div col]] | |||
[[Category:एनपी-पूर्ण समस्याएं|Knapsack Problem]] | |||
[[Category:कमजोर एनपी-पूर्ण समस्याएं|Knapsack Problem]] | |||
[[Category:क्रिप्टोग्राफी|Knapsack Problem]] | |||
[[Category:गतिशील प्रोग्रामिंग|Knapsack Problem]] | |||
[[Category:छद्म-बहुपद समय एल्गोरिदम|Knapsack Problem]] | |||
[[Category:पैकिंग की समस्या|Knapsack Problem]] | |||
[[Category:संयुक्त अनुकूलन|Knapsack Problem]] |
Latest revision as of 20:18, 5 July 2023
संयोजी अनुकूलन में नैपसैक समस्या निम्नलिखित समस्या है:
- वस्तुओं का समुच्चय दिया गया है प्रत्येक वजन और मूल्य के साथ यह निर्धारित करें कि संग्रह में कौन सी वस्तुओं को सम्मिलित करना है जिससे कुल वजन दी गई सीमा से कम या उसके समान हो और कुल मूल्य जितना संभव हो उतना बड़ा हो।' '
इसका नाम किसी ऐसे व्यक्ति के सामने आने वाली समस्या से लिया गया है जो निश्चित आकार के थैले से विवश है और इसे सबसे मूल्यवान वस्तुओं से भरना चाहिए। समस्या अधिकांशतः संसाधन आवंटन में उत्पन्न होती है जहां निर्णय लेने वालों को क्रमशः निश्चित बजट या समय की कमी के अनुसार गैर-विभाज्य परियोजनाओं या कार्यों के समुच्चय से चुनना पड़ता है।
नैकपैक समस्या का अध्ययन सदी से भी अधिक समय से किया जा रहा है, जिसमें प्रारंभिक कार्य 1897 तक के हैं।[1] नैपसेक नाम की समस्या गणितज्ञ टोबियास डेंजिग (1884-1956) के प्रारंभिक कार्यों से मिलती है,[2] और सामान को ओवरलोड किए बिना सबसे मूल्यवान या उपयोगी वस्तुओं को पैक करने की सामान्य समस्या को संदर्भित करता है।
अनुप्रयोग
विभिन्न प्रकार के क्षेत्रों में वास्तविक विश्व की निर्णय लेने की प्रक्रियाओं में नैपसैक समस्याएं दिखाई देती हैं जैसे कच्चे माल को कम से कम व्यर्थ करने का प्रणाली खोजना [3] निवेश और पोर्टफोलियो (वित्त) का चयन[4] संपत्ति-समर्थित प्रतिभूतिकरण के लिए संपत्ति का चयन [5] और मेर्कले-हेलमैन [6] और अन्य नैकपैक क्रिप्टोप्रणाली के लिए जनरेटिंग कुंजियां है ।
क्नाप्सैक एल्गोरिदम का प्रारंभिक अनुप्रयोग परीक्षणों के निर्माण और स्कोरिंग में था जिसमें परीक्षार्थियों के पास यह विकल्प होता है कि वे किस प्रश्न का उत्तर दें और छोटे उदाहरणों के लिए परीक्षार्थियों को इस तरह का विकल्प प्रदान करना अधिक सरल प्रक्रिया है। उदाहरण के लिए यदि किसी परीक्षा में 10 अंकों के 12 प्रश्न हैं तो परीक्षार्थी को अधिकतम 100 अंक प्राप्त करने के लिए केवल 10 प्रश्नों के उत्तर देने की आवश्यकता है। चूंकि बिंदु मानों के विषम वितरण वाले परीक्षणों पर विकल्प प्रदान करना अधिक कठिन होता है। फ़्यूरमैनऔर वेइसने प्रणाली प्रस्तावित की जिसमें छात्रों को कुल 125 संभावित अंकों के साथ विषम परीक्षा दी जाती है। छात्रों को अपनी क्षमताओं के अनुसार सभी प्रश्नों के उत्तर देने के लिए कहा जाता है। समस्याओं के संभावित उपसमुच्चयों में से जिनके कुल अंक मान 100 तक जोड़ते हैं नैपसैक एल्गोरिथ्म यह निर्धारित करेगा कि कौन सा उपसमुच्चय प्रत्येक छात्र को उच्चतम संभव स्कोर देता है।[7]
1999 में स्टोनी ब्रुक यूनिवर्सिटी एल्गोरिथम रिपॉजिटरी के अध्ययन से पता चला है कि कॉम्बिनेटरियल एल्गोरिदम और एल्गोरिथम इंजीनियरिंग के क्षेत्र से संबंधित 75 एल्गोरिथम समस्याओं में से, नैपसैक समस्या 19वीं सबसे लोकप्रिय और प्रत्यय पेड़ों और बिन पैकिंग समस्या के बाद तीसरी सबसे अधिक आवश्यक थी। .[8]
परिभाषा
हल की जा रही सबसे समान समस्या 0-1 नैपसैक समस्या है, जो प्रत्येक प्रकार के आइटम की प्रतियों की संख्या को शून्य या एक तक सीमित कर देती है। अधिकतम वजन क्षमता के साथ, 1 से तक की संख्या वाली वस्तुओं का एक सेट दिया गया है, प्रत्येक का वजन और एक मान है।
- अधिकतम करें
- का विषय है और .
यहाँ नैपसैक में सम्मिलित करने के लिए आइटम के उदाहरणों की संख्या का प्रतिनिधित्व करता है। अनौपचारिक रूप से समस्या थैले में वस्तुओं के मूल्यों के योग को अधिकतम करने की है जिससे वजन का योग थैले की क्षमता से कम या उसके समान हो।
बाउंडेड नैपसैक प्रॉब्लम (बीकेपी) प्रतिबंध को हटाती है कि प्रत्येक आइटम में से केवल है, किन्तु प्रत्येक प्रकार के आइटम की प्रतियों की संख्या को अधिकतम गैर-ऋणात्मक पूर्णांक मान तक सीमित करती है:
- अधिकतम करें
- का विषय है और
अनबाउंड नैपसैक प्रॉब्लम (यूकेपी) प्रत्येक प्रकार के आइटम की प्रतियों की संख्या पर कोई ऊपरी सीमा नहीं रखती है और इसे ऊपर के रूप में तैयार किया जा सकता है सिवाय इसके कि पर एकमात्र प्रतिबंध यह है कि यह गैर-नकारात्मक पूर्णांक है।
- अधिकतम करें
- का विषय है और
असीमित नैपसैक समस्या का उदाहरण इस आलेख के आरंभ में दिखाए गए चित्र और उस चित्र के शीर्षक में प्रत्येक बॉक्स की कोई संख्या उपलब्ध होने पर पाठ का उपयोग करके दिया गया है।
कम्प्यूटेशनल जटिलता
कंप्यूटर विज्ञान के दृष्टिकोण से नैकपैक समस्या कई कारणों से रोचक है:
- क्नाप्सैक समस्या का निर्णय समस्या रूप (क्या कम से कम V का मान W से अधिक वजन के बिना प्राप्त किया जा सकता है?) NP-पूर्ण है, इस प्रकार कोई ज्ञात एल्गोरिथम नहीं है जो सभी स्थितियों में सही और तेज़ (बहुपद-समय) दोनों हो .
- जबकि निर्णय समस्या एनपी-पूर्ण है, अनुकूलन समस्या नहीं है, इसका समाधान कम से कम उतना ही कठिन है जितना कि निर्णय समस्या और कोई ज्ञात बहुपद एल्गोरिथ्म नहीं है जो यह बता सके कि समाधान दिया गया है कि क्या यह इष्टतम है (जो होगा) इसका कारण है कि बड़े वी के साथ कोई समाधान नहीं है, इस प्रकार एनपी-पूर्ण निर्णय समस्या को हल करना)।
- गतिशील प्रोग्रामिंग का उपयोग करते हुए छद्म-बहुपद समय एल्गोरिथ्म है।
- बहुपद-समय सन्निकटन योजना है।
- कई स्थितियों जो व्यवहार में उत्पन्न होते हैं, और कुछ वितरणों से यादृच्छिक उदाहरण फिर भी ठीक से हल किए जा सकते हैं।
इसमें निर्णय और अनुकूलन समस्याओं के बीच लिंक है, यदि कोई बहुपद एल्गोरिदम उपस्थित है जो निर्णय की समस्या को हल करता है तो बहुपद समय में अनुकूलन समस्या के लिए अधिकतम मूल्य पा सकते हैं, इस एल्गोरिथ्म को k के मान में वृद्धि करते हुए पुनरावृत्त रूप से प्रयुक्त कर सकते हैं। दूसरी ओर, यदि एल्गोरिथ्म बहुपद समय में अनुकूलन समस्या का इष्टतम मूल्य पाता है, तो बहुपद समय में इस एल्गोरिथ्म द्वारा समाधान आउटपुट के मूल्य की तुलना k के मान से करके निर्णय समस्या को हल किया जा सकता है। इस प्रकार, समस्या के दोनों संस्करण समान कठिनाई वाले हैं।
शोध साहित्य में विषय यह पहचानना है कि नैकपैक समस्या के कठिन उदाहरण क्या दिखते हैं,[9][10] या किसी अन्य विधि से देखा जाता है, यह पहचानने के लिए कि व्यवहार में उदाहरणों के कौन से गुण उन्हें उनके सबसे खराब स्थिति वाले एनपी-पूर्ण व्यवहार से अधिक उत्तरदायी बना सकते हैं।[11] इन कठिन उदाहरणों को खोजने का लक्ष्य सार्वजनिक कुंजी क्रिप्टोग्राफ़ी प्रणाली में उनके उपयोग के लिए है, जैसे मर्कल-हेलमैन नैपसैक क्रिप्टोसिस्टम है
इसके अतिरिक्त उल्लेखनीय तथ्य यह है कि नैकपैक समस्या की कठोरता इनपुट के रूप पर निर्भर करती है। यदि वजन और लाभ पूर्णांक के रूप में दिया जाता है, तो यह अशक्त रूप से एनपी-पूर्ण होता है, जबकि वजन और लाभ को तर्कसंगत संख्या के रूप में दिया जाता है, जबकि यह दृढ़ता से एनपी-पूर्ण होता है।[12] चूंकि तर्कसंगत वजन और लाभ के स्थितियों में यह अभी भी बहुपद-समय सन्निकटन योजना को स्वीकार करता है। पूरी तरह से बहुपद-समय सन्निकटन योजना है ।
सुलझाना
गतिशील प्रोग्रामिंग दृष्टिकोण, शाखा और बाध्य दृष्टिकोण या दोनों दृष्टिकोणों के संकरण के आधार पर,[13] नैपसैक समस्याओं को हल करने[14] के लिए कई एल्गोरिदम उपलब्ध हैं।[11][15][16][17]
डायनेमिक प्रोग्रामिंग इन-एडवांस एल्गोरिथम
असीमित नैपसैक समस्या (यूकेपी) प्रत्येक प्रकार के आइटम की प्रतियों की संख्या पर कोई प्रतिबंध नहीं लगाती है। इसके अतिरिक्त यहाँ हम मानते हैं
- का विषय है और
उसका अवलोकन करो निम्नलिखित गुण हैं:
1. (शून्य मदों का योग, अर्थात खाली समुच्चय का योग)।
2.
, , जहाँ का मूल्य है -वें प्रकार की वस्तु।
दूसरी संपत्ति को विस्तार से समझाने की आवश्यकता है। इस पद्धति के चलने की प्रक्रिया के समय हम वजन कैसे प्राप्त करते हैं? केवल विधि हैं और पिछले वजन हैं जहां कुल प्रकार के अलग-अलग आइटम हैं (यह कहकर अलग, हमारा कारण है कि वजन और मूल्य पूरी तरह से समान नहीं हैं)। यदि हम इन वस्तुओं के प्रत्येक मूल्य और संबंधित अधिकतम मूल्य को पहले से जानते हैं, तो हम बस उनकी दूसरे से तुलना करते हैं और अंततः अधिकतम मूल्य प्राप्त करते हैं और हम कर रहे हैं।
यहां खाली समुच्चय का अधिकतम शून्य लिया जाता है। से तक परिणामों को सारणीबद्ध करने से समाधान मिलता है। चूंकि प्रत्येक की गणना में अधिकांश मदों की जांच सम्मिलित है, और गणना करने के लिए के अधिकतम मान हैं, गतिशील प्रोग्रामिंग समाधान का चलने का समय है। को उनके सबसे बड़े सामान्य भाजक से विभाजित करना चलने के समय को बढ़िया बनाने का प्रणाली है।
तथापि P≠NP, जटिलता इस तथ्य का खंडन नहीं करती है कि नैपसैक समस्या NP-पूर्ण है, क्योंकि , के विपरीत, समस्या के इनपुट की लंबाई में बहुपद नहीं है। समस्या के लिए इनपुट की लंबाई , , में बिट्स की संख्या के समानुपाती होती है, स्वयं के लिए नहीं। चूंकि , चूंकि यह रनटाइम छद्मबहुपद है, यह (निर्णय संस्करण) नैपसैक समस्या को अशक्त एनपी-पूर्ण समस्या बनाता है।
0-1 बस्ता समस्या
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 में बदलता रहता है। इस दृष्टिकोण से, हम इस पद्धति को प्रोग्राम कर सकते हैं जिससे यह पुनरावर्ती रूप से चलता है ।
// 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.
Define value[n, W]
Initialize all value[i, j] = -1
Define m:=(i,j) // Define function m so that it represents the maximum value we can get under the condition: use first i items, total weight limit is j
{
if i == 0 or j <= 0 then:
value[i, j] = 0
return
if (value[i-1, j] == -1) then: // m[i-1, j] has not been calculated, we have to call function m
m(i-1, j)
if w[i] > j then: // item cannot fit in the bag
value[i, j] = value[i-1, j]
else:
if (value[i-1, j-w[i]] == -1) then: // m[i-1,j-w[i]] has not been calculated, we have to call function m
m(i-1, j-w[i])
value[i, j] = max(value[i-1,j], value[i-1, j-w[i]] + v[i])
}
Run m(n, W)
उदाहरण के लिए, 10 अलग-अलग आइटम हैं और वज़न की सीमा 67 है। इसलिए,
वस्तुओं के वास्तविक उपसमुच्चय को खोजने के लिए केवल उनके कुल मूल्य के अतिरिक्त हम इसे ऊपर दिए गए फलन को चलाने के बाद चला सकते हैं
/**
* Returns the indices of the items of the optimal knapsack.
* i: We can include items 1 through i in the knapsack
* j: maximum weight of the knapsack
*/
function knapsack(i: int, j: int): Set<int> {
if i == 0 then:
return {}
if m[i, j] > m[i-1, j] then:
return {i} ∪ knapsack(i-1, j-w[i])
else:
return knapsack(i-1, j)
}
knapsack(n, W)
बीच-बीच में मिलना
1974 में खोजे गए 0-1 नैपसैक के लिए और एल्गोरिथ्म [18], जिसे कभी-कभी क्रिप्टोग्राफी में समान नाम वाले एल्गोरिदम के समानांतर होने के कारण "मीट-इन-द-मिडल" कहा जाता है, विभिन्न मदों की संख्या में घातीय है किन्तु इसके लिए बढ़िया हो सकता है डीपी एल्गोरिथम जब n की तुलना में बड़ा होता है। विशेष रूप से, यदि गैर-नकारात्मक हैं, किन्तु पूर्णांक नहीं हैं, तब भी हम स्केलिंग और राउंडिंग (अर्थात निश्चित-बिंदु अंकगणितीय का उपयोग करके) द्वारा गतिशील प्रोग्रामिंग एल्गोरिदम का उपयोग कर सकते हैं, किन्तु यदि समस्या के लिए त्रुटिहीन के भिन्नात्मक अंकों की आवश्यकता होती है सही उत्तर, को से स्केल करने की आवश्यकता होगी, और डीपी एल्गोरिदम को स्पेस और समय की आवश्यकता होगी।
algorithm Meet-in-the-middle is
input: A set of items with weights and values.
output: The greatest combined value of a subset.
partition the set {1...n} into two sets A and B of approximately equal size
compute the weights and values of all subsets of each set
for each subset of A do
find the subset of B of greatest value such that the combined weight is less than W
keep track of the greatest combined value seen so far
एल्गोरिदम स्थान लेता है, और चरण 3 के कुशल कार्यान्वयन (उदाहरण के लिए, वजन के आधार पर B के उपसमुच्चय को छांटना, B के उपसमुच्चय को छोड़ना जो अधिक या समान मूल्य के B के अन्य उपसमुच्चय से अधिक वजन का होता है , और सर्वोत्तम मिलान खोजने के लिए बाइनरी खोज का उपयोग करके) के रनटाइम में परिणामित होता है। क्रिप्टोग्राफी में मीट इन मिडल अटैक के साथ, यह रनटाइम पर भोली क्रूर बल दृष्टिकोण ( के सभी उपसमुच्चय की जांच) के रनटाइम में सुधार करता है, इसकी कीमत पर निरंतर स्थान के अतिरिक्त घातांक का उपयोग करना (बेबी-स्टेप जाइंट-स्टेप भी देखें)। मीट-इन-द-मिडल एल्गोरिथम में सुधार की वर्तमान स्थिति, उपसमुच्चय योग के लिए श्रोएप्पेल और शमीर के एल्गोरिथम से अंतर्दृष्टि का उपयोग करते हुए, नैपसैक के लिए यादृच्छिक एल्गोरिथम के रूप में प्रदान करता है जो (बहुपद कारकों तक) चलने का समय और स्थान की आवश्यकताओं को तक कम कर देता है (देखें [24] परिणाम 1.4) [19]। इसके विपरीत, सबसे प्रसिद्ध नियतात्मक एल्गोरिथ्म समय में है ।
सन्निकटन एल्गोरिदम
अधिकांश एनपी-पूर्ण समस्याओं के लिए यह व्यावहारिक समाधान खोजने के लिए पर्याप्त हो सकता है, तथापि वे इष्टतम न हों। अधिमानतः चूंकि सन्निकटन समाधान के मूल्य और इष्टतम समाधान के मूल्य के बीच अंतर की आश्वासन के साथ आता है।
कई उपयोगी किन्तु कम्प्यूटेशनल रूप से जटिल एल्गोरिदम के साथ एल्गोरिदम बनाने और विश्लेषण करने पर पर्याप्त शोध किया गया है जो समाधान का अनुमान लगाता है। नैपसैक समस्या चूंकि एनपी-हार्ड एल्गोरिदम के संग्रह में से है जिसे अभी भी किसी निर्दिष्ट डिग्री तक अनुमानित किया जा सकता है। इसका कारण है कि समस्या में बहुपद समय सन्निकटन योजना है। स्पष्ट होने के लिए, नैकपैक समस्या में पूर्ण बहुपद समय सन्निकटन योजना (एफपीटीएएस ) है।[20]
लालची सन्निकटन एल्गोरिथम
जॉर्ज डेंटज़िग ने असीम नैपसैक समस्या को हल करने के लिए लालची सन्निकटन एल्गोरिथम प्रस्तावित किया जाता है । [21] उसका संस्करण वजन की प्रति इकाई मूल्य के घटते क्रम में वस्तुओं को क्रमबद्ध करता है, । यह तब उन्हें बोरी में डालने के लिए आगे बढ़ता है, पहले प्रकार के आइटम की जितनी संभव हो उतनी प्रतियों के साथ प्रारंभ होता है जब तक कि बोरी में और अधिक स्थान न हो। परंतु कि प्रत्येक प्रकार की वस्तु की असीमित आपूर्ति हो, यदि m बोरी में फिट होने वाली वस्तुओं का अधिकतम मूल्य है, तो लालची एल्गोरिथ्म को कम से कम का मान प्राप्त करने की आश्वासन है।
परिबद्ध समस्या के लिए जहाँ प्रत्येक प्रकार की वस्तु की आपूर्ति सीमित है उपरोक्त एल्गोरिथम इष्टतम से बहुत दूर हो सकता है। फिर भी साधारण संशोधन हमें इस स्थितियों को हल करने की अनुमति देता है: सादगी के लिए मान लें कि सभी आइटम अलग-अलग बोरी में फिट होते हैं ( सभी के लिए ) यथासंभव लंबे समय तक वस्तुओं को लालच से पैक करके समाधान का निर्माण करें, अर्थात जहां . इसके अतिरिक्त दूसरे समाधान का निर्माण करें जिसमें पहला आइटम फिट नहीं हुआ। चूँकि समस्या के LP रैखिक प्रोग्रामिंग छूट के लिए ऊपरी सीमा प्रदान करता है, समुच्चय में से का मान कम से कम होना चाहिए; हम इस प्रकार और में से जो भी लौटाते हैं उसका -सन्निकटन प्राप्त करने के लिए बढ़िया मूल्य है।
यह दिखाया जा सकता है कि औसत प्रदर्शन त्रुटि दर पर वितरण में इष्टतम समाधान में परिवर्तित हो जाता है [22]
पूरी तरह से बहुपद समय सन्निकटन योजना
नैपसैक समस्या के लिए पूरी तरह से बहुपद समय सन्निकटन योजना (एफपीटीएएस) इस तथ्य का लाभ उठाती है कि समस्या का कोई ज्ञात बहुपद समय समाधान नहीं है क्योंकि वस्तुओं से जुड़े लाभ प्रतिबंधित नहीं हैं। यदि कोई लाभ मूल्यों के कम से कम महत्वपूर्ण अंकों में से कुछ को गोल करता है तो वे बहुपद और 1/ε से बंधे होंगे जहां ε समाधान की शुद्धता पर बाध्य है। इस प्रतिबंध का कारण है कि एल्गोरिदम बहुपद समय में समाधान ढूंढ सकता है जो इष्टतम समाधान के (1-ε) के कारक के अंदर सही है।[20]
एल्गोरिथम एफपीटीएएस है
algorithm FPTAS i
input: ε ∈ (0,1]
a list A of n items, specified by their values, , and weights
output: S' the FPTAS solution
P := max // the highest item value
K= ε
for i from 1 to n do
:=
end for
return the solution, S', using the values in the dynamic program outlined above प्रमेय: उपरोक्त एल्गोरिथ्म द्वारा संगणित समुच्चय को संतुष्ट करता है, जहाँ इष्टतम उपाय है।
प्रमेय: उपरोक्त एल्गोरिथ्म द्वारा संगणित समुच्चय को संतुष्ट करता है, जहाँ इष्टतम उपाय है।
प्रभुत्व संबंध
असीमित नैपसेक समस्या का समाधान उन वस्तुओं को फेंक कर आसान बनाया जा सकता है जिनकी कभी आवश्यकता नहीं होगी। किसी दिए गए आइटम के लिए मान लीजिए कि हम आइटम का समुच्चय पा सकते हैं जैसे कि उनका कुल वजन के वजन से कम है, और उनका कुल मूल्य i के मान से अधिक है। तब मैं इष्टतम समाधान में प्रकट नहीं हो सकता, क्योंकि हम समुच्चय जे के साथ को बदलकर सदैव किसी भी संभावित समाधान में सुधार कर सकते हैं। इसलिए, हम -वें आइटम को पूरी तरह से अनदेखा कर सकते हैं। ऐसे स्थितियों में, को पर प्रभावित कहा जाता है। (ध्यान दें कि यह बंधी हुई नैकपैक समस्याओं पर प्रयुक्त नहीं होता है, क्योंकि हो सकता है कि हमने पहले ही में आइटम का उपयोग कर लिया हो।)
प्रभुत्व संबंध खोजना हमें खोज स्थान के आकार को महत्वपूर्ण रूप से कम करने की अनुमति देता है। कई अलग-अलग प्रकार के प्रभुत्व संबंध हैं,[11]जो सभी फॉर्म की असमानता को पूरा करते हैं:
, और कुछ के लिए जहाँ और . सदिश , के प्रत्येक सदस्य की प्रतियों की संख्या को दर्शाता है .
सामूहिक प्रभुत्व:
वें>-वें आइटम का सामूहिक रूप से प्रभुत्व है , के रूप में लिखा गया है , यदि मदों के कुछ संयोजन का कुल भार wi से कम है और उनका कुल मान vi से अधिक है औपचारिक रूप से, और कुछ के लिए , अर्थात। . इस प्रभुत्व को सत्यापित करना कम्प्यूटेशनल रूप से कठिन है, इसलिए इसका उपयोग केवल गतिशील प्रोग्रामिंग दृष्टिकोण के साथ किया जा सकता है। वास्तव में, यह छोटी नैकपैक निर्णय समस्या को हल करने के समान है जहां , , और आइटम प्रतिबंधित हैं .
सीमा प्रभुत्व:
वां>-वां आइटम सीमा का प्रभुत्व है , के रूप में लिखा गया है , यदि कुछ प्रतियों की संख्या से प्रभावित है। औपचारिक रूप से, , और कुछ के लिए और . यह सामूहिक प्रभुत्व का सामान्यीकरण है, जिसे पहली बार में प्रस्तुत किया गया था[13] और EDUK एल्गोरिथ्म में उपयोग किया जाता है। इस तरह का सबसे छोटा आइटम की सीमा को परिभाषित करता है, जिसे लिखा जाता है। इस स्थितियों में, इष्टतम समाधान में 0 की अधिकतम प्रतियां हो सकती हैं।
एकाधिक प्रभुत्व:
वें>-वें आइटम में ही आइटम का गुणन होता है , के रूप में लिखा गया है , यदि की कुछ प्रतियों का प्रभुत्व है . औपचारिक रूप से, , और कुछ के लिए अर्थात। . प्रीप्रोसेसिंग के समय इस प्रभुत्व का कुशलता से उपयोग किया जा सकता है क्योंकि इसका अपेक्षाकृत आसानी से पता लगाया जा सकता है।
मॉड्यूलर प्रभुत्व:
माना कि सर्वोत्तम वस्तु है अर्थात् सभी के लिए . यह मूल्य के सबसे बड़े घनत्व वाला आइटम है। th>-th आइटम मॉड्यूलर रूप से एकल आइटम का प्रभुत्व है के रूप में लिखा गया है जिसे , के रूप में लिखा गया है, यदि पर और .की कई प्रतियों का प्रभुत्व है। औपचारिक रूप से, , और अर्थात .
विविधताएं
नैकपैक समस्या के कई रूप हैं जो मूल समस्या के अनुप्रयोगों की विशाल संख्या से उत्पन्न हुए हैं। मुख्य विविधताएं कुछ समस्या पैरामीटरों की संख्या जैसे मदों की संख्या, उद्देश्यों की संख्या, या यहां तक कि नैपैक्स की संख्या को बदलकर उत्पन्न होती हैं।
बहुउद्देश्यीय नैकपैक समस्या
यह भिन्नता थैला भरने वाले व्यक्ति के लक्ष्य को बदल देती है। उद्देश्य के अतिरिक्त जैसे कि मौद्रिक लाभ को अधिकतम करना, उद्देश्य के कई आयाम हो सकते हैं। उदाहरण के लिए, पर्यावरण या सामाजिक सरोकार के साथ-साथ आर्थिक लक्ष्य भी हो सकते हैं। जिन समस्याओं को अधिकांशतः संबोधित किया जाता है उनमें पोर्टफोलियो और परिवहन रसद अनुकूलन सम्मिलित हैं।[23][24]
उदाहरण के रूप से मान लीजिए कि आप क्रूज जहाज चलाते हैं। आपको यह तय करना होगा कि कितने प्रसिद्ध कॉमेडियन को भर्ती करना है। यह नाव टन से अधिक यात्रियों को नहीं संभाल सकती है और मनोरंजन करने वालों का वजन 1000 पाउंड से कम होना चाहिए। प्रत्येक कॉमेडियन का वजन होता है, उनकी लोकप्रियता के आधार पर व्यवसाय में लाता है और विशिष्ट वेतन मांगता है। इस उदाहरण में, आपके पास कई उद्देश्य हैं। निस्संदेह आप अपने मनोरंजनकर्ताओं की लोकप्रियता को अधिकतम करना चाहते हैं जबकि उनके वेतन को कम करना चाहते हैं। साथ ही आप अधिक से अधिक मनोरंजनकर्ता चाहते हैं।
बहुआयामी नैकपैक समस्या
इस भिन्नता में, नैकपैक आइटम i का वजन डी-आयामी वेक्टर द्वारा दिया जाता है और नैपसैक में डी- आयामी क्षमता वेक्टर । लक्ष्य बैकपैक में वस्तुओं के मूल्यों के योग को अधिकतम करना है जिससे प्रत्येक आयाम में वजन का योग से अधिक न हो।
बहु-आयामी नैकपैक कम्प्यूटेशनल रूप से नैपसैक की तुलना में कठिन है; के लिए भी, समस्या में इप्टास नहीं है जब तक कि P=NP नहीं है। [25] चूंकि [26] में एल्गोरिथ्म विरल उदाहरणों को कुशलतापूर्वक हल करने के लिए दिखाया गया है। बहु-आयामी नैपसैक का उदाहरण विरल है यदि के लिए समुच्चय है जैसे कि प्रत्येक नैपसैक आइटम के लिए ,> ऐसा है कि और . उदाहरण के लिए, ऐसे उदाहरण होते हैं[27], जब रिले नोड्स के साथ वायरलेस नेटवर्क में पैकेट शेड्यूल करते हैं। [26] [26] से एल्गोरिथ्म बहुविकल्पी संस्करण, बहुविकल्पी बहु-आयामी नैकपैक के विरल उदाहरणों को भी हल करता है।
आईएचएस (बढ़ती ऊंचाई शेल्फ़) एल्गोरिथम 2D नैकपैक (वर्गों को द्वि-आयामी इकाई आकार वर्ग में पैक करना) के लिए इष्टतम है: जब इष्टतम पैकिंग में अधिकतम पाँच वर्ग होते हैं।[28]
एकाधिक बस्ता समस्या
यह भिन्नता बिन पैकिंग समस्या के समान है। यह बिन पैकिंग समस्या से भिन्न है जिसमें वस्तुओं का उपसमुच्चय चुना जा सकता है जबकि बिन पैकिंग समस्या में सभी वस्तुओं को कुछ डिब्बे में पैक करना पड़ता है। अवधारणा यह है कि कई थैले हैं। यह तुच्छ परिवर्तन की तरह लग सकता है, किन्तु यह प्रारंभिक नैकपैक की क्षमता को जोड़ने के समान नहीं है। इस भिन्नता का उपयोग ऑपरेशंस रिसर्च में कई लोडिंग और शेड्यूलिंग समस्याओं में किया जाता है और इसमें बहुपद-समय सन्निकटन योजना है।[29]
द्विघाती नैपसैक समस्या
द्विघातीय नैपसैक समस्या द्विघाती और रेखीय क्षमता प्रतिबंधों के अधीन द्विघात उद्देश्य फलन को अधिकतम करती है।[30] समस्या को 1980 में गैलो हैमर और शिमोन द्वारा प्रस्तुत किया गया था।[31] चूँकि समस्या का पहला उपचार 1975 में विट्जगल में हुआ था।[32]
सबसेट-योग समस्या
उपसमुच्चय योग समस्या निर्णय का विशेष स्थिति है और 0-1 समस्याएं हैं जहां प्रत्येक प्रकार की वस्तु, वजन मूल्य के समान होती है: . क्रिप्टोग्राफी के क्षेत्र में नैकपैक समस्या शब्द का प्रयोग अधिकांशतः विशेष रूप से उपसमुच्चय योग समस्या को संदर्भित करने के लिए किया जाता है और इसे सामान्यतः कार्प की 21 एनपी-पूर्ण समस्याओं में से के रूप में जाना जाता है।[33]
उपसमुच्चय योग समस्या के सामान्यीकरण को बहु उपसमुच्चय सम समस्या कहते हैं, जिसमें समान क्षमता वाले अनेक डिब्बे उपस्थित होते हैं। यह दिखाया गया है कि सामान्यीकरण में एफपीटीएएस नहीं है।[34]
ज्यामितीय नैकपैक समस्या
ज्यामितीय नैपसैक समस्या में विभिन्न मानों के साथ आयतों का समूह है और आयताकार नैकपैक है। लक्ष्य सबसे बड़ा संभव मान नैकपैक में पैक करना है।[35]
यह भी देखें
- बिन पैकिंग समस्या
- परिवर्तन करने की समस्या
- मिश्रित नीलामी
- संयुक्त अनुकूलन
- लगातार नैकपैक की समस्या
- स्टॉक की समस्या में कटौती
- बस्ता समस्याओं की सूची
- पैकिंग की समस्या
टिप्पणियाँ
- ↑ Mathews, G. B. (25 June 1897). "संख्याओं के विभाजन पर" (PDF). Proceedings of the London Mathematical Society. 28: 486–490. doi:10.1112/plms/s1-28.1.486.
- ↑ Dantzig, Tobias (2007). Number : the language of science (The Masterpiece Science ed.). New York: Plume Book. ISBN 9780452288119.
- ↑ Kellerer, Hans; Pferschy, Ulrich; Pisinger, David (2004). बस्ता समस्याएं. Berlin: Springer. p. 449. ISBN 978-3-540-40286-2. Retrieved 5 May 2022.
- ↑ Kellerer, Hans; Pferschy, Ulrich; Pisinger, David (2004). बस्ता समस्याएं. Berlin: Springer. p. 461. ISBN 978-3-540-40286-2. Retrieved 5 May 2022.
- ↑ Kellerer, Hans; Pferschy, Ulrich; Pisinger, David (2004). बस्ता समस्याएं. Berlin: Springer. p. 465. ISBN 978-3-540-40286-2. Retrieved 5 May 2022.
- ↑ Kellerer, Hans; Pferschy, Ulrich; Pisinger, David (2004). बस्ता समस्याएं. Berlin: Springer. p. 472. ISBN 978-3-540-40286-2. Retrieved 5 May 2022.
- ↑ Feuerman, Martin; Weiss, Harvey (April 1973). "टेस्ट निर्माण और स्कोरिंग के लिए एक गणितीय प्रोग्रामिंग मॉडल". Management Science. 19 (8): 961–966. doi:10.1287/mnsc.19.8.961. JSTOR 2629127.
- ↑ 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.
- ↑ Pisinger, D. 2003. Where are the hard knapsack problems? Technical Report 2003/08, Department of Computer Science, University of Copenhagen, Copenhagen, Denmark.
- ↑ Caccetta, L.; Kulanoot, A. (2001). "हार्ड नैपसेक समस्याओं के कम्प्यूटेशनल पहलू". Nonlinear Analysis. 47 (8): 5547–5558. doi:10.1016/s0362-546x(01)00658-7.
- ↑ 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}
- ↑ {{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}
- ↑ 13.0 13.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.
- ↑ S. Martello, P. Toth, Knapsack Problems: Algorithms and Computer Implementations, John Wiley and Sons, 1990
- ↑ S. Martello, D. Pisinger, P. Toth, Dynamic programming and strong bounds for the 0-1 knapsack problem, Manag. Sci., 45:414–424, 1999.
- ↑ Plateau, G.; Elkihel, M. (1985). "0-1 नैकपैक समस्या के लिए एक हाइब्रिड एल्गोरिथम". Methods of Oper. Res. 49: 277–293.
- ↑ Martello, S.; Toth, P. (1984). "सबसेट-योग समस्या के लिए डायनेमिक प्रोग्रामिंग और ब्रांच-एंड-बाउंड का मिश्रण". Manag. Sci. 30 (6): 765–771. doi:10.1287/mnsc.30.6.765.
- ↑ 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
- ↑ Nederlof, Jesper; Węgrzycki, Karol (2021-04-12). "ऑर्थोगोनल वैक्टर के माध्यम से सबसेट सम के लिए श्रोएपेल और शमीर के एल्गोरिदम में सुधार". arXiv:2010.08576 [cs.DS].
- ↑ 20.0 20.1 Vazirani, Vijay. Approximation Algorithms. Springer-Verlag Berlin Heidelberg, 2003.
- ↑ Dantzig, George B. (1957). "असतत-चर चरम समस्याएं". Operations Research. 5 (2): 266–288. doi:10.1287/opre.5.2.266.
- ↑ 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.
- ↑ Chang, T. J., et al. Heuristics for Cardinality Constrained Portfolio Optimization. Technical Report, London SW7 2AZ, England: The Management School, Imperial College, May 1998
- ↑ Chang, C. S., et al. "Genetic Algorithm Based Bicriterion Optimization for Traction Substations in DC Railway System." In Fogel [102], 11-16.
- ↑ 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.
- ↑ 26.0 26.1 26.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.
- ↑ https://alpha.indicwiki.in/index.php?title=Special:MathShowImage&hash=4c04f2f6762e25ea2716a03df8f66691&mode=mathml
- ↑ 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.
- ↑ Chandra Chekuri and Sanjeev Khanna (2005). "मल्टीपल नैपसैक समस्या के लिए एक पीटीएएस". SIAM Journal on Computing. 35 (3): 713–728. CiteSeerX 10.1.1.226.3387. doi:10.1137/s0097539700382820.
- ↑ 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.
- ↑ 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) - ↑ Witzgall, C. (1975). "इलेक्ट्रॉनिक संदेश प्रणाली (ईएमएस) के लिए साइट चयन के गणितीय तरीके". NASA Sti/Recon Technical Report N. NBS Internal report. 76: 18321. Bibcode:1975STIN...7618321W.
- ↑ 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
- ↑ Caprara, Alberto; Kellerer, Hans; Pferschy, Ulrich (2000). "मल्टीपल सब्मिट सम प्रॉब्लम". SIAM J. Optim. 11 (2): 308–319. CiteSeerX 10.1.1.21.9826. doi:10.1137/S1052623498348481.
- ↑ 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.
संदर्भ
- Garey, Michael R.; David S. Johnson (1979). Computers and Intractability: A Guide to the Theory of NP-Completeness. W.H. Freeman. ISBN 978-0-7167-1045-5. A6: MP9, pg.247.
- Kellerer, Hans; Pferschy, Ulrich; Pisinger, David (2004). Knapsack Problems. Springer. doi:10.1007/978-3-540-24777-7. ISBN 978-3-540-40286-2. MR 2161720. S2CID 28836720.
- Martello, Silvano; Toth, Paolo (1990). Knapsack problems: Algorithms and computer implementations. Wiley-Interscience. ISBN 978-0-471-92420-3. MR 1086874.
बाहरी संबंध
- Lecture slides on the नैपसैक problem
- PYAsUKP: Yet Another solver for the Unbounded क्नाप्सैक Problem, with code taking advantage of the dominance relations in an hybrid algorithm, benchmarks and downloadable copies of some papers.
- Home page of David Pisinger with downloadable copies of some papers on the publication list (including "Where are the hard नैपसैक problems?")
- क्नाप्सैक Problem solutions in many languages at Rosetta Code
- Dynamic Programming algorithm to 0/1 क्नाप्सैक problem
- क्नाप्सैक Problem solver (online)
- Solving 0-1-नैपसैक with Genetic Algorithms in Ruby Archived 23 May 2011 at the Wayback Machine
- Codes for Quadratic क्नाप्सैक Problem Archived 14 February 2015 at the Wayback Machine