私はこの問題に対して合理的なアルゴリズムを考え出そうとしています:
ボールがたくさんあるとしましょう。各ボールには少なくとも 1 つの色がありますが、多色にすることもできます。各ボールには、それに関連付けられた重量と値があります。ワンカラーのボックスもたくさんあります。各ボックスには、保持できるボールの最大数があります。目標は、合計の重みWを維持しながら、ボックス内の値の合計を最大化することです。唯一のルールは次のとおりです。
ボールを箱に入れるには、少なくとも箱の色がなければなりません。
(たとえば、青と緑のボールを青のボックスまたは緑のボックスに配置できますが、赤のボックスには配置できません。)
私はいくつかの調査を行いましたが、これはナップザックの問題に似ており、ハンガリーのアルゴリズムで解決できるようにも見えますが、どちらの問題にも還元できないようです。
この種の問題を多項式時間で解けるようにする動的計画法アルゴリズムがあるのか、それとも単なる巡回セールスマンの問題であるかに興味があります。色数が最大で X であることを知っていれば役に立ちますか? どんな助けでも大歓迎です。それが助けになるなら、変数名で問題を少し形式化することもできます。ありがとう!
簡単な例を次に示します。
最大重量: 5
ボール:
赤いボール 1 個 - (値 = 5、重み = 1)
1 個の青いボール - (値 = 3、重み = 1)
緑/赤/青のボール 1 個 - (値 = 2、重み = 4)
緑/青のボール 1 個 - (値 = 4、重み = 1)
赤/青のボール 1 個 - (値 = 1、重み = 1)
ボックス:
赤 1 個 (ボール 1 個を保持)
青1個(ボール2個入り)
グリーン 1個(ボール1個入り)
最適解:
赤い箱の赤いボール
青い箱に入った青いボールと赤/青のボール
緑の箱に入った緑/青のボール
合計値: 13 (5 + 3 + 1 + 4)
総重量: 4 (1 + 1 + 1 + 1)
注: 緑/赤/青のボールは赤/青のボールよりも価値がありましたが、その重さから限界を超えていたでしょう。
編集:
1 つの明確なポイント: 同じ色の組み合わせのボールは、必ずしも同じ重量と値を持つとは限りません。たとえば、値が 3 で重みが 1 の赤いボールと、値が 2 で重みが 5 の別の赤いボールを作成できます。
編集2:
動的計画法アルゴリズムを考え出すのに役立つ場合は、整数の重みと値を想定できます。