إعداد مشكلة Quapsack. تريد: قائمة بجميع الحزم الممكنة

StackOverflow https://stackoverflow.com/questions/3466560

سؤال

بدلاً من تحسين أي شيء ، أريد أن أدرج كل ما هو ممكن - بما في ذلك عبوات "غير مكتملة" من The Knapsack. بالطبع ، يمكنني أن أحلق جميع المجموعات الفرعية من مجموعة الكائنات واختيار تلك التي ترضي قيود الوزن (يمكن تحسينها عن طريق وضع حد أعلى على حجم المجموعات الفرعية للنظر من خلاله) ، لكنني أحب شيئًا أكثر فعالة.

شكرًا.

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

المحلول

أول فرز الأشياء الخاصة بك بالوزن. ثم حزم بشكل متكرر. إذا كان أصغر كائن الوزن الذي لم يتم النظر فيه بعد غير مناسب ، أو ليس لدينا كائنات متبقية ، ثم أضف Quandsack الحالي إلى قائمتنا وإرجاعنا ، وإلا إضافة الهاوية الحالية إلى قائمتنا لكل كائن في القائمة التي تناسبها وضعها في و حاول أن تحزم بقية الحراسة مع كائنات أثقل من الكائن الأخير الذي قمنا بتعبئته.

إذا تمكنا من حزم أكثر من عنصر واحد من نوع معين ، فاستبدل أقل من أقل من أو يساوي.

إذا كان لدينا كائنات متعددة من نفس الوزن ، نحتاج إلى الفرز أولاً حسب الوزن ، ثم ببعض الترتيب التعسفي ، واستخدام ذلك.

 PackKnapsack(knapsack, objects)
   add knapsack to list
   if objects is empty return
   if smallest object does not fit return
   for each object in order from smallest to largest
      if currentobject does not fit
         break
      PackKnapsack(knapsack + currentObject, objects heavier than current object)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top