سؤال

مشكلة neapsack هي NP-Hard ويمكن صياغتها على النحو التالي: $$ \ ادبت {align} & \ text {maximize} \ sum_ {i= 1} ^ n v_i x_i، \ tag {p1} \\ & \ text {somvice to} \ sum_ {i= 1} ^ n w_i x_i \ leq w، \\ & \ text {and} x_i \ in \ {0،1 \}. \ end {align} $

ماذا لو $ v_i= i $ ؟هل ما زال من الصعب NP؟

$$ \ ادبت {align} & \ text {maximize} \ sum_ {i= 1} ^ n ix_i، \ tag {p2} \\ & \ text {somvice to} \ sum_ {i= 1} ^ n w_i x_i \ leq w، \\ & \ text {and} x_i \ in \ {0،1 \}. \ end {align} $

أحاول تقليل (P1) إلى (P2).بالنظر إلى مثيل (P1)، أقوم بإنشاء نفس عدد العناصر، نفس الأوزان.الآن، يجب أن ربط الحلول ل (P1) و (P2).

هل كانت مفيدة؟

المحلول

لا، هذه المشكلة هي في $ \ mathbf {p} $ . النقطة الرئيسية هي أن مجموع جميع القيم هو $ 1 + 2 \ Ldots + n=frac {n (n + 1)} {2}=mathcal {o} ( n ^ 2) $ ، وهو متعدد الحدود في حجم الإدخال. بدون تقييد إضافي من $ v_i= i $ ، فإن مجموع جميع القيم يمكن أن يكون أسييا في حجم الإدخال، حيث يتم تمثيل القيم في ثنائي في المدخلات.

حتى نتمكن من تحديد DP DP [i] [v] [v] $ ، حيث $ 1 \ leq i \ leq n $ و $ 0 \ leq v \ leq \ frac {n (n + 1)} {2} $ ، ليكون الحد الأدنى للوزن اللازمة للحصول على قيمة من الأقل $ v $ ، باستخدام فقط $ i $ $ العناصر. إذا تعذر تحقيق ذلك، فسنقوم بتعيين DP $ [i] [v]= inf $ . الجواب الأخير هو الحد الأقصى $ v بحيث $ dp [n] [v] \ leq W $ .

يمكن حساب قيم DP على النحو التالي:

DP $ [i] [v]=min (dp [i-1] [v]، w_i + dp [i-1] [v - v_i]) $ .

المصطلح الأول يعتبر إمكانية $ i ^ {th} $ غير المختارة، والشرطة الثانية هي احتمال أن يتم اختياره. < / ص>

لذلك يمكن حل المشكلة بأكملها في $ \ mathcal {o} (n ^ 3) $ الوقت و $ \ mathcal {o} (n ^ 3) $ الفضاء، والتي يمكن تخفيضها إلى $ \ mathcal {o} (n ^ 2) $ الفضاء مجرد إعادة استخدام صفيفتين من الحجم $ \ frac {n (n + 1)} {2} + 1 $ .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى cs.stackexchange
scroll top