2016-06-25 10 views
0

私は3つのバケットにソートする必要がある18のアイテムがある問題に取り組んでいます。アイテムの半分は赤、半分は青です。また、各アイテムは特定のサイズです。サイズは均一に分布していない(すなわち、18,20,24,18,19,26 ...)。これらのアイテムを以下のように3つのバケットに分散できるアルゴリズムが必要です。1)各バケットは6つのアイテムで終わる必要があります。 2)各バケツは3つの赤いアイテムと3つの青いアイテムで終わる必要があります。 3)(私が苦労している部分)各バケット内の6つのアイテムのサイズを平均した場合、他のバケットのアイテムの平均サイズにできるだけ近づける必要があります。バケットに均等にアイテムを配布する

私はコードを学習するだけで、プロジェクトの一部としてこの問題に取り組んでいます。しかし、私は2,3日間アルゴリズムのソートについて読んできましたが、手元に問題を解決するのに役立つ解決策は見つかりませんでした。私は非常に困惑しています。私は自分自身で解決策をとることを好むだろうが、正しい方向へのプッシュを大きく感謝するだろう。

ありがとうございます!ここで

+0

検索スペースはやや小さいようです。それを強引に強制するのはどうですか? – wildplasser

+0

@wildplasserブルートフォースは、 'n(= {(n!)^ 2})'〜 'O(10^12)'、 'n' = 18/2 = 9を取るでしょう。典型的な家庭用コンピュータです。 –

+0

@AnmolSinghJaggi:(6 * 4 * 4 * 7 * 7)*(5 * 5 * 4 * 4)の可能なパーティション(IMO、IANAM)をもたらす多くの対称性(6^5)があります。対称性を破ることは、再帰的なパーティション内の検索スペースを減らすための鍵にもなります。プラス:avarage-rule#3は剪定を助けることができます。 – wildplasser

答えて

1

が可能なアルゴリズムです:

は、ソート順で赤のアイテムがr1r2r3 ... r9とします。
ソート順の青いアイテムをb1,b2,b3 ... b9とします。
3つのバケットをB1,B2,B3とする。

B3B2r3r7B1r2r8r1r9を置きます。
同様に、B3b1b9B1で、b2b8B2で、b3b7を置きます。

今、私たちはr4r5r6b4b5b6が残されています。

B3B2r6b4B1r5b5r4b6を置きます。

関連する問題