कुछ पृष्ठभूमि। उपरोक्त समस्या प्रतिबंधों के साथ समस्या है। के साथ या बिना प्रतिबंधों के सबसे कुशल knapsack समस्या समाधान pseudopolynomial समय में हल किया जा सकता है, फिर भी NP-Hard। कुछ बदलावों के लिए, https://en.wikipedia.org/wiki/Knapsack_problem#Definition देखें । इस भिन्नता में पहला प्रतिबंध यह है कि नैकपैक (डिब्बे) में रखी जाने वाली वस्तुओं (गेंदों) का मूल्य मायने नहीं रखता है। समस्या तब होती है जब आइटम को नैकपैक में रखने के लिए समय की मात्रा तक सीमित होता है। मूल समस्या के लिए सबसे मूल्यवान वस्तुओं को कम से कम समय में रखा जाना चाहिए। इस संस्करण के साथ एक और प्रतिबंध यह है कि भार और अन्य सभी तर्क पूर्णांक हैं। और ब्याज की प्रतिबंध यह है कि वजन है डब्ल्यू जेwjसभी लिए w j + 1 को विभाजित करें । नोट: आंशिक फ्रैपटैक समस्या को बहुपद समय में हल किया जा सकता है, लेकिन मूल समस्या का सबसे व्यावहारिक समाधान प्रस्तुत नहीं करता है। यह समस्या पूर्णांक का उपयोग करती है जो समान रूप से विभाजित होती है (कोई तर्कसंगत समाधान नहीं)। शायद देखते हैं कि नैकलैस समस्या के साथ क्या बड़ी बात है? ।wj+1jj
मुख्य प्रश्न शायद "होना चाहिए" क्या यह समस्या अभी भी एनपी-हार्ड है जब एक बहुपद द्वारा अनुरूप है , क्योंकि समस्या कम जटिल है (P में) जब यह बाध्य होता है? कारण मैं यह कहता हूं क्योंकि समस्या है? में तब दिखाया जाना चाहिए जब और NP-Hard जब आवश्यक रूप से विभाजित नहीं करता हैwjwjiiwjwjwjwjwj+1wj+1समान रूप से (वजन केवल यादृच्छिक हैं), सभी प्रतिबंध इस समस्या की जटिलता को इन दो स्थितियों तक सीमित करते हैं। ये स्थितियाँ (1. आइटम-मूल्य प्रतिबंध के बिना यादृच्छिक वजन कम करने की समस्या और आइटम-मूल्य प्रतिबंध के बिना 2. विभाज्य वजन घटाने की समस्या) जटिलता को कम करने के संदर्भ में एक-दूसरे को नकारते हैं, क्योंकि भार के उद्धरण स्वयं यादृच्छिक हो सकते हैं ( विशेष रूप से अनबाउंड), इस प्रकार घातांक समय गणना (यह नीचे दिए गए उदाहरण में दिखाया जाएगा)। इसके अतिरिक्त, क्योंकि विभाजित होता है , आकार में प्रत्येक लिए तेजी से बढ़ता हैwjwjwj+1wj+1wjwjjj। इसका कारण यह है कि यादृच्छिक भारित वस्तुओं (गेंदों का जिनकी इकाई का वजन सभी 100 या 50 या 10 के तहत इकाई भार तक सीमित हो सकता है) का उपयोग करने के बजाय, प्रतिबंध समय की जटिलता के कारण के अंकों की संख्या पर निर्भर करता है , जैसा कि परीक्षण प्रभाग, जो घातीय है।wjwj
तो हाँ, उपरोक्त पूर्णांक प्रोग्राम होने पर भी NP- हार्ड बना रहता हैwjwj divides wj+1wj+1 for all jj. And this is easily observed.
Example 1: let n=1n=1 and wpwp be powers of two. Because of constant two, the entire problem is solved in quadratic time, as your example shows. The weights are not random and therefore the calculation is solved efficiently.
Example 2: let wj+1wj+1 be defined as wj∗pwj∗p, where pp is the prime number corresponding to jj, such that p=2,j=1:p=3,j=2,p=5,j=3,p=7,j=4,...,P,Jp=2,j=1:p=3,j=2,p=5,j=3,p=7,j=4,...,P,J. This is applicable, as wjwj divides wj+1wj+1 for all jj. We get each wjwj is the product of all the primes up to jj. The values of the unit weights increase as such: 1,2,6,30,210,2310,30030,...1,2,6,30,210,2310,30030,.... Since there is a bound (pjpj ~ jlog(j)jlog(j), via the prime number theorem), as the quotients are all primes, we get the complexity NP-Intermediate.
Example 3: let wj+1wj+1 be defined as wj∗Rpwj∗Rp, where RpRp is a randomly chosen prime number from two to infinity, corresponding to jj. This is applicable to this problem, as wjwj divides wj+1wj+1 for all jj. We get the first 5 quotients (randomly falling from two to infinity), as 101,2657,7,3169,2101,2657,7,3169,2. We see that even at the 5th ball, the weight has eleven digits. Fortunately, the fifth quotient was two and not a prime in the order of 1010010100 or larger.
Example three above is what happens when wjwj is not bounded (random weights) by a polynomial corresponding to ii. The time complexity is exponential, NP-Hard. For some perspective, just add up all the weights, see if they fit. But there isn’t a solution to solving it significantly faster by making the weights divisible than trying each subset to see if it works. After a few dozen balls, you are still entering the realm of even the trillions of subsets or trillions of digits.